From: "Älphä Blüë" Date: 2009-07-22T07:32:47+09:00 Subject: Standard Deviation question regarding EDOM errors Okay, Take a very close look at the two (one is a class, the other is a method): class Stdev def initialize(arr) @arr = arr @size = @arr.to_a.size end def sum @arr.inject {|a,b| a + b } end def product @arr.inject {|a,b| a * b } end def calculate Math.sqrt(((product - (sum * sum)/@size)/(@size-1))) end end def stddev(arr) size = arr.to_a.size product, sum = 0.0, 0.0 arr.each do |a| sum += a product += a*a end std = Math.sqrt(((product - (sum * sum)/size)/(size-1))) return std end Testing with both: a = [123.369, 68.6179] Stdev.new(a).calculate => Errno::EDOM: Domain error - sqrt stddev(a) => 38.7148740874228 Test a web calculator for the same thing: http://www.easycalculation.com/statistics/standard-deviation.php The method will pan out. So, to save suspense the reason why the class is erroring out is because the sqrt is being attempted on a negative number. Therefore, in order to continue to use that I would have to require 'complex' and the return values from complex return two values in an array. I'm just curious, why, given both of these being so very similar - the method passes but the class fails? -- Posted via http://www.ruby-forum.com/.