mpf_class to double

Paul Zimmermann Paul.Zimmermann at
Sat Sep 4 14:48:59 CEST 2010


> And what I would like to do is something like this (in some sort of 
> pseudo code):
> void calc_sum (double *a, double *result, int l)
> {
>      // convert input values to high precision types... in whatever way...
>      mpf_class mpa[l];
>      mpf_class mpresult = 0.0;
>      for(int i=0; i<l; i++)
>          mpa[i]= a[i];
>      // evaluate sum with mpf types
>      for(int i=0; i<l; i++)
>          mpresult += mpa[i];
>      // convert result back to double
>      *result = mpf_to_double( mpresult );
> }
> Right now this fails mainly because I don't know how to do the 
> back-conversion from mpf to double.

see the mpf_get_d() function.

> But I would also like to know if this approach is intelligent at all. Or 
> would there be a nicer/better way to do this?

this approach seems good to me. Don't forget to set the precision of the mpf
numbers to a large value (I don't know how to do this with the C++ interface).

Paul Zimmermann

More information about the gmp-discuss mailing list