On 7/12/2005 9:53 AM, [EMAIL PROTECTED] 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 <[EMAIL PROTECTED]>: > >> 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. ______________________________________________ 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