|
@@ -0,0 +1,151 @@
|
|
|
|
+MODULE Shortreal;
|
|
|
|
+ IMPORT SYSTEM, FoxArrayBase;
|
|
|
|
+CONST
|
|
|
|
+ MinValue = 64511;
|
|
|
|
+ MaxValue = 31743;
|
|
|
|
+TYPE
|
|
|
|
+ Real = REAL;
|
|
|
|
+
|
|
|
|
+ Vector4* = ARRAY [4] OF SHORTREAL;
|
|
|
|
+
|
|
|
|
+ Matrix4* = ARRAY [4, 4] OF SHORTREAL;
|
|
|
|
+
|
|
|
|
+ SHORTREAL* = RECORD
|
|
|
|
+ value*: UNSIGNED16;
|
|
|
|
+
|
|
|
|
+ PROCEDURE ^ Sqrt*(): SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Sin*(): SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Cos*(): SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Arctan*(): SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Ln*(): SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Exp*(): SHORTREAL;
|
|
|
|
+ END
|
|
|
|
+ ;
|
|
|
|
+VAR
|
|
|
|
+ eps-: SHORTREAL;
|
|
|
|
+
|
|
|
|
+ OPERATOR ^ "SHORT"-(x: Real): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "LONG"-(x: SHORTREAL): REAL;
|
|
|
|
+ OPERATOR ^ ":="-(VAR y: REAL; x: SHORTREAL);
|
|
|
|
+ OPERATOR ^ "+"-(x, y: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "-"-(x, y: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "*"-(x, y: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "/"-(x, y: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "-"-(x: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "ABS"-(x: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "MIN"-(x, y: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "MAX"-(x, y: SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "="-(x, y: SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ "#"-(x, y: SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ "<"-(x, y: SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ "<="-(x, y: SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ ">"-(x, y: SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ ">="-(x, y: SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ ":="-(VAR y: ARRAY [?] OF SHORTREAL; x: SHORTREAL);
|
|
|
|
+ OPERATOR ^ "+"-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "+"-(CONST x: ARRAY [?] OF SHORTREAL; y: SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "+"-(x: SHORTREAL; CONST y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "-"-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "-"-(CONST x: ARRAY [?] OF SHORTREAL; y: SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "-"-(x: SHORTREAL; CONST y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ ".*"-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ ".*"-(CONST x: ARRAY [?] OF SHORTREAL; y: SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ ".*"-(x: SHORTREAL; CONST y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "*"-(CONST x: ARRAY [?] OF SHORTREAL; y: SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "*"-(x: SHORTREAL; CONST y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "./"-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "./"-(CONST x: ARRAY [?] OF SHORTREAL; y: SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "./"-(x: SHORTREAL; CONST y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "/"-(CONST x: ARRAY [?] OF SHORTREAL; y: SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "+*"-(CONST x, y: ARRAY [?] OF SHORTREAL): REAL;
|
|
|
|
+ OPERATOR ^ "*"-(CONST x, y: ARRAY [*, *] OF SHORTREAL): ARRAY [*, *] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "="-(CONST x, y: ARRAY [?] OF SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ "<"-(CONST x, y: ARRAY [?] OF SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ "<="-(CONST x, y: ARRAY [?] OF SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ ">"-(CONST x, y: ARRAY [?] OF SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ ">="-(CONST x, y: ARRAY [?] OF SHORTREAL): BOOLEAN;
|
|
|
|
+ OPERATOR ^ ".="-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF BOOLEAN;
|
|
|
|
+ OPERATOR ^ ".<"-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF BOOLEAN;
|
|
|
|
+ OPERATOR ^ ".<="-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF BOOLEAN;
|
|
|
|
+ OPERATOR ^ ".>"-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF BOOLEAN;
|
|
|
|
+ OPERATOR ^ ".>="-(CONST x, y: ARRAY [?] OF SHORTREAL): ARRAY [?] OF BOOLEAN;
|
|
|
|
+ OPERATOR ^ "+"-(CONST x, y: Vector4): Vector4;
|
|
|
|
+ OPERATOR ^ "+"-(CONST x: Vector4; y: SHORTREAL): Vector4;
|
|
|
|
+ OPERATOR ^ "-"-(CONST x, y: Vector4): Vector4;
|
|
|
|
+ OPERATOR ^ "-"-(CONST x: Vector4; y: SHORTREAL): Vector4;
|
|
|
|
+ OPERATOR ^ ".*"-(CONST x, y: Vector4): Vector4;
|
|
|
|
+ OPERATOR ^ ".*"-(CONST x: Vector4; y: SHORTREAL): Vector4;
|
|
|
|
+ OPERATOR ^ "./"-(CONST x, y: Vector4): Vector4;
|
|
|
|
+ OPERATOR ^ "./"-(CONST x: Vector4; y: SHORTREAL): Vector4;
|
|
|
|
+ OPERATOR ^ "+*"-(CONST x, y: Vector4): REAL;
|
|
|
|
+ OPERATOR ^ "SUM"-(CONST x: Vector4): REAL;
|
|
|
|
+ OPERATOR ^ "MAX"-(CONST x: Vector4): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "MIN"-(CONST x: Vector4): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "ABS"-(CONST x: Vector4): Vector4;
|
|
|
|
+ OPERATOR ^ "-"-(CONST x: Vector4): Vector4;
|
|
|
|
+ OPERATOR ^ "SUM"-(CONST x: ARRAY [?] OF SHORTREAL): REAL;
|
|
|
|
+ OPERATOR ^ "MAX"-(CONST x: ARRAY [?] OF SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "MIN"-(CONST x: ARRAY [?] OF SHORTREAL): SHORTREAL;
|
|
|
|
+ OPERATOR ^ "ABS"-(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "-"-(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Short*(CONST x: ARRAY [?] OF Real): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ OPERATOR ^ "LONG"-(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF REAL;
|
|
|
|
+ PROCEDURE ^ Sqrt*(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Sin*(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Cos*(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Arctan*(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Ln*(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Exp*(CONST x: ARRAY [?] OF SHORTREAL): ARRAY [?] OF SHORTREAL;
|
|
|
|
+ PROCEDURE ^ Sqrt0(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Sin0(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Cos0(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Arctan0(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Ln0(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Exp0(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Abs(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Negate(x: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Add(x, y: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Sub(x, y: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Mul(x, y: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Div(x, y: UNSIGNED16): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ Equal(x, y: UNSIGNED16): BOOLEAN;
|
|
|
|
+ PROCEDURE ^ LessThan(x, y: UNSIGNED16): BOOLEAN;
|
|
|
|
+ PROCEDURE ^ GreaterThan(x, y: UNSIGNED16): BOOLEAN;
|
|
|
|
+ PROCEDURE ^ AssignScalarLoop(laddr, daddr: ADDRESS; dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ SumLoop(laddr, daddr: ADDRESS; linc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ MaxLoop(laddr, daddr: ADDRESS; linc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ MinLoop(laddr, daddr: ADDRESS; linc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ AbsLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ NegateLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ ShortLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ LongLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ AddLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ AddScalarLoop(laddr, raddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ SubLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ ScalarSubLoop(laddr, raddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ MulLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ MulScalarLoop(laddr, raddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ DivLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ DivScalarLoop(laddr, raddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ ScalarDivLoop(laddr, raddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ InnerProdLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ MatMulLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ EqualLoop(laddr, raddr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
|
|
|
|
+ PROCEDURE ^ LessThanLoop(laddr, raddr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
|
|
|
|
+ PROCEDURE ^ GreaterThanLoop(laddr, raddr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
|
|
|
|
+ PROCEDURE ^ EwEqualLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ EwLessThanLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ EwLessOrEqualThanLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ EwGreaterThanLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ EwGreaterOrEqualThanLoop(laddr, raddr, daddr: ADDRESS; linc, rinc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ SqrtLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ SinLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ CosLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ ArctanLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ LnLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ ExpLoop(laddr, daddr: ADDRESS; linc, dinc, len: SIZE);
|
|
|
|
+ PROCEDURE ^ ShortrealToReal(x: UNSIGNED16): REAL;
|
|
|
|
+ PROCEDURE ^ RealToShortreal(x: REAL): UNSIGNED16;
|
|
|
|
+ PROCEDURE ^ InitMod;
|
|
|
|
+BEGIN
|
|
|
|
+END Shortreal.
|