Exact division and mpf
Elias P. TSIGARIDAS
et at di.uoa.gr
Mon Nov 21 13:35:53 CET 2005
Torbjorn Granlund wrote:
> Paul.Zimmermann at loria.fr (Paul Zimmermann) writes:
> From: "Elias P. TSIGARIDAS" <et at di.uoa.gr>
> Can anyone tell me if I can assume exact division for mpf_class?
> For example can I assume that
> mpf_class( 6) / mpf_class( 3)
> will return mpf_class( 2) ?
> I don't know for mpf, but mpfr guarantees correct rounding, which implies
> that if a division is exact, you get the exact quotient. See mpfr.org for
> further details.
> Let me add that it also requires that that exact quotient fits
> into the declared mantissa precision. When dividing 6 by 3, you
> will always get 2, but dividing 6000000000 by 3 needs 31 bits,
> which will not be the case if the quotient variable was
> initialized using mpfr_init2(q,30);
> (Under similar conditions, also mpf does what you want.)
Thank you Torbjorn,
Unfortunately I learned this the hard way!
It took me the whole Sunday to figure out why I didn't get the correct
result for a division like the one you discribed.
So the first thing to do in order to use a library is to read the manual
Actually what I am doing is this:
I have some repeated operations with integers.
I figured out that if I use mpf instead of mpz
then my program is 2 times faster (at least),
of course I have to adopt the precision at every step, but you can not
have it all :-)
My operations involve exact division.
When I eliminate these divisions then my program is 4 times faster.
Thus it seems that the division is really slow compare to multiplication
at least when you use mpf.
Currently I am trying to make my program work with mpfr.
I will post my results in this maillist, if anyone is interesting
More information about the gmp-discuss