On 8/30/2007 11:08 AM, willem vervoort wrote:
> Dear all,
> I am struggling to understand this.
> 
> What happens when you raise a negative value to a power and the result
> is a very large number?
> 
>  B
> [1] 47.73092
> 
>> -51^B
> [1] -3.190824e+81

You should be using parentheses.  You evaluated -(51^B), not (-51)^B. 
The latter gives NaN.
> 
> # seems fine
> # now this:
>> x <- seq(-51,-49,length=100)
> 
>> x^B
>   [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
> <snip>
>> is.numeric(x^B)
> [1] TRUE
>> is.real(x^B)
> [1] TRUE
>> is.infinite(x^B)
>   [1] FALSE FALSE FALSE FALSE FALSE
> 
> I am lost, I checked the R mailing help, but could not find anything
> directly. I loaded package Brobdingnag and tried:
> as.brob(x^B)
>   [1] NAexp(NaN) NAexp(NaN) NAexp(NaN) NAexp(NaN) NAexp(NaN)
>> as.brob(x)^B
>   [1] NAexp(187.67) NAexp(187.65) NAexp(187.63) NAexp(187.61)
> 
> I guess I must be misunderstanding something fundamental.

Two things:  operator precedence (the ^ has higher precedence than the 
unary minus), and the mathematical definition of raising something to a 
fractional power.  The approach R takes to the latter is to define x^B 
to be exp(B * ln(x)), and ln(x) is undefined for negative x.

Duncan Murdoch

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to