http://benji3up2kxewkqfcq7buxk2xd6zwy3zggnurkrm3l4cvwy2iipvyyad.onion/mirrors/gmpdoc/Efficiency.html
A call like mpz_mul(x,x,y) will, unless y is only one
limb, make a temporary copy of x before forming the result. Normally
that copying will only be a tiny fraction of the time for the multiply, so
this is not a particularly important consideration. mpz_set , mpq_set , mpq_set_num , mpf_set , etc, make
no attempt to recognise a copy of something to itself, so a call like mpz_set(x,x) will be wasteful.