From ba91d65da984ba19dff664422ca48b2a179ea4b9 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Wed, 28 Jul 2010 08:21:13 +0000 Subject: * algebra/integer.spad.pamphlet (Integer): Use builtin functions %irem and %iquo. * algebra/si.spad.pamphlet (SingleInteger): Likewise. --- src/algebra/integer.spad.pamphlet | 6 ++++-- src/algebra/si.spad.pamphlet | 16 +++++++++------- src/algebra/strap/INT.lsp | 20 ++++++++++---------- src/algebra/strap/SINT.lsp | 15 +++++++-------- 4 files changed, 30 insertions(+), 27 deletions(-) (limited to 'src/algebra') diff --git a/src/algebra/integer.spad.pamphlet b/src/algebra/integer.spad.pamphlet index 9685c43d..1b67fd0e 100644 --- a/src/algebra/integer.spad.pamphlet +++ b/src/algebra/integer.spad.pamphlet @@ -91,6 +91,8 @@ Integer: Join(IntegerNumberSystem, ConvertibleTo String, OpenMath) with import %iadd: (%,%) -> % from Foreign Builtin import %isub: (%,%) -> % from Foreign Builtin import %imul: (%,%) -> % from Foreign Builtin + import %irem: (%,%) -> % from Foreign Builtin + import %iquo: (%,%) -> % from Foreign Builtin import %imax: (%,%) -> % from Foreign Builtin import %imin: (%,%) -> % from Foreign Builtin import %igcd: (%,%) -> % from Foreign Builtin @@ -210,8 +212,8 @@ Integer: Join(IntegerNumberSystem, ConvertibleTo String, OpenMath) with max(x,y) == %imax(x,y) min(x,y) == %imin(x,y) divide(x,y) == DIVIDE2(x,y)$Lisp - x quo y == QUOTIENT2(x,y)$Lisp - x rem y == REMAINDER2(x,y)$Lisp + x quo y == %iquo(x,y) + x rem y == %irem(x,y) shift(x, y) == ASH(x,y)$Lisp recip(x) == if one? x or x=-1 then x else "failed" gcd(x,y) == %igcd(x,y) diff --git a/src/algebra/si.spad.pamphlet b/src/algebra/si.spad.pamphlet index 98fe1168..6a7ef5a3 100644 --- a/src/algebra/si.spad.pamphlet +++ b/src/algebra/si.spad.pamphlet @@ -181,9 +181,9 @@ IntegerNumberSystem(): Category == -- Lisp dependencies --- EQ, ABSVAL, TIMES, INTEGER-LENGTH, HASHEQ, REMAINDER +-- EQ, ABSVAL, TIMES, INTEGER-LENGTH, HASHEQ, -- QSLESSP, QSGREATERP, QSADD1, QSSUB1, QSMINUS, QSPLUS, QSDIFFERENCE --- QSTIMES, QSREMAINDER, QSODDP, QSZEROP, QSMAX, QSMIN, QSNOT, QSAND +-- QSTIMES,, QSODDP, QSZEROP, QSMAX, QSMIN, QSNOT, QSAND -- QSOR, QSXOR, QSLEFTSHIFT, QSADDMOD, QSDIFMOD, QSMULTMOD @@ -215,6 +215,8 @@ SingleInteger(): Join(IntegerNumberSystem,OrderedFinite,BooleanLogic,Logic,OpenM import %iadd: (%,%) -> % from Foreign Builtin import %isub: (%,%) -> % from Foreign Builtin import %imul: (%,%) -> % from Foreign Builtin + import %irem: (%,%) -> % from Foreign Builtin + import %iquo: (%,%) -> % from Foreign Builtin import %ineg: % -> % from Foreign Builtin import %iabs: % -> % from Foreign Builtin import %imax: (%,%) -> % from Foreign Builtin @@ -312,8 +314,8 @@ SingleInteger(): Join(IntegerNumberSystem,OrderedFinite,BooleanLogic,Logic,OpenM x:% * y:% == %imul(x,y) x:% ** n:NonNegativeInteger == (%ipow(x, n)$Foreign(Builtin) pretend Integer)::% - x quo y == QSQUOTIENT(x,y)$Lisp - x rem y == QSREMAINDER(x,y)$Lisp + x quo y == %iquo(x,y) + x rem y == %irem(x,y) divide(x, y) == CONS(QSQUOTIENT(x,y)$Lisp,QSREMAINDER(x,y)$Lisp)$Lisp gcd(x,y) == %igcd(x,y) abs(x) == %iabs x @@ -339,7 +341,7 @@ SingleInteger(): Join(IntegerNumberSystem,OrderedFinite,BooleanLogic,Logic,OpenM [m pretend Matrix(Integer), v pretend Vector(Integer)] positiveRemainder(x,n) == - r := QSREMAINDER(x,n)$Lisp + r := %irem(x,n) negative? r => negative? n => x - n r + n @@ -348,8 +350,8 @@ SingleInteger(): Join(IntegerNumberSystem,OrderedFinite,BooleanLogic,Logic,OpenM coerce(x:Integer):% == per x random() == - seed := REMAINDER(TIMES(MULTIPLIER,seed)$Lisp,MODULUS)$Lisp - REMAINDER(seed,BASE)$Lisp + seed := TIMES(MULTIPLIER,seed)$Lisp rem MODULUS + seed rem BASE random(n) == RANDOM(n)$Lisp diff --git a/src/algebra/strap/INT.lsp b/src/algebra/strap/INT.lsp index 2f9194a2..5ef3c73c 100644 --- a/src/algebra/strap/INT.lsp +++ b/src/algebra/strap/INT.lsp @@ -212,12 +212,12 @@ (DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|) |INT;quo;3$;49|)) -(PUT '|INT;quo;3$;49| '|SPADreplace| 'QUOTIENT2) +(PUT '|INT;quo;3$;49| '|SPADreplace| '|%iquo|) (DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|) |INT;rem;3$;50|)) -(PUT '|INT;rem;3$;50| '|SPADreplace| 'REMAINDER2) +(PUT '|INT;rem;3$;50| '|SPADreplace| '|%irem|) (DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|) |INT;shift;3$;51|)) @@ -264,6 +264,9 @@ (PUT '|INT;negative?;$B;15| '|SPADreplace| '(XLAM (|x|) (|%ilt| |x| 0))) +(PUT '|INT;mulmod;4$;22| '|SPADreplace| + '(XLAM (|a| |b| |p|) (|%irem| (|%imul| |a| |b|) |p|))) + (PUT '|INT;unitCanonical;2$;55| '|SPADreplace| '|%iabs|) (DEFUN |INT;writeOMInt| (|dev| |x| $) @@ -348,7 +351,8 @@ (LET ((|c| (- |a| |b|))) (COND ((MINUSP |c|) (+ |c| |p|)) (T |c|)))) (DEFUN |INT;mulmod;4$;22| (|a| |b| |p| $) - (REMAINDER2 (* |a| |b|) |p|)) + (DECLARE (IGNORE $)) + (REM (* |a| |b|) |p|)) (DEFUN |INT;convert;$F;23| (|x| $) (SPADCALL |x| (|getShellEntry| $ 53))) @@ -374,9 +378,7 @@ (RETURN (COND ((|INT;negative?;$B;15| - (LETT |r| (REMAINDER2 |a| |b|) - |INT;positiveRemainder;3$;28|) - $) + (LETT |r| (REM |a| |b|) |INT;positiveRemainder;3$;28|) $) (COND ((MINUSP |b|) (- |r| |b|)) (T (+ |r| |b|)))) (T |r|))))) @@ -432,11 +434,9 @@ (DEFUN |INT;quo;3$;49| (|x| |y| $) (DECLARE (IGNORE $)) - (QUOTIENT2 |x| |y|)) + (TRUNCATE |x| |y|)) -(DEFUN |INT;rem;3$;50| (|x| |y| $) - (DECLARE (IGNORE $)) - (REMAINDER2 |x| |y|)) +(DEFUN |INT;rem;3$;50| (|x| |y| $) (DECLARE (IGNORE $)) (REM |x| |y|)) (DEFUN |INT;shift;3$;51| (|x| |y| $) (DECLARE (IGNORE $)) diff --git a/src/algebra/strap/SINT.lsp b/src/algebra/strap/SINT.lsp index 071264f8..b891bed3 100644 --- a/src/algebra/strap/SINT.lsp +++ b/src/algebra/strap/SINT.lsp @@ -164,12 +164,12 @@ (DECLAIM (FTYPE (FUNCTION (|%Short| |%Short| |%Shell|) |%Short|) |SINT;quo;3$;37|)) -(PUT '|SINT;quo;3$;37| '|SPADreplace| 'QSQUOTIENT) +(PUT '|SINT;quo;3$;37| '|SPADreplace| '|%iquo|) (DECLAIM (FTYPE (FUNCTION (|%Short| |%Short| |%Shell|) |%Short|) |SINT;rem;3$;38|)) -(PUT '|SINT;rem;3$;38| '|SPADreplace| 'QSREMAINDER) +(PUT '|SINT;rem;3$;38| '|SPADreplace| '|%irem|) (DECLAIM (FTYPE (FUNCTION (|%Short| |%Short| |%Shell|) |%Pair|) |SINT;divide;2$R;39|)) @@ -413,11 +413,11 @@ (DEFUN |SINT;quo;3$;37| (|x| |y| $) (DECLARE (IGNORE $)) - (QSQUOTIENT |x| |y|)) + (TRUNCATE |x| |y|)) (DEFUN |SINT;rem;3$;38| (|x| |y| $) (DECLARE (IGNORE $)) - (QSREMAINDER |x| |y|)) + (REM |x| |y|)) (DEFUN |SINT;divide;2$R;39| (|x| |y| $) (CONS (QSQUOTIENT |x| |y|) (QSREMAINDER |x| |y|))) @@ -485,7 +485,7 @@ (CONS |m| |v|)) (DEFUN |SINT;positiveRemainder;3$;58| (|x| |n| $) - (LET ((|r| (QSREMAINDER |x| |n|))) + (LET ((|r| (REM |x| |n|))) (COND ((QSMINUSP |r|) (COND ((QSMINUSP |n|) (- |x| |n|)) (T (+ |r| |n|)))) @@ -496,9 +496,8 @@ (DEFUN |SINT;random;$;60| ($) (SEQ (|setShellEntry| $ 6 - (REMAINDER (TIMES 314159269 (|getShellEntry| $ 6)) - 2147483647)) - (EXIT (REMAINDER (|getShellEntry| $ 6) 67108864)))) + (REM (TIMES 314159269 (|getShellEntry| $ 6)) 2147483647)) + (EXIT (REM (|getShellEntry| $ 6) 67108864)))) (DEFUN |SINT;random;2$;61| (|n| $) (DECLARE (IGNORE $)) (RANDOM |n|)) -- cgit v1.2.3