limit(1/x, x, 0) => infinity



Robert Dodier wrote:
> On 12/22/08, Dan Gildea <dgildea at users.sourceforge.net> wrote:

Hi,

>> That was Stravros's reasoning in the bug report.  Maxima still
>>  has some problems distinguishing und from infinity - for example,
>>  limit(log(x), x, 0) and limit(exp(x*%i)*x,x,inf) currently return
>>  und but technically should return infinity.
> 
> OK, good. Let's let it stand.
> 
> Robert
> 

Well, according to the documentation:

Maxima 5.17.1 http://maxima.sourceforge.net
Using Lisp CLISP 2.46 (2008-07-02)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) ? und

  -- Constant: und
      `und' represents an undefined result.

      See also `limit'.

      Example:

           (%i1) limit (1/x, x, 0);
           (%o1)                          und




   There are also some inexact matches for `und'.
   Try `?? und' to see them.

(%o1)                                true
(%i2) ? infinity

  -- Constant: infinity
      `infinity' represents complex infinity.


   There are also some inexact matches for `infinity'.
   Try `?? infinity' to see them.

(%o2)                                true


So

  (a) the documentation for "und" needs to be updated one way or the other

  (b) it makes me mathematically very uncomfortable that the limit of 
1/x at 0 is infinity since the limit IMHO clearly does not exist. While 
the definition of "infinity" is different internally in Maxima 
(according to Robert) a calculus student would consider the result 
incorrect IMHO.


By the way: The following is reproducible on clisp 2.46+Maxima 5.17.1 
while it worked on 2.46 + Maxima 5.16.3:

[mabshoff at eno sage-3.2.2-eno]$ maxima
Maxima 5.17.1 http://maxima.sourceforge.net
Using Lisp CLISP 2.46 (2008-07-02)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) limit(x,x,infinity);

*** - Lisp stack overflow. RESET

[eval.d:573] reset() found no driver frame (sp=0x4b91a5e0-0x4b917cb0)
Exiting on signal 6
Aborted

Not sure why this happens, but if I would have to guess I would blame 
clisp :)

Cheers,

Michael