-----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.
I had a deeper look into the code and have found one type of definite integrals
for which a new context is not killed after finishing the integration routine.
These integrals give a special function as a result. LIMIT does not know
anything about this special function e.g. gamma_incomplete and tries to evaluate
the special function for undefined values. The undefined values give Maxima
Errors which cause at last an increasing number of contexts.
I have not found the reason why these Maxima Errors break the UNWIND-PROTECT
mechanism. But perhaps it is possible to avoid the problem.
To give Maxima more knowledge about the limits of special function we have to
implement a simplim%function which is called by the routine simplimit (The
existing code is not object oriented. Every function is wired into the code.
Here again an algorithm which uses the property list could be more flexible.)
It would be much more elegant to handle all specific values including zeroa,
zerob, infinities and undeterminates and the values where the function is
undefined in the simplifying routine of the function itself. But because Maxima
can not handle infinities and undeterminates correctly, the implementation of a
simplim%function is the best way to give Maxima more knowledge about the limits
of special functions.
I have tested a first implementation of a simplim routine for the
gamma_incomplete function. With this extension we have no longer a problem with
integrate and an increasing number of contexts and we get correct limits.
Dieter Kaiser