|
@@ -327,61 +327,60 @@ TYPE UHUGEINT = HUGEINT;
|
|
|
|
|
|
PROCEDURE DivS8*(left, right: SHORTINT): SHORTINT;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModS32(left, right, result, dummy); RETURN SHORTINT(result)
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS32(left, right, result, dummy); RETURN SHORTINT(result)
|
|
|
END DivS8;
|
|
|
|
|
|
PROCEDURE DivS16*(left, right: INTEGER): INTEGER;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModS32(left, right, result, dummy); RETURN INTEGER(result)
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS32(left, right, result, dummy); RETURN INTEGER(result)
|
|
|
END DivS16;
|
|
|
|
|
|
PROCEDURE DivS32*(left, right: LONGINT): LONGINT;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModS32(left, right, result, dummy); RETURN result
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS32(left, right, result, dummy); RETURN result
|
|
|
END DivS32;
|
|
|
|
|
|
PROCEDURE DivU32*(left, right: ULONGINT): ULONGINT;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModU32(left, right, result, dummy); RETURN result
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModU32(left, right, result, dummy); RETURN result
|
|
|
END DivU32;
|
|
|
|
|
|
PROCEDURE DivS64*(left, right: HUGEINT): HUGEINT;
|
|
|
VAR result, dummy: HUGEINT;
|
|
|
-BEGIN
|
|
|
- DivModS64(left, right, result, dummy); RETURN result
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS64(left, right, result, dummy); RETURN result
|
|
|
END DivS64;
|
|
|
|
|
|
PROCEDURE ModS8*(left, right: SHORTINT): SHORTINT;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModS32(left, right, dummy, result); RETURN SHORTINT(result)
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS32(left, right, dummy, result); RETURN SHORTINT(result)
|
|
|
END ModS8;
|
|
|
|
|
|
PROCEDURE ModS16*(left, right: INTEGER): INTEGER;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModS32(left, right, dummy, result); RETURN INTEGER(result)
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS32(left, right, dummy, result); RETURN INTEGER(result)
|
|
|
END ModS16;
|
|
|
|
|
|
PROCEDURE ModS32*(left, right: LONGINT): LONGINT;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModS32(left, right, dummy, result); RETURN result
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModS32(left, right, dummy, result); RETURN result
|
|
|
END ModS32;
|
|
|
|
|
|
PROCEDURE ModU32*(left, right: ULONGINT): ULONGINT;
|
|
|
VAR result, dummy: LONGINT;
|
|
|
-BEGIN DivModU32(left, right, dummy, result); RETURN result
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED} DivModU32(left, right, dummy, result); RETURN result
|
|
|
END ModU32;
|
|
|
|
|
|
PROCEDURE ModS64*(left, right: HUGEINT): HUGEINT;
|
|
|
VAR result, dummy: HUGEINT;
|
|
|
-BEGIN
|
|
|
- DivModS64(left, right, dummy, result); RETURN result
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED}
|
|
|
+ DivModS64(left, right, dummy, result); RETURN result
|
|
|
END ModS64;
|
|
|
|
|
|
(* signed division and modulus
|
|
|
- note: this implements the mathematical definition of DIV and MOD in contrast to the symmetric one
|
|
|
*)
|
|
|
PROCEDURE DivModS32(dividend, divisor: LONGINT; VAR quotient, remainder: LONGINT);
|
|
|
-BEGIN
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED}
|
|
|
ASSERT(divisor > 0);
|
|
|
IF dividend >= 0 THEN
|
|
|
DivModU32(dividend, divisor, quotient, remainder)
|
|
@@ -438,7 +437,7 @@ END DivModU32;
|
|
|
- note: this implements the mathematical definition of DIV and MOD in contrast to the symmetric one
|
|
|
*)
|
|
|
PROCEDURE DivModS64*(dividend, divisor: HUGEINT; VAR quotient, remainder: HUGEINT);
|
|
|
-BEGIN
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED}
|
|
|
ASSERT(divisor > 0);
|
|
|
IF dividend >= 0 THEN
|
|
|
DivModU64(dividend, divisor, quotient, remainder)
|
|
@@ -478,7 +477,7 @@ END Clz64;
|
|
|
*)
|
|
|
PROCEDURE DivModU64*(dividend, divisor: UHUGEINT; VAR quotient, remainder: UHUGEINT);
|
|
|
VAR m: LONGINT;
|
|
|
-BEGIN
|
|
|
+BEGIN {UNCOOPERATIVE, UNCHECKED}
|
|
|
quotient := 0;
|
|
|
|
|
|
IF dividend = 0 THEN remainder := 0; RETURN; END;
|