anchor.diff:     
   module mkFPCMult(FPCMult)
     provisos(Bits#(CoeffData, a__),
  -     Bits#(ProductData, b__));
  +     Bits#(ProductData, b__),
  +     Bits#(MulData, c__));
      /* input registers */
      FIFOF#(CoeffData) ain <- mkPipelineFIFOF();
      FIFOF#(Complex#(Signal)) xin <- mkPipelineFIFOF();
  
positive.code: 
  typedef struct {
  		Product arxr;
  		Product arxr;
  		Product arxr;
  		Product arxr;
  		Bit#(1) filterPhase;
  		} MulData;
  
  
negative.code: 
     rule work;
        /* compute multiplies */
        Product arxr = fxptMult(ain.first.a.rel, xin.first.rel);
        Product aixi = fxptMult(ain.first.a.img, xin.first.img);
        Product arxi = fxptMult(ain.first.a.rel, xin.first.img);
        Product aixr = fxptMult(ain.first.a.img, xin.first.rel);
        ax <= MulData{arxr: arxr, aixi: aixi, arxi: arxi, aixr: aixr,
  	 filterPhase: ain.first.filterPhase};
        ain.deq();
        xin.deq();
        /* combine into outputs */
        yout.enq(ProductData{y: Complex{rel: arxr - aixi, img: arxi + aixr}, filterPhase: muloutphase});
     endrule
  