On Dec 18, 5:24 pm, jzakiya [email protected] wrote:
That only works for odd roots of negative numbers.
a root for this negative number.
For negative real value roots:
from e^(ix) = cos(x) + isin(x) where x = PI/2
= 2.828*(1+i)
X**(1/4.0)
=> (2.82842712474619+2.82842712474619i)
BTW there is an error (sort of) in ‘complex’ too
require ‘complex’
include Math
x = Complex(-27,0)
=> (-27+0i)
y = x**(1/3.0) # or x3-1
=> (1.5+2.59807621135332i) # should be (-3+0i)
y**3
=> (-27.0+1.24344978758018e-14i)
Complex(-3,0)**3
=> -27
Whenever you take the root n of a number you actually
get n values. If the value is positive you get n copies
of the same positive real value.
When you take the root of a negative real value you
get n roots too, for n even and odd.
For even odd, you get one real root and n/2 Complex Conjugate Pairs
(CCP).
Thus, for n=3 for (-27)^(1/3) the real root is x1=-3
and x2 is y above and x3 is the CCP of y.
For n=5, you get one real root and 2 pairs of CCPs, etc.
For n even, you get n/2 CCPs only.
So, for n=2 there is one pair of CCP roots.
For n=4 you get 2 different CCP roots, etc,
Thus for n even there are no real roots.
So, I think it’s more intuitive (for most people)
to expect Complex(-27,0)**(1/n-odd) to return the real
root x1 only (i.e. (-3)(-3)(-3) = -27), so have it
act as Complex(-27,0).real (for n odd) be the default.
I guess complex variables aren’t called complex for nothing. ![:slight_smile: :slight_smile:](https://www.ruby-forum.com/images/emoji/apple/slight_smile.png?v=12)