From: Dieter K. <cra...@us...> - 2010-11-01 17:43:55
|
Update of /cvsroot/maxima/maxima/src In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv2751/src Modified Files: simp.lisp Log Message: With revision 1.123 the function *quo has been replaced with "/" and quot. With the following changes we get the old behavior of the code and no change of the algorithm: In *red replace "/" with truncate. At this place both arguments are integers. In addk replace "/" with truncate. At this place both arguments are integers. In simpquot replace quot with "/". At this place at least one of the arguments is a floating point number. In exptrl replace quot with truncate. At this place both arguments are integers. No problems with the testsuite and share_testsuite. Index: simp.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/simp.lisp,v retrieving revision 1.123 retrieving revision 1.124 diff -u -d -r1.123 -r1.124 --- simp.lisp 28 Oct 2010 17:13:23 -0000 1.123 +++ simp.lisp 1 Nov 2010 17:43:46 -0000 1.124 @@ -698,8 +698,8 @@ (cond ((floatp y) (return (+ y (fpcofrat x)))) (t (setq y (list '(rat) y 1)))))) (setq g (gcd (caddr x) (caddr y))) - (setq a (/ (caddr x) g) - b (/ (caddr y) g)) + (setq a (truncate (caddr x) g) + b (truncate (caddr y) g)) (setq g (timeskl (list '(rat) 1 g) (list '(rat) (+ (* (cadr x) b) @@ -743,8 +743,8 @@ (cond ((zerop n) 0) ((equal d 1) n) (t (let ((u (gcd n d))) - (setq n (/ n u) - d (/ d u)) + (setq n (truncate n u) + d (truncate d u)) (if (minusp d) (setq n (- n) d (- d))) (cond ((equal d 1) n) ($float (fpcofrat1 n d)) @@ -1380,7 +1380,7 @@ (cond ((and (integerp (cadr x)) (integerp (caddr x)) (not (zerop (caddr x)))) (*red (cadr x) (caddr x))) ((and (numberp (cadr x)) (numberp (caddr x)) (not (zerop (caddr x)))) - (quot (cadr x) (caddr x))) + (/ (cadr x) (caddr x))) (t (setq y (simplifya (cadr x) z)) (setq x (simplifya (list '(mexpt) (caddr x) -1) z)) (if (equal y 1) x (simplifya (list '(mtimes) y x) t))))) @@ -2017,7 +2017,7 @@ (t (let ((exptrlsw t)) (simptimes (list '(mtimes) - (exptrl r1 (quot (cadr r2) (caddr r2))) + (exptrl r1 (truncate (cadr r2) (caddr r2))) (let ((y (let ($keepfloat $ratprint) (simpnrt r1 (caddr r2)))) (z (rem (cadr r2) (caddr r2)))) |