<> <> DIRECTORY Rope, Vector2 USING [VEC], Basics, IO, AlgebraClasses; Complexes: CEDAR DEFINITIONS = BEGIN OPEN AC: AlgebraClasses; <> Complex: TYPE = AC.Object; ComplexData: TYPE = REF Vector2.VEC; Complexes: AC.Object; <> PrintName: AC.ToRopeOp; ShortPrintName: AC.ToRopeOp; Characteristic: AC.StructureRankOp; <> Recast: AC.BinaryOp; CanRecast: AC.BinaryPredicate; LegalFirstChar: AC.LegalFirstCharOp; Read: AC.ReadOp; FromRope: AC.FromRopeOp; ToRope: AC.ToRopeOp; Write: AC.WriteOp; FromPairREAL: PROC [realPart, imagPart: REAL] RETURNS [Complex]; ToPairREAL: PROC [in: Complex] RETURNS [realPart, imagPart: REAL]; <> Zero: AC.NullaryOp; One: AC.NullaryOp; Add: AC.BinaryOp; Negate: AC.UnaryOp; Subtract: AC.BinaryOp; Multiply: AC.BinaryOp; Conjugate: AC.UnaryOp; ModulusSquared: PROCEDURE [a: Complex] RETURNS [REAL]; Modulus: AC.UnaryOp; Power: AC.BinaryOp; Invert: AC.UnaryOp; Divide: AC.BinaryOp; AlmostEqual: PROCEDURE [a: Complex, b: Complex, mag:[-126..0] _ -20] RETURNS [BOOLEAN]; FromPolar: PROCEDURE [r: REAL, radians: REAL] RETURNS [Complex]; Arg: PROCEDURE [a: Complex] RETURNS [REAL]; <> Exp: PROCEDURE [a: Complex] RETURNS [Complex]; <> Ln: PROCEDURE [a: Complex] RETURNS [Complex]; <> Sqr: PROCEDURE [a: Complex] RETURNS [Complex]; -- like Mul[a,a] SqRt: PROCEDURE [a: Complex] RETURNS [Complex]; -- complex square root <> Equal: AC.BinaryPredicate; <<>> END.