and just in case you need further convincing, this is the scariest
example i've ever seen. taken from Stefano Taschini's
http://intervals.rubyforge.org/
Take into consideration the rather innocent looking function
def f(x,y)
(333.75-x**2)* y**6 + x**2 * (11* x**2 * y**2-121 * y**4 -2) +
5.5 * y**8 + x/(2*y)
end
We can calculate it for some specific x and y,
f(77617.0,33096.0) # => 1.17260394005318
There is only one problem: this result is WRONG. The correct result can
be obtained by calculating separately the numerator and denominator of f
using integer arithmetic.
def f_num(x,y)
((33375- 100 * x**2)* y**6 +
100 * x**2 * (11* x**2 * y**2-121 * y**4 -2) +
550 * y**8) *
2*y + 100 *x
end
def f_den(x,y)
200*y
end
f_num(77617, 33096).to_f / f_den(77617, 33096).to_f
# => -0.827396059946821
_c
--
Posted via http://www.ruby-forum.com/.