From: Dan G. <dg...@us...> - 2010-10-02 17:24:44
|
Update of /cvsroot/maxima/maxima/src In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv21318 Modified Files: defint.lisp Log Message: sin-cos-intsubs1: calling intsubs on numerator may incorrectly signal a divergent integral. Example: integrate(cos(x)^2 * (1 + sin(x)^2)^-3,x,0,%pi/2); Index: defint.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/defint.lisp,v retrieving revision 1.82 retrieving revision 1.83 diff -u -d -r1.82 -r1.83 --- defint.lisp 21 Aug 2010 16:51:38 -0000 1.82 +++ defint.lisp 2 Oct 2010 17:24:36 -0000 1.83 @@ -2028,20 +2028,8 @@ (defun sin-cos-intsubs1 (exp) (let* ((rat-exp ($rat exp)) - (num (pdis (cadr rat-exp))) (denom (pdis (cddr rat-exp)))) - (cond ((not (equal (intsubs num ll ul) 0.)) - (intsubs exp ll ul)) - ;; Why do we want to return zero when the denom is not zero? - ;; That doesn't seem to make sense to me (rtoy). Checking - ;; for a zero denominator makes sense, but what we should - ;; return in that case? 0 seems like a bad choice. $inf or - ;; $undefined seem like better choices. Or maybe just - ;; signaling an error? - #+nil - ((not (equal ($asksign denom) '$zero)) - 0) - ((equal ($csign denom) '$zero) + (cond ((equal ($csign denom) '$zero) '$undefined) (t (intsubs exp ll ul))))) |