From: Dieter K. <cra...@us...> - 2009-08-26 16:57:55
|
Update of /cvsroot/maxima/maxima/src In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv4130 Modified Files: Tag: RELEASE-5_19-BRANCH compar.lisp defint.lisp rpart.lisp Log Message: Merged in the following revision to the branch 5.19: compar.lisp 1.52 -> 1.50 Changes in revision 1.52: When in $csign set limitp to NIL to avoid endless loop between trisplit - sratsimp - sign-prep. Related bug report: SIGN-PREP strangeness - ID: 2835098 Tested with CLISP 2.44 and GCL 2.6.8. No problems with the testsuite. Changes in revision 1.51: o change pred-reverse to call simp-mnot (via take); fix for bug 1725951 o insert some calls to simplify in simp-mnot; fix for bug 2836339 rpart.lisp 1.27 ->1.26 Changes in revision 1.27: Return a real answer for a subsripted variable which is not declared to be complex. integrate(f(t),t,x[1],x[2]) works again. Tested with CLISP 2.44 and GCL 2.6.8. No problems with the testsuite. defint 1.65 -> 1.64: Set limitp not in the routine $defint but in the routine defint. The answer of $imagpart depends on the value of limitp. In the routine $defint we prepare the integrand and check the boundaries of the integral using the routine $imagpart. To get the expected answer from $imagpart we do not set limitp in $defint, but later in the routine defint. Related bug report: defint fails to determine if one of its limit is real - ID: 2840566 Tested with CLISP 2.44 and GCL 2.6.8. No problems with the testsuite. Index: compar.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/compar.lisp,v retrieving revision 1.50 retrieving revision 1.50.2.1 diff -u -d -r1.50 -r1.50.2.1 --- compar.lisp 22 May 2009 10:51:58 -0000 1.50 +++ compar.lisp 26 Aug 2009 16:57:40 -0000 1.50.2.1 @@ -384,23 +384,23 @@ '$unknown) (t `((mnot simp) ,arg))) (let ((arg-op (caar arg)) (arg-arg (cdr arg))) - (setq arg-arg (mapcar #'(lambda (a) (maybe-simplifya a z)) arg-arg)) + ;;(setq arg-arg (mapcar #'(lambda (a) (maybe-simplifya a z)) arg-arg)) (cond ((eq arg-op 'mlessp) - `((mgeqp simp) ,@arg-arg)) + (simplify `((mgeqp simp) ,@arg-arg))) ((eq arg-op 'mleqp) - `((mgreaterp simp) ,@arg-arg)) + (simplify `((mgreaterp simp) ,@arg-arg))) ((eq arg-op 'mequal) - `((mnotequal simp) ,@arg-arg)) + (simplify `((mnotequal simp) ,@arg-arg))) ((eq arg-op '$equal) - `(($notequal simp) ,@arg-arg)) + (simplify `(($notequal simp) ,@arg-arg))) ((eq arg-op 'mnotequal) - `((mequal simp) ,@arg-arg)) + (simplify `((mequal simp) ,@arg-arg))) ((eq arg-op '$notequal) - `(($equal simp) ,@arg-arg)) + (simplify `(($equal simp) ,@arg-arg))) ((eq arg-op 'mgeqp) - `((mlessp simp) ,@arg-arg)) + (simplify `((mlessp simp) ,@arg-arg))) ((eq arg-op 'mgreaterp) - `((mleqp simp) ,@arg-arg)) + (simplify `((mleqp simp) ,@arg-arg))) ((eq arg-op 'mnot) (car arg-arg)) ;; Distribute negation over conjunction and disjunction; @@ -460,18 +460,8 @@ (t (pred-reverse pred)))) (defmfun pred-reverse (pred) - (cond ((atom pred) (list '(mnot) pred)) - ((eq 'mnot (caar pred)) (cadr pred)) - ((eq 'mgreaterp (caar pred)) (cons '(mleqp) (cdr pred))) - ((eq 'mgeqp (caar pred)) (cons '(mlessp) (cdr pred))) - ((eq 'mequal (caar pred)) (cons '(mnotequal) (cdr pred))) - ((eq '$equal (caar pred)) (cons '($notequal) (cdr pred))) - ((eq '$notequal (caar pred)) (cons '($equal) (cdr pred))) - ((eq 'mnotequal (caar pred)) (cons '(mequal) (cdr pred))) - ((eq 'mleqp (caar pred)) (cons '(mgreaterp) (cdr pred))) - ((eq 'mlessp (caar pred)) (cons '(mgeqp) (cdr pred))) - (t (list '(mnot) pred)))) - + (take '(mnot) pred)) + (defun is-mand (pl) (do ((dummy) (npl)) @@ -674,7 +664,8 @@ ;;; imagarinary or complex. (defun $csign (z) - (let ((*complexsign* t)) + (let ((*complexsign* t) + (limitp nil)) ($sign z))) (defmfun $sign (x) Index: defint.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/defint.lisp,v retrieving revision 1.64 retrieving revision 1.64.2.1 diff -u -d -r1.64 -r1.64.2.1 --- defint.lisp 11 Jul 2009 19:07:30 -0000 1.64 +++ defint.lisp 26 Aug 2009 16:57:40 -0000 1.64.2.1 @@ -185,7 +185,7 @@ (*sin-cos-recur* ()) (*dintexp-recur* ()) (*dintlog-recur* 0.) (ans nil) (orig-exp exp) (orig-var var) (orig-ll ll) (orig-ul ul) - (pcprntd nil) (*nodiverg nil) ($logabs t) (limitp t) + (pcprntd nil) (*nodiverg nil) ($logabs t) ; (limitp t) (rp-polylogp ()) ($domain '$real) ($m1pbranch ())) ;Try this out. @@ -384,7 +384,9 @@ (setq exp1 (sratsimp (subst var 'yx exp1)))) (defun defint (exp var ll ul) - (let ((old-assumptions *defint-assumptions*) (*current-assumptions* ())) + (let ((old-assumptions *defint-assumptions*) + (*current-assumptions* ()) + (limitp t)) (unwind-protect (prog () (setq *current-assumptions* (make-defint-assumptions 'noask)) Index: rpart.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/rpart.lisp,v retrieving revision 1.26 retrieving revision 1.26.2.1 diff -u -d -r1.26 -r1.26.2.1 --- rpart.lisp 2 Jun 2009 22:40:09 -0000 1.26 +++ rpart.lisp 26 Aug 2009 16:57:40 -0000 1.26.2.1 @@ -468,6 +468,9 @@ (risplit-noun l)) ((and (eq (caar l) '%product) (not (free (cadr l) '$%i))) (risplit-noun l)) + (($subvarp l) + ;; return a real answer for subscripted variable + (cons l 0)) (t (cons (list '(%realpart) l) (list '(%imagpart) l)))))) |