-------------------------------------- -- ( xr , xi , yr , yi , )c.plus -- 0>real -- 1>imaginary -------------------------------------- function c.plus -cpls xr xi yr yi begin 0>xr 1>xi 2>yr 3>yi xr +yr ->arg0 xi +yi ->arg1 return ------------------------------------- -- ( xr , xi , yr , yi , )c.times -- 0>real -- 1>imaginary ------------------------------------- function c.times -ctim xr xi yr yi p1 p2 begin 0>xr 1>xi 2>yr 3>yi ( xi , yi , )c.rmul ->p1 ( xr , yr , )c.rmul -p1 ->p2 ( xr , yi , )c.rmul ->p1 ( xi , yr , )c.rmul +p1 ->arg1 p2 ->arg0 return load from(complex.mpo) *c.rmul -------------------------------------- -- ( x , y , )norm ->square of norm ov x+iy -------------------------------------- function c.norm -cnrm xi xr p begin 0>xr 1>xi ( xr , xr , )c.rmul ->p ( xi , xi , )c.rmul +p return load from(complex.myo) *c.rmul -------------------------------------- -- ( x , y , )conj -- 0>real of conjugate -- 1>imaginary of conjugate -------------------------------------- function c.conj -ccnj begin arg1 - ->arg1 return -------------------------------------- -- Internal function multiplies assuming -- that the binary point is after the 16th bit -------------------------------------- function c.rmul -crmul a b begin 0>a 1>b ( a >>8 , b >>8 , )mult return load from (std.mpo) *mult