aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/strap/INT.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra/strap/INT.lsp')
-rw-r--r--src/algebra/strap/INT.lsp331
1 files changed, 253 insertions, 78 deletions
diff --git a/src/algebra/strap/INT.lsp b/src/algebra/strap/INT.lsp
index afb2e425..b8caedc7 100644
--- a/src/algebra/strap/INT.lsp
+++ b/src/algebra/strap/INT.lsp
@@ -1,6 +1,254 @@
(/VERSIONCHECK 2)
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Integer| |%Shell|) |%Void|)
+ |INT;writeOMInt|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%String|)
+ |INT;OMwrite;$S;2|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Boolean| |%Shell|) |%String|)
+ |INT;OMwrite;$BS;3|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Integer| |%Shell|) |%Void|)
+ |INT;OMwrite;Omd$V;4|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Integer| |%Boolean| |%Shell|)
+ |%Void|)
+ |INT;OMwrite;Omd$BV;5|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Boolean|)
+ |INT;zero?;$B;6|))
+
+(PUT '|INT;zero?;$B;6| '|SPADreplace| 'ZEROP)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Boolean|)
+ |INT;one?;$B;7|))
+
+(PUT '|INT;one?;$B;7| '|SPADreplace| '(XLAM (|x|) (EQL |x| 1)))
+
+(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Integer|) |INT;Zero;$;8|))
+
+(PUT '|INT;Zero;$;8| '|SPADreplace| '(XLAM NIL 0))
+
+(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Integer|) |INT;One;$;9|))
+
+(PUT '|INT;One;$;9| '|SPADreplace| '(XLAM NIL 1))
+
+(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Integer|) |INT;base;$;10|))
+
+(PUT '|INT;base;$;10| '|SPADreplace| '(XLAM NIL 2))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;copy;2$;11|))
+
+(PUT '|INT;copy;2$;11| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;inc;2$;12|))
+
+(PUT '|INT;inc;2$;12| '|SPADreplace| '(XLAM (|x|) (+ |x| 1)))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;dec;2$;13|))
+
+(PUT '|INT;dec;2$;13| '|SPADreplace| '(XLAM (|x|) (- |x| 1)))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Short|)
+ |INT;hash;$Si;14|))
+
+(PUT '|INT;hash;$Si;14| '|SPADreplace| 'SXHASH)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Boolean|)
+ |INT;negative?;$B;15|))
+
+(PUT '|INT;negative?;$B;15| '|SPADreplace| 'MINUSP)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Thing|)
+ |INT;coerce;$Of;16|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;coerce;2$;17|))
+
+(PUT '|INT;coerce;2$;17| '|SPADreplace| '(XLAM (|m|) |m|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;convert;2$;18|))
+
+(PUT '|INT;convert;2$;18| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;length;2$;19|))
+
+(PUT '|INT;length;2$;19| '|SPADreplace| 'INTEGER-LENGTH)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Integer| |%Shell|)
+ |%Integer|)
+ |INT;addmod;4$;20|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Integer| |%Shell|)
+ |%Integer|)
+ |INT;submod;4$;21|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Integer| |%Shell|)
+ |%Integer|)
+ |INT;mulmod;4$;22|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Thing|)
+ |INT;convert;$F;23|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%DoubleFloat|)
+ |INT;convert;$Df;24|))
+
+(PUT '|INT;convert;$Df;24| '|SPADreplace|
+ '(XLAM (|x|) (FLOAT |x| |$DoubleFloatMaximum|)))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Thing|)
+ |INT;convert;$If;25|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%String|)
+ |INT;convert;$S;26|))
+
+(PUT '|INT;convert;$S;26| '|SPADreplace| 'STRINGIMAGE)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%String|)
+ |INT;latex;$S;27|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;positiveRemainder;3$;28|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Shell|) |%Thing|)
+ |INT;reducedSystem;2M;29|))
+
+(PUT '|INT;reducedSystem;2M;29| '|SPADreplace| '(XLAM (|m|) |m|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| (|%Vector| *) |%Shell|) |%Pair|)
+ |INT;reducedSystem;MVR;30|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;abs;2$;31|))
+
+(PUT '|INT;abs;2$;31| '|SPADreplace| 'ABS)
+
+(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Integer|) |INT;random;$;32|))
+
+(PUT '|INT;random;$;32| '|SPADreplace| '|random|)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;random;2$;33|))
+
+(PUT '|INT;random;2$;33| '|SPADreplace| 'RANDOM)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Boolean|)
+ |INT;=;2$B;34|))
+
+(PUT '|INT;=;2$B;34| '|SPADreplace| 'EQL)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Boolean|)
+ |INT;<;2$B;35|))
+
+(PUT '|INT;<;2$B;35| '|SPADreplace| '<)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;-;2$;36|))
+
+(PUT '|INT;-;2$;36| '|SPADreplace| '-)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;+;3$;37|))
+
+(PUT '|INT;+;3$;37| '|SPADreplace| '+)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;-;3$;38|))
+
+(PUT '|INT;-;3$;38| '|SPADreplace| '-)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;*;3$;39|))
+
+(PUT '|INT;*;3$;39| '|SPADreplace| '*)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;*;3$;40|))
+
+(PUT '|INT;*;3$;40| '|SPADreplace| '*)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| (|%IntegerSection| 0) |%Shell|)
+ |%Integer|)
+ |INT;**;$Nni$;41|))
+
+(PUT '|INT;**;$Nni$;41| '|SPADreplace| 'EXPT)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Boolean|)
+ |INT;odd?;$B;42|))
+
+(PUT '|INT;odd?;$B;42| '|SPADreplace| 'ODDP)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;max;3$;43|))
+
+(PUT '|INT;max;3$;43| '|SPADreplace| 'MAX)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;min;3$;44|))
+
+(PUT '|INT;min;3$;44| '|SPADreplace| 'MIN)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Pair|)
+ |INT;divide;2$R;45|))
+
+(PUT '|INT;divide;2$R;45| '|SPADreplace| 'DIVIDE2)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;quo;3$;46|))
+
+(PUT '|INT;quo;3$;46| '|SPADreplace| 'QUOTIENT2)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;rem;3$;47|))
+
+(PUT '|INT;rem;3$;47| '|SPADreplace| 'REMAINDER2)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;shift;3$;48|))
+
+(PUT '|INT;shift;3$;48| '|SPADreplace| 'ASH)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Pair|)
+ |INT;exquo;2$U;49|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Pair|)
+ |INT;recip;$U;50|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Integer| |%Shell|) |%Integer|)
+ |INT;gcd;3$;51|))
+
+(PUT '|INT;gcd;3$;51| '|SPADreplace| 'GCD)
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Shell|)
+ |INT;unitNormal;$R;52|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Integer| |%Shell|) |%Integer|)
+ |INT;unitCanonical;2$;53|))
+
+(PUT '|INT;unitCanonical;2$;53| '|SPADreplace| 'ABS)
+
+(DECLAIM (FTYPE (FUNCTION (|%List| |%Thing| |%Shell|) |%Pair|)
+ |INT;solveLinearPolynomialEquation|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Shell|) |%Thing|)
+ |INT;squareFreePolynomial|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Shell|) |%Thing|)
+ |INT;factorPolynomial|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Shell|) |%Thing|)
+ |INT;factorSquareFreePolynomial|))
+
+(DECLAIM (FTYPE (FUNCTION (|%Thing| |%Thing| |%Shell|) |%Thing|)
+ |INT;gcdPolynomial;3Sup;58|))
+
(DEFUN |INT;writeOMInt| (|dev| |x| $)
(SEQ (COND
((< |x| 0)
@@ -54,63 +302,37 @@
(EXIT (COND
(|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 18)))))))
-(PUT '|INT;zero?;$B;6| '|SPADreplace| 'ZEROP)
-
(DEFUN |INT;zero?;$B;6| (|x| $) (ZEROP |x|))
-(PUT '|INT;one?;$B;7| '|SPADreplace| '(XLAM (|x|) (EQL |x| 1)))
-
(DEFUN |INT;one?;$B;7| (|x| $) (EQL |x| 1))
-(PUT '|INT;Zero;$;8| '|SPADreplace| '(XLAM NIL 0))
-
(DEFUN |INT;Zero;$;8| ($) 0)
-(PUT '|INT;One;$;9| '|SPADreplace| '(XLAM NIL 1))
-
(DEFUN |INT;One;$;9| ($) 1)
-(PUT '|INT;base;$;10| '|SPADreplace| '(XLAM NIL 2))
-
(DEFUN |INT;base;$;10| ($) 2)
-(PUT '|INT;copy;2$;11| '|SPADreplace| '(XLAM (|x|) |x|))
-
(DEFUN |INT;copy;2$;11| (|x| $) |x|)
-(PUT '|INT;inc;2$;12| '|SPADreplace| '(XLAM (|x|) (+ |x| 1)))
-
(DEFUN |INT;inc;2$;12| (|x| $) (+ |x| 1))
-(PUT '|INT;dec;2$;13| '|SPADreplace| '(XLAM (|x|) (- |x| 1)))
-
(DEFUN |INT;dec;2$;13| (|x| $) (- |x| 1))
-(PUT '|INT;hash;$Si;14| '|SPADreplace| 'SXHASH)
-
(DEFUN |INT;hash;$Si;14| (|x| $) (SXHASH |x|))
-(PUT '|INT;negative?;$B;15| '|SPADreplace| 'MINUSP)
-
(DEFUN |INT;negative?;$B;15| (|x| $) (MINUSP |x|))
(DEFUN |INT;coerce;$Of;16| (|x| $)
(SPADCALL |x| (|getShellEntry| $ 37)))
-(PUT '|INT;coerce;2$;17| '|SPADreplace| '(XLAM (|m|) |m|))
-
(DEFUN |INT;coerce;2$;17| (|m| $) |m|)
-(PUT '|INT;convert;2$;18| '|SPADreplace| '(XLAM (|x|) |x|))
-
(DEFUN |INT;convert;2$;18| (|x| $) |x|)
-(PUT '|INT;length;2$;19| '|SPADreplace| 'INTEGER-LENGTH)
-
(DEFUN |INT;length;2$;19| (|a| $) (INTEGER-LENGTH |a|))
(DEFUN |INT;addmod;4$;20| (|a| |b| |p| $)
- (PROG (|c| #0=#:G1429)
+ (PROG (|c| #0=#:G1432)
(RETURN
(SEQ (EXIT (SEQ (SEQ (LETT |c| (+ |a| |b|) |INT;addmod;4$;20|)
(EXIT (COND
@@ -134,16 +356,11 @@
(DEFUN |INT;convert;$F;23| (|x| $)
(SPADCALL |x| (|getShellEntry| $ 46)))
-(PUT '|INT;convert;$Df;24| '|SPADreplace|
- '(XLAM (|x|) (FLOAT |x| |$DoubleFloatMaximum|)))
-
(DEFUN |INT;convert;$Df;24| (|x| $) (FLOAT |x| |$DoubleFloatMaximum|))
(DEFUN |INT;convert;$If;25| (|x| $)
(SPADCALL |x| (|getShellEntry| $ 51)))
-(PUT '|INT;convert;$S;26| '|SPADreplace| 'STRINGIMAGE)
-
(DEFUN |INT;convert;$S;26| (|x| $) (STRINGIMAGE |x|))
(DEFUN |INT;latex;$S;27| (|x| $)
@@ -162,82 +379,44 @@
(COND ((MINUSP |b|) (- |r| |b|)) ('T (+ |r| |b|))))
('T |r|)))))
-(PUT '|INT;reducedSystem;2M;29| '|SPADreplace| '(XLAM (|m|) |m|))
-
(DEFUN |INT;reducedSystem;2M;29| (|m| $) |m|)
(DEFUN |INT;reducedSystem;MVR;30| (|m| |v| $) (CONS |m| '|vec|))
-(PUT '|INT;abs;2$;31| '|SPADreplace| 'ABS)
-
(DEFUN |INT;abs;2$;31| (|x| $) (ABS |x|))
-(PUT '|INT;random;$;32| '|SPADreplace| '|random|)
-
(DEFUN |INT;random;$;32| ($) (|random|))
-(PUT '|INT;random;2$;33| '|SPADreplace| 'RANDOM)
-
(DEFUN |INT;random;2$;33| (|x| $) (RANDOM |x|))
-(PUT '|INT;=;2$B;34| '|SPADreplace| 'EQL)
-
(DEFUN |INT;=;2$B;34| (|x| |y| $) (EQL |x| |y|))
-(PUT '|INT;<;2$B;35| '|SPADreplace| '<)
-
(DEFUN |INT;<;2$B;35| (|x| |y| $) (< |x| |y|))
-(PUT '|INT;-;2$;36| '|SPADreplace| '-)
-
(DEFUN |INT;-;2$;36| (|x| $) (- |x|))
-(PUT '|INT;+;3$;37| '|SPADreplace| '+)
-
(DEFUN |INT;+;3$;37| (|x| |y| $) (+ |x| |y|))
-(PUT '|INT;-;3$;38| '|SPADreplace| '-)
-
(DEFUN |INT;-;3$;38| (|x| |y| $) (- |x| |y|))
-(PUT '|INT;*;3$;39| '|SPADreplace| '*)
-
(DEFUN |INT;*;3$;39| (|x| |y| $) (* |x| |y|))
-(PUT '|INT;*;3$;40| '|SPADreplace| '*)
-
(DEFUN |INT;*;3$;40| (|m| |y| $) (* |m| |y|))
-(PUT '|INT;**;$Nni$;41| '|SPADreplace| 'EXPT)
-
(DEFUN |INT;**;$Nni$;41| (|x| |n| $) (EXPT |x| |n|))
-(PUT '|INT;odd?;$B;42| '|SPADreplace| 'ODDP)
-
(DEFUN |INT;odd?;$B;42| (|x| $) (ODDP |x|))
-(PUT '|INT;max;3$;43| '|SPADreplace| 'MAX)
-
(DEFUN |INT;max;3$;43| (|x| |y| $) (MAX |x| |y|))
-(PUT '|INT;min;3$;44| '|SPADreplace| 'MIN)
-
(DEFUN |INT;min;3$;44| (|x| |y| $) (MIN |x| |y|))
-(PUT '|INT;divide;2$R;45| '|SPADreplace| 'DIVIDE2)
-
(DEFUN |INT;divide;2$R;45| (|x| |y| $) (DIVIDE2 |x| |y|))
-(PUT '|INT;quo;3$;46| '|SPADreplace| 'QUOTIENT2)
-
(DEFUN |INT;quo;3$;46| (|x| |y| $) (QUOTIENT2 |x| |y|))
-(PUT '|INT;rem;3$;47| '|SPADreplace| 'REMAINDER2)
-
(DEFUN |INT;rem;3$;47| (|x| |y| $) (REMAINDER2 |x| |y|))
-(PUT '|INT;shift;3$;48| '|SPADreplace| 'ASH)
-
(DEFUN |INT;shift;3$;48| (|x| |y| $) (ASH |x| |y|))
(DEFUN |INT;exquo;2$U;49| (|x| |y| $)
@@ -251,15 +430,11 @@
((OR (EQL |x| 1) (EQL |x| -1)) (CONS 0 |x|))
('T (CONS 1 "failed"))))
-(PUT '|INT;gcd;3$;51| '|SPADreplace| 'GCD)
-
(DEFUN |INT;gcd;3$;51| (|x| |y| $) (GCD |x| |y|))
(DEFUN |INT;unitNormal;$R;52| (|x| $)
(COND ((< |x| 0) (VECTOR -1 (- |x|) -1)) ('T (VECTOR 1 |x| 1))))
-(PUT '|INT;unitCanonical;2$;53| '|SPADreplace| 'ABS)
-
(DEFUN |INT;unitCanonical;2$;53| (|x| $) (ABS |x|))
(DEFUN |INT;solveLinearPolynomialEquation| (|lp| |p| $)
@@ -269,7 +444,7 @@
(SPADCALL |p| (|getShellEntry| $ 98)))
(DEFUN |INT;factorPolynomial| (|p| $)
- (PROG (|pp| #0=#:G1500)
+ (PROG (|pp| #0=#:G1503)
(RETURN
(SEQ (LETT |pp| (SPADCALL |p| (|getShellEntry| $ 99))
|INT;factorPolynomial|)
@@ -282,12 +457,12 @@
(SPADCALL (CONS #'|INT;factorPolynomial!0| $)
(SPADCALL
(PROG2 (LETT #0#
- (SPADCALL
+ (|INT;exquo;2$U;49|
(SPADCALL |p|
(|getShellEntry| $ 100))
(SPADCALL |pp|
(|getShellEntry| $ 100))
- (|getShellEntry| $ 84))
+ $)
|INT;factorPolynomial|)
(QCDR #0#)
(|check-union| (QEQCAR #0# 0) $ #0#))
@@ -312,7 +487,7 @@
(DEFUN |Integer| ()
(PROG ()
(RETURN
- (PROG (#0=#:G1525)
+ (PROG (#0=#:G1528)
(RETURN
(COND
((LETT #0# (HGET |$ConstructorCache| '|Integer|) |Integer|)