开发者

GMP variable's bit size

How to know the size of a declared variable in GMP??or how can we decide the size of an integer in GMP?

mpz_random(temp,1);

in manual it is given that this function allocates 1limb(=32bits for my comp) size to the "temp".... but it is having 9 digit number only.. SO i dont think t开发者_如何学运维hat 32 bit size number holds only 9 digits number..

So please help me to know the size of integer variable in GMP ..

thanks in adv..


mpz_sizeinbase(num, 2) will give you the size in 'used' bits.


32 bits (4 bytes) really can be used to store only 9 decimal digits

2^32 = 4 294 967 296

so only 9 full decimal digits here (the 10th is in interval from 0 up 4, so it is not full).

You can recompute this via logarithms:

log_10(2^32)

let's ask google

log base 10(2^32) = 9.63295986

Everything is correct.


You can check the number of limbs in a debugger. A GMP integer has the internal field '_mp_size' which is the count of the limbs used to hold the current value of the variable (0 is a special case: it's represented with _mp_size = 0). Here's an example I ran in Visual C++ (see my article How to Install and Run GMP on Windows Using MPIR):

mpz_set_ui(temp, 1073741824); //2^30, (_mp_size = 1)
mpz_mul(temp,temp,temp); //2^60 (_mp_size = 2)
mpz_mul(temp,temp,temp); //2^120 (_mp_size = 4)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜