Range#step with Float arguments differs from MRI
------------------------------------------------

                 Key: JRUBY-6133
                 URL: https://jira.codehaus.org/browse/JRUBY-6133
             Project: JRuby
          Issue Type: Bug
         Environment: --1.9
            Reporter: Martin Harriman
            Assignee: Thomas E Enebo


Range#step in MRI uses multiplication to step a floating-point value. 
Range#step in jruby uses repeated addition, which has significantly poorer 
error behavior and results in different values and even different numbers of 
iterations when compared with MRI.

For example:
{noformat}
1.0...55.6.step(18.2).to_a
{noformat}
In MRI, the result is a four-element array, with the final element just an 
epsilon less than 55.6. In jruby 1.7.0, the result is a three element array, 
terminating at 37.4.

As a rule of thumb, strength-reducing floating-point multiplication into 
repeated floating-point addition is a bad idea, as you will get much larger 
quantization error with the repeated addition (and it is not usually faster 
than floating-point multiplication).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to