frac32buffer in0
frac32buffer in1
frac32buffer in2
frac32buffer in3
frac32buffer out0
frac32buffer out1
frac32buffer out2
frac32buffer out3
// ++++
// +-+-
// ++--
// +--+
int32_t in01 = (inlet_in0 + inlet_in1) >> 1; // (in0 + in1) / 2
int32_t in23 = (inlet_in2 + inlet_in3) >> 1; // (in2 + in3) / 2
outlet_out0 = in01 + in23; // (in0 + in1 + in2 + in3) / 2
outlet_out2 = in01 - in23; // (in0 + in1 - in2 - in3) / 2
in01 -= inlet_in1; // (in0 - in1) / 2
in23 -= inlet_in3; // (in2 - in3) / 2
outlet_out1 = in01 + in23; // (in0 - in1 + in2 - in3) / 2
outlet_out3 = in01 - in23; // (in0 - in1 - in2 + in3) / 2