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

*To*: mathgroup at yoda.physics.unc.edu*Subject*: Re: Plotting x^(1/3), etc.*From*: roach*Date*: Tue, 21 Apr 92 11:53:58 CDT

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 like. 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 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". Kelly