GENERIC INTERFACEComplexTrans (R, RT, C);
Arithmetic for Modula-3, see doc for detailsAbstract: Transcendental functions of complex numbers.
FROM Arithmetic IMPORT Error;
TYPE T = C.T;
CONST
Zero = C.Zero;
One = C.One;
I = C.I;
MinusOne = C.MinusOne;
Half = C.Half;
SqRtTwo = T{RT.SqRtTwo, R.Zero};
PROCEDURE Arg (READONLY x: T; ): R.T; (* polar angle*)
PROCEDURE Abs (READONLY x: T; ): R.T; (* magnitude*)
PROCEDURE AbsSqr (READONLY x: T; ): R.T; (* square of the magnitude*)
PROCEDURE Norm1 (READONLY x: T; ): R.T;
PROCEDURE NormInf (READONLY x: T; ): R.T;
CONST Norm2 = Abs;
PROCEDURE SqRt (READONLY x: T; ): T; (* square root of x with x.re>=0*)
PROCEDURE PowR (READONLY x: T; y: R.T; ): T; (* x^y*)
NOTE: Also for roots, e.g., cube root: y=1/3
PROCEDURE Pow (x, y: T; ): T; (* x^y*)transcendentals
PROCEDURE Exp (READONLY x: T; ): T; (* e^x *) PROCEDURE Ln (READONLY x: T; ): T; (* ln(x) *) PROCEDURE ExpI (x: R.T; ): T; (* e^(i*x) *)for trig and hyperbolics, must have |x|<=18
PROCEDURE Cos (READONLY x: T; ): T RAISES {Error}; (* cos(x) *)
PROCEDURE Sin (READONLY x: T; ): T RAISES {Error}; (* sin(x) *)
PROCEDURE Tan (READONLY x: T; ): T RAISES {Error}; (* tan(x) *)
PROCEDURE CosH (READONLY x: T; ): T RAISES {Error}; (* cosh(x) *)
PROCEDURE SinH (READONLY x: T; ): T RAISES {Error}; (* sinh(x) *)
PROCEDURE TanH (READONLY x: T; ): T RAISES {Error}; (* tanh(x) *)
for inverse trigonometrics
PROCEDURE ArcCos (READONLY x: T; ): T RAISES {Error}; (* arccos(x) *)
PROCEDURE ArcSin (READONLY x: T; ): T RAISES {Error}; (* arcsin(x) *)
PROCEDURE ArcTan (READONLY x: T; ): T RAISES {Error}; (* arctan(x) *)
END ComplexTrans.