マクロ定義 | |
#define | MAX(a, b) ( ((a)>(b))?(a):(b) ) |
#define | UINT_IS_2POW(u) ( ((u) & ((u)-1)) == 0 ) |
符号無し固定長整数が2の冪かどうかを判定. より詳しく... | |
関数 | |
size_t | digit_len_to_str_len (size_t len, digit_t r) |
多倍長整数の対数を概算. より詳しく... |
|
multiprec.h の 94 行で定義されています。 呼出 ymp_binary_sunzi, ymp_euclid_ex, ymp_modinv, ymp_odd_sqrt, と ymp_pow. |
|
符号無し固定長整数が2の冪かどうかを判定. 1を引くことで、下位の0のビット列及び最下位の1のビットが反転する
multiprec.h の 104 行で定義されています。 呼出 ymp_abs_clog2. |
|
多倍長整数の対数を概算. len個のdigit_tの列で表された多倍長整数nに対し、そのr進表記を格納するに十分な文字列の長さを返す
multiprec.c の 128 行で定義されています。
00129 { 00130 static const unsigned log_2_r_map[36+1] = { 00131 0, 0, 1, 1, 2, 2, 2, 2, /* 0-7 */ 00132 3, 3, 3, 3, 3, 3, 3, 3, /* 8-15 */ 00133 4, 4, 4, 4, 4, 4, 4, 4, /* 16-23 */ 00134 4, 4, 4, 4, 4, 4, 4, 4, /* 24-31 */ 00135 5, 5, 5, 5, 5 /* 32-36 */ 00136 }; 00137 00138 return len * DIGIT_BIT / log_2_r_map[r] + 1; 00139 } |