# [R] R: to the power

Duncan Murdoch murdoch at stats.uwo.ca
Tue Jul 12 16:07:22 CEST 2005

```On 7/12/2005 9:53 AM, allan_sta_staff_sci_main_uct at mail.uct.ac.za wrote:
> hi all
>
> i simply wanted to work with real numbers and thought that (-8)^(1/3) should
> work.

It might work in an ideal world, but not in the R floating point world.
There's no way to express (1/3) exactly.   Since (-8)^(1/3 + epsilon)
(restricted to the reals) is not defined for epsilon near zero but not
exactly zero, it's really hopeless to expect R to give you what you wanted.

*You* know that you're taking an odd root of a negative number, but R
doesn't.  You need to use your knowledge to rewrite that mathematical
expression as the mathematically equivalent -(8^(1/3)) and then things
will be fine.

Duncan Murdoch

>
> sorry for not making the question clearer.
>
> /
> allan
>
> Quoting Duncan Murdoch <murdoch at stats.uwo.ca>:
>
>> On 7/12/2005 9:29 AM, Robin Hankin wrote:
>> > Hi
>> >
>> > I find that one often needs to keep reals real and complexes complex.
>> >
>> > Try this:
>> >
>> > "cuberooti" <-
>> >    function (x)
>> > {
>> >    if (is.complex(x)) {
>> >      return(sqrt(x + (0+0i)))
>> >    }
>> >    sign(x)*  abs(x)^(1/3)
>> > }
>> >
>> >
>> > best wishes
>> >
>> > [see that (0+0i) sitting there!]
>>
>> I don't understand this.
>>
>> 1.  I don't think you meant to use sqrt() there, did you??
>>
>> 2.  What effect does the 0+0i have?  x has already been determined to be
>> complex.
>>
>> Duncan Murdoch
>>
>
>
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.

```