[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Axiom-developer] Complex exponentiation and 0
From: |
William Sit |
Subject: |
Re: [Axiom-developer] Complex exponentiation and 0 |
Date: |
Mon, 21 Jun 2004 16:01:02 -0400 |
Martin Rubey wrote:
> > (9) -> (0.0**complex(0,0))
> >
> > >> Error detected within library code:
> > log 0 generated
> >
> > protected-symbol-warn called with (NIL)
> >
> > Addendum to my previous post: it seems that within axiom 0^0 was assumed
> to be
> > undefined originally:
> >
> > card.spad: error "0**0 not defined for cardinal numbers."
> > float.spad: y = 0 => error "0**0 is undefined"
> > float.spad: r = 0 => error "0**0 is undefined"
> > float.spad: n = 0 => error "0**0 is undefined"
> > interval.spad: zero?(v) => if zero?(u) then error "0**0 is undefined"
> else 1
> > pscat.spad: zero? r => error "0**0 undefined"
> > sf.spad: zero? r => error "0**0 is undefined"
> > address@hidden algebra]$ grep -i "0 \*\* 0" *
> > combfunc.spad: zero? second l => error "0 ** 0"
> > gaussian.spad: zero? x => error "0 ** 0 is undefined"
> > gaussian.spad: zero? x => error "0 ** 0 is undefined"
> > laurent.spad: zero? x => error "0 ** 0 is undefined"
> > laurent.spad: zero? x => error "0 ** 0 is undefined"
> >
> > Martin
Except for card.spad, the other "undefined" messages seem to me justified
because of the way exponentiation is defined x^y = exp(y* log(x)), where exp is
the natural exponentiation function, say defined as the inverse of log, which is
defined as an integral from 1 to x of 1/t (dt). Since the integral is defined
in terms of a limit (of Riemann sum), this falls under the domain specific
convention I discussed. One can evaluate the limit of x^x = exp(x * log(x)) as x
approaches 0 by evaluating first the limit of x*log(x) as x approaches 0 (which
is 0 by L'Hopital's rule) and then apply the continuity of exp, giving the value
1. However, the limit of y^x as x AND y independently approaching 0 (that is,
(x,y) approaching (0,0) on the plane) would depend on the path. For example, if
the path is along the x-axis, where y is held 0, then the limit will be
undefined because log(0) is not defined. If the path is along the y-axis, where
x is held 0, then since y^0 is 1 for any non-zero y, the limit is 1. Since ONE
of the limits does not exist, the entire 2D limit is not defined.
Since the interpretation of the notation 0^0 in these domains is not unique, it
is better to leave it undefined.
In the case of card.spad, the function x^y, where x and y are cardinal numbers
of sets X and Y respectively, x^y is the cardinal number of the set of all maps
from Y to X.
For example, when x = 2, 2^y is the cardinality of the power set of Y. Now when
x = 0 and/or y = 0, one (or both) of X and Y is the empty set and since one
cannot define what a "map" is to or from an empty set, it may seem justified to
leave 0^y, x^0, and 0^0 undefined.
William
RE: [Axiom-developer] Complex exponentiation and 0, Page, Bill, 2004/06/21
RE: [Axiom-developer] Complex exponentiation and 0, Page, Bill, 2004/06/21