signature ComplexSig = sig type complex; val descartes : {real : real, imag : real} -> complex and argand : {modulus : real, argument : real} -> complex and ++ : complex * complex -> complex and -- : complex * complex -> complex and ** : complex * complex -> complex and // : complex * complex -> complex and X : real * complex -> complex and == : complex * complex -> bool and ~~ : complex -> complex and modulus : complex -> real and argument: complex -> real and realpart: complex -> real and imagpart: complex -> real end;