Gcc46 and 128 Bit Floating Point

Steve Kargl sgk at troutmask.apl.washington.edu
Tue Feb 21 15:23:43 UTC 2012


On Tue, Feb 21, 2012 at 12:12:32AM -0800, Thomas D. Dean wrote:
> On 02/20/12 23:20, Steve Kargl wrote:
> 
> >float -------->  24 bit significand, 32 bit size.
> >double ------->  53 bit significand, 64 bit size.
> >long double -->  53 bit significand, 80 bit size, i386
> >long double -->  64 bit significand, 80 bit size, x86_64
> >long double -->  113 bit significand, 128 bit size, sparc64
> >__float128 --->  113 bit significand, 128 bit size, i386, x86_64
> >
> 
> Nice, if you are not working on my platform.  In my initial message,
> 
> From dmesg:
> CPU: Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz (4160.12-MHz K8-class CPU)
>   Origin = "GenuineIntel"  Id = 0x206d6  Family = 6  Model = 2d 
> Stepping = 6

I saw your initial message, and yes, I noted that you are
using an x86_64 class cpu.

> And, I also said the __float128 is likely to leave me with some code 
> that is orphaned.

As long as you use gcc 4.something or higher, you should have
access to __float128.  So, code won't be orphaned.  Now, if
you meant nonportable code, I agree.  If you need more precision
that C99's long double and portability, then use mpfr.

-- 
Steve


More information about the freebsd-amd64 mailing list