2013/4/25 naruse (Yui NARUSE) <naruse / airemix.jp>:
>
> Issue #8299 has been updated by naruse (Yui NARUSE).
>
>
> phasis68 (Heesob Park) wrote:
>> 2013/4/25 naruse (Yui NARUSE) <naruse / airemix.jp>:
>>  >
>>  > Issue #8299 has been updated by naruse (Yui NARUSE).
>>  >
>>  >
>>  > phasis68 (Heesob Park) wrote:
>>  >> 2013/4/25 naruse (Yui NARUSE) <naruse / airemix.jp>:
>>  >>  > Therefore use SSE2 rather than such workaround.
>>  >>
>>  >>  I'm not sure why you think SSE2 can fix this issue.
>>  >>
>>  >>  The ruby_strtod function used in converting string value to double
>>  >>  value requires double-precision (53-bit) rounding precision but
>>  >>  mingw32 gcc 4.5.2 have default 64-bit precision which higher than
>>  >>  other compilers.
>>  >>
>>  >>  So the patch lowers precision from 64 bit to 53 bit.
>>  >
>>  > double arithmetics with SSE2 is double-precision.
>>  > see also gcc's -mfpmath=sse option
>>  > http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/i386-and-x86_002d64-Options.html#index-march-959
>>
>>  I agree that SSE2 is the better solution for modern OS and modern compiler.
>>
>>  But SSE2 has more restrictions than x87.
>>  SSE2 is not supported on the following environment.
>>     Microsoft Visual C++ Compiler prior to Visual Studio .NET 2003.
>
> Use newer compiler.
The requirement in win32/README.win32 need to be modified.

>
>>     AMD CPUs prior to Athlon 64, including all Socket A-based CPUs
>>     Intel CPUs prior to Pentium 4
>
> Use -mfpmath=sse,387.
> As I wrote before, if you want to get the same result with x87 FPU _control87(_PC_53, _MCW_PC) is not sufficient.
> It needs to handle 15 bit exponent.

I don't want the same result with SSE2 and  x87 FPU.
The 15 bit exponent is not a matter of this issue.
The point is that ruby_strtod function requires 53-bit precision and
mingw32 4.5.2 compiler is 64-bit precision unlike other windows
compiler which is 53-bit precision.
I confirmed that _control87(_PC_53, _MCW_PC) patch works fine with
ruby 1.9.3 mingw32 gcc 4.5.2 version.

> If you want to do that, it is as hard as implementing strictfp of Java on x87.
> see also http://math.nist.gov/javanumerics/reports/jgfnwg-01.html
> http://www.shudo.net/java-grandprix99/strictfp/#JGNWG98-2 (Japanese)

You've gone too far from this issue.
The issuer wants the correct value of strtod function on the ruby
1.9.3 mingw32 version.
My patch is for mingw32 gcc compiler only.