http://msdn.microsoft.com/en-us/library/e9b52ceh.aspx

I think three issues are conflated:

1 long double size is 80 bits in mingw and 64 bits in VC.

2 The mask 0x27F will set the 80-bit extended computation precision,
_PC_64 (64/80)
and not _PC_53 (53/64) computation precision. This is internal FPU
computation precision regardless the external representation size.

3 The exceptions Carl refers are disabled by setting the _MCW_EM mask,
mostly 0x1F of the 0x27F mentioned. This is independent the computation
precision or long double size.

see also
http://www.exploringbinary.com/when-doubles-dont-behave-like-doubles/



2014-11-23 11:08 GMT+02:00 Kai Tietz <ktiet...@googlemail.com>:

> 2014-11-23 9:17 GMT+01:00 Ozkan Sezer <seze...@gmail.com>:
> > On 11/12/14, Carl Kleffner <cmkleff...@gmail.com> wrote:
> >> Hi,
> >>
> >> during tests with my mingw builds variant mingw-w64-for-python
> >> <https://bitbucket.org/carlkl/mingw-w64-for-python/downloads> I
> stumpled
> >> upon a flaw in mingw-w64 FPU handling on startup. This is issued at
> >> mingw-w64 builds of numpy <https://github.com/numpy/numpy/issues/5194>
> and
> >> test
> >> failures when building win32 binaries with mingw based on gcc 4.8
> >> <https://github.com/numpy/numpy/issues/4909>. The reason for this
> >> behaviour: CRT_fp10.o (part of libmingw32.a) sets the FPU control word
> to
> >> extended precision on startup as per default. This can be overwritten by
> >> additionally linking CRT_fp8.o, but this is documented elsewhere
> >> (floath.h). As far I can see, this behaviour in mingw-w64 inherits from
> the
> >> Mingw32 codebase, but I'm not sure.
> >>
> >> There seems to be a consense, that 027f should be the standard for
> setting
> >> the FPU control word. Otherwise it gets into your way, see i.e.  Random
> and
> >> unexpected EXCEPTION_FLT_DIVIDE_BY_ZERO and
> >> EXCEPTION_FLT_INVALID__OPERATION
> >> <
> http://blogs.msdn.com/b/dougste/archive/2008/11/12/random-and-unexpected-exception-flt-divide-by-zero-and-exception-flt-invalid-operation.aspx
> >
> >>
> >> Is there some code in mingw.w64 that depends on extended precision as a
> >> default value? Otherwise this should be fixed in the mingw-w64 codebase
> >> IMHO.
> >>
> >> Regards
> >>
> >> Carl
> >
> > PING ?
> >
> > --
> > O.S.
>
> Well, there is AFAIK.  We have the 'long double' support, which is
> actually using 80-bit extended-mode x87 FPU,
>
> So, not sure if need to keep it for this.
>
> Kai
>
>
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
>
> http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
> _______________________________________________
> Mingw-w64-public mailing list
> Mingw-w64-public@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to