Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Nov 2013 08:38:32 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Steve Kargl <sgk@troutmask.apl.washington.edu>
Cc:        freebsd-numerics@FreeBSD.org
Subject:   Re: Representation of 128 bit floating point numbers in FreeBSD amd64 and Clang
Message-ID:  <20131101075253.D1002@besplex.bde.org>
In-Reply-To: <20131031143832.GA60432@troutmask.apl.washington.edu>
References:  <CAOgwaMs=NKfDpjOY9=5+KYFUdbzeMpxMF_nxZP21y8RTb_cR9w@mail.gmail.com> <20131031143832.GA60432@troutmask.apl.washington.edu>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
On Thu, 31 Oct 2013, Steve Kargl wrote:

> On Thu, Oct 31, 2013 at 09:27:34AM -0400, Mehmet Erol Sanliturk wrote:
>>
>> In FreeBSD amd64 and Clang ,
>> how can I represent 128 bits ( 34 digits ) variables ?

With difficulty, since it is not supported.

> Not sure it can be done with clang, but GCC supports
> a __float128 type.  GCC refers to this as its TCmode.
> gfortran, the Fortran compiler that supports REAL(16),
> uses __float128 internally.  I've never directly used
> __float128, so can't help beyond this.
>
> If you need 128-bits in C on ia32 or x86_64 hardware,
> you should probably look into using mpfr and mpc.

Even gcc-4.2.1 in FreeBSD generates code to use __float128,
but the support for it isn't compiled into libgcc for some
reason.

Why would anyone want to use 128-bit FP on x86?  It is emulated
similarly to on sparc64.  On sparc64, emulated 128-bit FP is about
100 times slower than hardware 64-bit FP.  The emulation is not
very good, but 128-bit FP is part of the ABI on sparc64 so I would
expect the emulation to give an even larger slowdown factor in
x86.

With 80-bit FP, you can't quite exactly count the number of atoms in
the universe, but you can count the world's GNP in cents for a thousand
years or so.  Extra accuracy can reduce problems from numerica
instability and rounding bugs, but a slowdown factor of 100 times is
a large price to pay for that.

Bruce



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?20131101075253.D1002>