Hi,
I see that mpn_mul() starts by checking for a square:
if (up == vp && un == vn)
{
mpn_sqr_n (prodp, up, un);
return prodp[2 * un - 1];
}
This is contrary to the gmp-philosophy "use special functions for special cases"
(for example mpn_mul_2exp).
Why is mpn_sqr_n not exported? Similarly, we might want a "sqr" function for
other classes (mpz, mpf, mpq).
Paul