DIRECTORY Real USING [SqRt], Vector USING [Vec]; Complex: DEFINITIONS IMPORTS Real = BEGIN Vec: TYPE = Vector.Vec; Add: PROCEDURE [a: Vec, b: Vec] RETURNS [Vec] = INLINE {RETURN[[a.x+b.x,a.y+b.y]]}; -- same as vector sum Sub: PROCEDURE [a: Vec, b: Vec] RETURNS [Vec] = INLINE {RETURN[[a.x-b.x,a.y-b.y]]}; -- same as vector difference Neg: PROCEDURE [a: Vec] RETURNS [Vec] = INLINE {RETURN[[-a.x,-a.y]]}; -- same as vector complement Mul: PROCEDURE [a: Vec, b: Vec] RETURNS [Vec]; -- complex product Div: PROCEDURE [a: Vec, b: Vec] RETURNS [Vec]; -- complex quotient Conjugate: PROCEDURE [a: Vec] RETURNS [Vec] = INLINE {RETURN[[a.x,-a.y]]}; -- complex conjugate AlmostEqual: PROCEDURE [a: Vec, b: Vec, mag:[-126..0] _ -20] RETURNS [BOOLEAN]; FromPolar: PROCEDURE [r: REAL, radians: REAL] RETURNS [Vec]; Abs: PROCEDURE [a: Vec] RETURNS [REAL] = INLINE {RETURN[Real.SqRt[a.x*a.x+a.y*a.y]]}; -- same as Vector.Mag SqrAbs: PROCEDURE [a: Vec] RETURNS [REAL] = INLINE {RETURN[a.x*a.x+a.y*a.y]}; -- good for checking tolerance Arg: PROCEDURE [a: Vec] RETURNS [REAL]; Exp: PROCEDURE [a: Vec] RETURNS [Vec]; Ln: PROCEDURE [a: Vec] RETURNS [Vec]; Sqr: PROCEDURE [a: Vec] RETURNS [Vec]; -- like Mul[a,a] SqRt: PROCEDURE [a: Vec] RETURNS [Vec]; -- complex square root END. ìComplex.mesa Last edited by Michael Plass, January 4, 1984 11:53 am Written by Michael Plass, 28-Sep-81 Vector operations returns the angle from the x axis to a, in radians. complex exponential function complex natural logarithm ÊZ˜Jšœ ™ Jšœ6™6šœ#™#J˜—šÏk ˜ Jšœœ˜Jšœœ˜J˜—Jšœ œœ˜#Jš˜šœœ˜J˜—šœ™J˜—šÏnœ œœ ˜6JšœœÏc˜3J˜—šžœ œœ ˜6JšœœŸ˜:J˜—šžœ œ œ ˜.JšœœŸ˜4J˜—šžœ œœŸ˜AJ˜—šžœ œœŸ˜BJ˜—šž œ œ œ ˜4JšœœŸ˜+J˜—Jšž œ œ'œœ˜OJ˜š ž œ œœ œœ˜J˜—Jšœ˜—…—L