メインページ   モジュール   データ構造   ファイル一覧   データフィールド   グローバル  

ユーティリティー
[多倍長整数]


マクロ定義

#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)
 多倍長整数の対数を概算. より詳しく...


マクロ定義の解説

#define MAX a,
     ( ((a)>(b))?(a):(b) )
 

multiprec.h94 行で定義されています。

呼出 ymp_binary_sunzi, ymp_euclid_ex, ymp_modinv, ymp_odd_sqrt, と ymp_pow.

#define UINT_IS_2POW      ( ((u) & ((u)-1)) == 0 )
 

符号無し固定長整数が2の冪かどうかを判定.

1を引くことで、下位の0のビット列及び最下位の1のビットが反転する

引数:
u  判定する整数

multiprec.h104 行で定義されています。

呼出 ymp_abs_clog2.


関数の解説

size_t digit_len_to_str_len size_t    len,
digit_t    r
 

多倍長整数の対数を概算.

len個のdigit_tの列で表された多倍長整数nに対し、そのr進表記を格納するに十分な文字列の長さを返す

引数:
len  digit_tの列の長さ
r  基数
事前条件:
2 <= r <= 36. 範囲外の場合、動作は不定
戻り値:
ceil(log_r(n))以上の自然数

multiprec.c128 行で定義されています。

参照 DIGIT_BIT, と digit_t.

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 }


YMPに対してTue Mar 16 19:23:52 2004に生成されました。 doxygen1.2.14 作者 Dimitri van Heesch, © 1997-2002