Maxima can't do this integral???



On 8/7/09, Raymond Toy <toy.raymond at gmail.com> wrote:

> I can confirm David's result.  It appears to be something with the CVS
> version since others with earlier versions of maxima get the correct answer.

It appears to be due to this patch for src/limit.lisp (r1.72, 2009-06-06).
With this patch, I get a noun expression, without it,
I get k^2/(k^2 + kappa^2). (In either case, I get an asksign for
kappa but not for k.)

I guess limit is called from the integration code.
I don't know anything more about it.

FWIW

Robert Dodier

PS. Here is the log message.
----------------------------
revision 1.72
date: 2009/06/06 15:24:32;  author: dgildea;  state: Exp;  lines: +2 -6
src/expintegral.lisp:
o throw errorsw when simplication routines called from limit
   fixes limit(x*expintegral_ei(x),x,0) --> Error - ID: 2801821

src/limit.lisp:
o try-lhospital-quit: try lhospital with both combinations of num/den

tests/rtest16.mac:
o add limit(x*expintegral_ei(x),x,0) --> Error - ID: 2801821
----------------------------


PPS. Here is the patch.
Index: src/limit.lisp
===================================================================
RCS file: /cvsroot/maxima/maxima/src/limit.lisp,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -r1.71 -r1.72
--- src/limit.lisp      5 Jun 2009 22:02:56 -0000       1.71
+++ src/limit.lisp      6 Jun 2009 15:24:32 -0000       1.72
@@ -1269,7 +1269,8 @@
          (t ans))))

 (defun try-lhospital-quit (n d ind)
-  (let ((ans (lhospital-catch n d ind)))
+  (let ((ans (or (lhospital-catch n d ind)
+                (lhospital-catch (m^ d -1) (m^ n -1) ind))))
     (cond ((null ans) (throw 'limit t))
          ((not (free-infp ans)) (simpinf ans))
          ((not (free-epsilonp ans)) (simpab ans))
@@ -1379,11 +1380,6 @@
                  t)
                 (t nil))))
        ((or (oscip num) (oscip denom)))
-       ((or (polyinx num var ())
-            (polyinx denom var ())))
-       ((or (polyinx (m^ num -1) var ())
-            (polyinx (m^ denom -1) var ()))
-        (psetq num (m^ denom -1) denom (m^ num -1)))
        ((frac num)
         (psetq num (m^ denom -1) denom (m^ num -1))))
   (cons num denom))