<> <> <<>> DIRECTORY Real USING [SqRt], Vector3; Vector3Impl: CEDAR PROGRAM IMPORTS Real, Vector3 EXPORTS Vector3 ~ BEGIN OPEN Vector3; Add: PUBLIC PROC[a, b: VEC] RETURNS[VEC] ~ { RETURN[InlineAdd[a, b]] }; <> Sub: PUBLIC PROC[a, b: VEC] RETURNS[VEC] ~ { RETURN[InlineSub[a, b]] }; <> Neg: PUBLIC PROC[a: VEC] RETURNS[VEC] ~ { RETURN[InlineNeg[a]] }; <> Mul: PUBLIC PROC[a: VEC, s: REAL] RETURNS[VEC] ~ { RETURN[InlineMul[a, s]] }; <> Div: PUBLIC PROC[a: VEC, s: REAL] RETURNS[VEC] ~ { RETURN[InlineDiv[a, s]] }; <> SqrMag: PUBLIC PROC[a: VEC] RETURNS[REAL] ~ { RETURN[InlineSqrMag[a]] }; <> Mag: PUBLIC PROC[a: VEC] RETURNS[REAL] ~ { RETURN[InlineMag[a]] }; <> <<>> Dot: PUBLIC PROC[a, b: VEC] RETURNS[REAL] ~ { RETURN[InlineDot[a, b]] }; <> Cross: PUBLIC PROC[a, b: VEC] RETURNS[VEC] ~ { ERROR }; <> Unit: PUBLIC PROC[a: VEC] RETURNS[VEC] ~ { RETURN[InlineUnit[a]] }; <> END.