Boost logo

Boost Users :

Subject: Re: [Boost-users] boost/multiprecision/float128
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2016-04-30 12:57:41


 

 

From: Boost-users [mailto:boost-users-bounces_at_[hidden]] On Behalf Of Cooper, Bridgette R D
Sent: 30 April 2016 12:32
To: boost-users_at_[hidden]
Subject: [Boost-users] boost/multiprecision/float128

 

 

I'm new to boost. I am trying to use the float128 type for calculating sqrts as a larger part of code, however I am not sure the
values obtained are accurate to float128 precision. I have tried running the example for printing log(2) found here, I find the same
for sqrt:

 

http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html

 

However, the value printed log(2) only agrees to 16 decimal places, i.e. double precision. The value I obtain is

0.693147180559945286226763982995180413 rather than 0.693147180559945309417232121458176575

 

I'm using:

 

g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15) with boost 1.57.0.

 

Any advice as to what I am doing incorrectly?

 

My compile line is:

 

g++ -I ~/$BOOSTLIB new.cpp -lquadmath -o new

 

You don't give your exact code but I suspect that you have fallen into what is an annoying (but unavoidable) pit that is eagerly
awaiting the unwary.

 

(Been there, done that - more than once!)

 

You need to ensure that *all* values processed really are float128 or other multiprecision types by construction or casting, for
example log(float128(2)).

 

(Otherwise computation will take place in double precision and only then be converted to float128 and printed, as you observe).

 

HTH

 

Paul

 

 

 



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net