[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>

Bug #3231: Digest Does Not Build

19 messages 2010/05/01

[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>

Feature #3232: Loops (while/until) should return last statement value if any, like if/unless

9 messages 2010/05/01

[#29997] years in Time.utc — Xavier Noria <fxn@...>

Does anyone have a precise statement about the years supported by

13 messages 2010/05/04

[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>

Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly

9 messages 2010/05/05

[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>

Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88

10 messages 2010/05/13

[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>

Currently with 1.9.x and tk 8.5,the following occurs

12 messages 2010/05/22

[ruby-core:30513] [Bug #3365] floats revisited (see bug 1841)

From: Roberto Tomás Collins McCarthy <redmine@...>
Date: 2010-05-30 09:41:44 UTC
List: ruby-core #30513
Bug #3365: floats revisited (see bug 1841)
http://redmine.ruby-lang.org/issues/show/3365

Author: Roberto Tom叩s Collins McCarthy
Status: Open, Priority: Normal
ruby -v: ruby 1.9.1p378 (2010-01-10 revision 26273) [powerpc-linux]

someone posted that the float errors were just fine by them, referring to IEEE 754. I suggest visiting that standard yourself before closing the bug. If you look at the bug as reported, there is a rounding error on the 16th digit. IEEE 754 provides precision through 16 digits on doubles (binary64), the first rounding (eg, error) can only occur at the 17th digit.

I can confirm on my system that C does not produce the same results as ruby in this regard:
bash$ gcc -o fp fp.c && ./fp && ruby -e 'puts "\nfp.c\n揃揃揃揃揃揃\n"' && cat fp.c && ruby -e 'puts "\nruby #{RUBY_VERSION}: #{100.0 - 91.6}"'
System double representaiton: 8.400000e+00
8.40000000000000568434188608080148696899414062500000e+00
8.40000000000000568434188608080148696899414062500000e+00
sizeof doubles 8
sizeof long doubles 16

fp.c
揃揃揃揃揃揃
#include <stdio.h>
#include <math.h>

int main(){
 double cien = 100.0;
 double frac = 91.6;
 long double ciento = 100.0;
 long double fract = 91.6;
 printf("System double representaiton: %e\n", cien - frac);
 printf("%.50e\n", cien - frac);
 printf("%.50Le\n", ciento - fract);

 printf("sizeof doubles %d\n", sizeof(cien));
 printf("sizeof long doubles %d\n", sizeof(ciento));
 return 0;
}
ruby 1.9.1: 8.40000000000001


independently of whether ruby would or would not conform to IEEE754 the fact that C does not see doubles the same as ruby can be seen as a bug. as can the fact that right now elementary math any 2nd grader could expect to use with ruby can fail (100.0 - 91.6 == 8.4).


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next