Float error or a Format error ??
Paul Zimmermann
Paul.Zimmermann at loria.fr
Wed Oct 4 13:28:55 CEST 2006
> x=1.2
> mpf_pow_ui(result,x,22)
> mp_sprintf(stringVar,"%.30Ff",result)
> the displayed result will be:
> 55.206143891243641727800000000000
> while the true result must be :
> 55.2061438912436417593344
> using gmp-v4.2
> please explain
A possible explanation: whatever precision you use, 1.2 is not exactly
representable in radix 2, which is what mpf uses.
If you used mpf_set_d to set x to 1.2, what you entered in x is not 12/10,
but the closest 53-bit number, i.e. 5404319552844595/2^52.
Use mpf_set_str to get a more accurate string -> mpf conversion.
Together with the roundings done by mpf_pow_ui, this might explain what you
get.
Paul Zimmermann
More information about the gmp-discuss
mailing list