mpz_sizeinbase and mpz_root
Kevin Ryde
user42@zip.com.au
Sat, 02 Nov 2002 10:00:07 +1000
Jason Moxham <J.L.Moxham@maths.soton.ac.uk> writes:
>
> int mpz_root (mpz_t x , mpz_t y , unsigned long k ) when k=2 does not call the
> sqrt fn's which are much faster than general k'th root , I suppose this
> could be added as small patch , if it was thought that the case k=2 is common
> enough ?
The general rule is that if an application expects a special case like
that very often it should call mpz_sqrt directly. But a root like
this is pretty slow anyway so maybe a test could be justified.
> same comment for mpz_sizeinbase(mpz_t x, unsigned long k) when k=2
> by using count_leading_zeros and not the bases[] tables , I was suprised that
> it was that much faster , in the current code we have an useless division by
> 1 , which the compiler doesn't recognize. The case k=2 must be fairly common
> as it can be used for log_base2 .
If you mean mpz_sizeinbase(x,2) from an application, that can be
recognised for gcc, but not otherwise.
If you mean internally to mpz_sizeinbase, well perhaps an inverse for
the divisor would help, sometimes, if we could be bothered setting
that up.