MathGroup Archive 1992

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Plotting x^(1/3), etc.

     My message about Mathematica's definition of Power does
define x^y in terms Exp like so:

     Exp[z] == 1 + z + z^2/2! + z^3/3! + z^4/4! + z^5/5! + ...

     x^y == Exp[y*Log[x]]

for x!=0.  Everyone is comfortable with powers to nonnegative
integers appearing in the series expansion I hope.
     Extending Power's domain to allow 0^y to be calculated
for some y is complicated by not having an obvious solution.
Mathematica chooses

     0^y == { 0                  for Re[y]>0
            { undefined          for Re[y]<=0

but the case Re[y]==0 is actually a bit ambiguous and subject
to opinion about what criteria to apply in the process of
extending the definition.  This is something that users could
influence by making persuasive intelligent arguments if they
     Next, I can say a few words about why

     x^0 => 1             0^0 => Indeterminate

My point of view is that Power is a partial function.  If
you are a good citizen, you don't apply Power outside its

     Domain(Power) == ((C-{0}) x C) union ({0} x {y|Re[y]>0})

When you violate the law, you get special values, and this is
more or less Mathematica's way of telling you that you've made
an error.  Further along in your program, if you apply functions
like Plus, Times, Power to the special values, you may just be
playing "garbage in garbage out" with Mathematica.
     There are different layers of semantics which can be
used to view subsets of Mathematica.  The semantics with partial
functions and complex constants alone is nearly classical.  The
semantics for a larger subset of Mathematica that includes
special values is necessarily procedural.  If you want Power
or other functions to behave according to those conventions
attached to the special values, then you need to arrange that
any subexpression that will denote a special value does evaluate
to a special value before the Power expression itself is evaluated.
If you don't do this, you'll tend to get confusing results or
garbage.  You can interpret this behaviour as liberalizing the
rules in one way, by extending domains to include special values,
but also now sacrificing some of the old rules and theorems you
used to be able to count on, such as the "distributive law",
"x*0==0", or "x^0==1".


  • Prev by Date: Re: Determinant Function (Final Version?)
  • Next by Date: Re: Plotting x^(1/3), etc.
  • Previous by thread: Re: Plotting x^(1/3), etc.
  • Next by thread: Re: Plotting x^(1/3), etc.