Stuff with the Perl Foundation. A couple of patches in the Perl core. A few CPAN modules. That about sums it up.
I suppose I should ask this in a Ruby forum, but since I'm so used to slinging other languages here
To find the Nth root of number is simple: raise the number to the reciprocal of N. For example, to find the cube root of 8:
$ perl -le 'print 8 ** (1/3)'
2
But you can't quite do that in Ruby:
$ ruby -e 'puts 8 ** (1/3)'
1
But this is a "feature", not a bug (*cough*) because the 1/3 is considered integer math and evaluates to 0, leaving you with 8 to the 0th power. Anything raised to the power of 0 results in 1. So far so good.
So to force floating point math, use a floating point number:
$ ruby -e 'puts 8 ** (1/3.0)'
2
And all is good. Except
Let's take the square root of 1:
$ ruby -e 'puts 1 ** (1/2.0)'
1.0
Now let's take the square root of -1:
$ ruby -e 'puts -1 ** (1/2.0)'
-1.0
Huh? The square root of -1 is imaginary (or i, if you want to be specific). What's going on here?
Yes, I know about Math.sqrt, which at least thoughtfully throws an exception rather than give an incorrect value:
$ ruby -e 'puts Math.sqrt(-1)'
-e:1:in `sqrt': Numerical argument out of domain - sqrt (Errno::EDOM)
from -e:1
Precedence (Score:2)
-1.0
simon@alibi ~ % ruby -e 'puts ( (-1) ** 0.5)'
NaN
Perl is better? (Score:1)
-1
Am I missing something here?
--fREW
http://blog.afoolishmanifesto.com
Re: (Score:1)
indeed you are:
C:\Users\burak>perl -MO=Deparse -le "print (-1) ** (1/2)"
BEGIN { $/ = "\n"; $\ = "\n"; }
print(-1) ** 0.5;
-e syntax OK
try this instead:
print( (-1) ** (1/2) )
Re: (Score:1)
--fREW
http://blog.afoolishmanifesto.com
Re: (Score:1)
$ ruby -e 'puts ((-1) ** (1/2.0))'NaN
Re: (Score:2)