From: jzakiya Date: 2009-12-19T01:05:05+09:00 Subject: Re: Math errors On Dec 18, 10:51 am, jzakiya wrote: > On Dec 18, 4:52 am, "Dasson, Raghav" wrote: > > > jzakiya wrote: > > > (-3)**3 => -27 > > > > (-27)**(1/3.0)  give NaN instead of -3 > > > > All odd roots (1/3,1/5,1/7 etc) of negative numbers should give > > > negative root values, as above, but ruby (in irb) gives NaN (not a > > > number), even when I require 'complex' . > > > > Is this considered an error in Ruby? > > > I guess, you are right. THIS IS A 'MATH ERROR' in Ruby. > > > The ** method is not able to handle negative numbers raised to Floating points (that are not Integers)   > > This behavior was shown in ruby ree 1.8.6, 1.8.6, 1.8.7, 1.9.1 > > -27**1/3.0       => -9.0 > -27 ** 1/3.0     => -9.0 > -27 ** (1/3.0)   => -3.0 > -27**(1/3.0)     => -3.0 > (-27)**(1/3.0)   => NaN > (-27) ** (1/3.0) => NaN > > OK, the first two expression are evaluated as (-27**1)/3 => -9 > The second two are correct (what I expected). > But the last two, WHY?? And just to verify: (27)**(1/3.0) => 3.0 So Ruby is messing up parsing (-27)**(1/3.0)