changeset 81594:5f2dd5474f8a

(math-init-random-base,math-prime-test): Use math-read-number-simple to insert constants. (math-prime-test): Redo calculation of sum.
author Jay Belanger <jay.p.belanger@gmail.com>
date Sun, 24 Jun 2007 14:27:45 +0000
parents b1e328f69b65
children a225332a57fd
files lisp/calc/calc-comb.el
diffstat 1 files changed, 29 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calc/calc-comb.el	Sat Jun 23 22:09:20 2007 +0000
+++ b/lisp/calc/calc-comb.el	Sun Jun 24 14:27:45 2007 +0000
@@ -560,9 +560,15 @@
 	  nil
 	(if (Math-integerp var-RandSeed)
 	    (let* ((seed (math-sub 161803 var-RandSeed))
-		   (mj (1+ (math-mod seed '(bigpos 0 0 1))))
-		   (mk (1+ (math-mod (math-quotient seed '(bigpos 0 0 1))
-				     '(bigpos 0 0 1))))
+		   (mj (1+ (math-mod seed 
+                                     (eval-when-compile
+                                       (math-read-number-simple "1000000")))))
+		   (mk (1+ (math-mod (math-quotient 
+                                      seed 
+                                      (eval-when-compile
+                                        (math-read-number-simple "1000000")))
+                                     (eval-when-compile 
+                                       (math-read-number-simple "1000000")))))
 		   (i 0))
 	      (setq math-random-table (cons 'vec (make-list 55 mj)))
 	      (while (<= (setq i (1+ i)) 54)
@@ -811,7 +817,9 @@
 		   (error "Argument must be an integer"))
 		  ((Math-integer-negp n)
 		   '(nil))
-		  ((Math-natnum-lessp n '(bigpos 0 0 8))
+		  ((Math-natnum-lessp n 
+                                      (eval-when-compile
+                                        (math-read-number-simple "8000000")))
 		   (setq n (math-fixnum n))
 		   (let ((i -1) v)
 		     (while (and (> (% n (setq v (aref math-primes-table
@@ -824,15 +832,23 @@
 		  ((not (equal n (car math-prime-test-cache)))
 		   (cond ((= (% (nth 1 n) 2) 0) '(nil 2))
 			 ((= (% (nth 1 n) 5) 0) '(nil 5))
-			 (t (let ((dig (cdr n)) (sum 0))
-			      (while dig
-				(if (cdr dig)
-				    (setq sum (% (+ (+ sum (car dig))
-						    (* (nth 1 dig) 1000))
-						 111111)
-					  dig (cdr (cdr dig)))
-				  (setq sum (% (+ sum (car dig)) 111111)
-					dig nil)))
+			 (t (let ((q n) (sum 0))
+                              (while (not (eq q 0))
+                                (setq sum (%
+                                           (+
+                                            sum
+                                            (calcFunc-mod 
+                                             q 
+                                             (eval-when-compile
+                                               (math-read-number-simple
+                                                "1000000"))))
+                                           111111))
+                                (setq q 
+                                      (math-quotient 
+                                       q 
+                                       (eval-when-compile
+                                         (math-read-number-simple
+                                          "1000000")))))
 			      (cond ((= (% sum 3) 0) '(nil 3))
 				    ((= (% sum 7) 0) '(nil 7))
 				    ((= (% sum 11) 0) '(nil 11))