Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

What we get from (0.0*x), (0.0^x) and similar stuff

  • To: mathgroup at smc.vnet.net
  • Subject: [mg58664] What we get from (0.0*x), (0.0^x) and similar stuff
  • From: ted.ersek at tqci.net
  • Date: Wed, 13 Jul 2005 03:28:56 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Many users will see nothing wrong with what we get from the following:

In[1]:=  Clear[x,y];
{x^0.0, x^0, 0*x*y}

Out[2]= {1., 1, 0}

But the kernel does nothing to simplify the next input.  I suppose this is
because the result is Indeterminate in the case of (0.0*Infinity), or
(0^0).  So then why didn't the kernel account for that with the previous
example?

In[3]:= {0.0*x*y,0^x,0.0^x}

Out[3]= {0. x y, 0^x, 0.^x}


We can use the definitions below to ensure the input above returns {0. ,
1, 0.} and some will consider this a nice improvement.

In[4]:= Unprotect[Times,Power];
Times[0.0,__?(#=!=Indeterminate&&Head[#]=!=DirectedInfinity&)]=0.0;
Power[0,_?((!NumericQ[#]||Positive[Re[#]])&&Head[#]=!=DirectedInfinity&)]=0;
Power[0.0,_?((!NumericQ[#]||Positive[Re[#]])&&Head[#]=!=DirectedInfinity&)]=0.0;


In[9]:=  {0.0*x*y, 0^x, 0.0^x}

Out[9]= {0., 0, 0.}


After making the above definitions we still get Indeterminate or
ComplexInfinity whenever we should.  See the next input as an example.

In[10]:= {0*x*¥, 0*x*Indeterminate, 0^0, 0^Indeterminate, 0^(I-3)}

Out[10]= {Indeterminate, Indeterminate, Indeterminate, Indeterminate,
ComplexInfinity}


However some users might want to always acount for the possibity that we
might have (0*Infinity) or (0^0) and so prefer that  the list below would
return itself.  However, I think it isn't possible to do that because
since Mathematica Version 3 Times and Power use built-in definitions
before user definitions.  Am I wrong?  Can anyone change the outcome
below?

In[11]:= Clear[Times,Power];
{x^0.0,x^0,0*x*y}

Out[11]= {1., 1, 0}

--------
Regards,
   Ted Ersek



  • Prev by Date: Re: ListDensityPlot Legend?
  • Next by Date: Superscript Problem
  • Previous by thread: Re: ListDensityPlot Legend?
  • Next by thread: Re: What we get from (0.0*x), (0.0^x) and similar stuff