aboutsummaryrefslogtreecommitdiff
path: root/src/algebra
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-07-28 08:21:13 +0000
committerdos-reis <gdr@axiomatics.org>2010-07-28 08:21:13 +0000
commitba91d65da984ba19dff664422ca48b2a179ea4b9 (patch)
treef3b17799c39c335e74f5b497bf4f6a5dd814b0b2 /src/algebra
parent0b252ef7247d7c46b66c8996d52e80cff75e7062 (diff)
downloadopen-axiom-ba91d65da984ba19dff664422ca48b2a179ea4b9.tar.gz
* algebra/integer.spad.pamphlet (Integer): Use builtin functions
%irem and %iquo. * algebra/si.spad.pamphlet (SingleInteger): Likewise.
Diffstat (limited to 'src/algebra')
-rw-r--r--src/algebra/integer.spad.pamphlet6
-rw-r--r--src/algebra/si.spad.pamphlet16
-rw-r--r--src/algebra/strap/INT.lsp20
-rw-r--r--src/algebra/strap/SINT.lsp15
4 files changed, 30 insertions, 27 deletions
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|))