Two problems with laplace



Am Mittwoch, den 25.03.2009, 16:56 -0400 schrieb Raymond Toy:
> Dieter Kaiser wrote:
> > -----Urspr?ngliche Nachricht-----
> > Von: robert.dodier at gmail.com [mailto:robert.dodier at gmail.com] 
> > Gesendet: Montag, 23. M?rz 2009 23:35
> >
> >   
> >> I wonder if UNWIND-PROTECT is strong enough.
> >> I ran into a problem recently in which UNWIND-PROTECT
> >> failed to catch something, and so I had to put
> >> IGNORE-ERRORS instead.
> >>     
> >
> > You are right, UNWIND-PROTECT is not strong enough. I get further the problem
> > with an increasing number of contexts.
> >   
> Doesn't that sound like a bug in unwind-protect in the lisp
> implementation?  You shouldn't be able to exit an unwind-protect without
> running the cleanup forms, I think.

Yes, this might be the case. I have tested UNWIND-PROTECT only with GCL
on Windows up to now. I have got problems with CLISP 2.44 on Windows,
but that's another point. I will test UNWIND-PROTECT later with CLISP on
Linux.

When I implement a function simplim%gamma_incomplete to handle specific
values for the gamma_incomplete function the problem for integrals which
involve gamma_incomplete vanish.

This is the call in simplimit:

((eq (caar exp) '%gamma_incomplete)
 (simplim%gamma_incomplete (limit (second exp) var val 'think)
                           (limit (third  exp) var val 'think)))

This is a simplim%function for gamma_incomplete. The definition is not
complete, but seems to work for the integrals which I have tested.

(defun simplim%gamma_incomplete (a z)
  (cond ((or (zerop1 z)
             (eq z '$zeroa)
             (eq z '$zerob))
         (let ((sgn ($sign ($realpart a))))
           (cond ((member sgn '($neg $nz $zero)) '$infinity)
                 ((eq sgn '($pos)) ($gamma a))
                 (t ($gamma_incomplete) a z))))
              
        ((eq z '$inf) 0)
        (t ($gamma_incomplete a z))))

Dieter Kaiser