データ構造 |
struct | multiprec |
| 多倍長整数を表す構造体. より詳しく...
|
マクロ定義 |
#define | DIGIT_BIT (sizeof(digit_t)*CHAR_BIT) |
| digit_tのビット数. より詳しく...
|
#define | DIGIT_MAX UINT_MAX |
| digit_tに格納できる最大値. より詳しく...
|
#define | DIGIT_HIGHEST_BIT ((digit_t)(1<<(DIGIT_BIT-1))) |
#define | DOUBLE_DIGIT_BIT (sizeof(double_digit_t)*CHAR_BIT) |
| double_digit_tのビット数. より詳しく...
|
#define | DOUBLE_DIGIT_MAX ULONGLONG_MAX |
| double_digit_tに格納できる最大値. より詳しく...
|
#define | HIGH_DIGIT(dd) ((digit_t)((dd) >> DIGIT_BIT)) |
| double_digit_tの上位部分のdigit_tを返す. より詳しく...
|
#define | LOW_DIGIT(dd) ((digit_t)(dd)) |
| double_digit_tの下位部分のdigit_tを返す. より詳しく...
|
#define | LOW_DIGIT_TO_HIGH_DIGIT(dd) ((dd) << DIGIT_BIT) |
| double_digit_tの下位部分を上位に移し、下位を0で埋める. より詳しく...
|
#define | MULTIPREC_RADIX (((double_digit_t)DIGIT_MAX)+1) |
| 多倍長整数の桁の基数. より詳しく...
|
#define | MULTIPREC_INITIALIZER {positive_sign, 0, 0, NULL} |
| struct multiprecの標準的な初期化指定子. より詳しく...
|
#define | MAX(a, b) ( ((a)>(b))?(a):(b) ) |
#define | UINT_IS_2POW(u) ( ((u) & ((u)-1)) == 0 ) |
| 符号無し固定長整数が2の冪かどうかを判定. より詳しく...
|
#define | YMP_ALLOCATE(result, type, count) |
| 動的メモリーを新規に確保. より詳しく...
|
#define | YMP_REALLOCATE(ptr, type, count) |
| 動的メモリーを再確保. より詳しく...
|
#define | YMP_FREE(ptr) ymp_free(ptr) |
| 動的メモリーを解放. より詳しく...
|
#define | YMP_TEMP_ALLOCATE(result, type, count) |
| 関数ローカルな動的メモリーを新規に確保. より詳しく...
|
#define | YMP_ALLOC_DIGITS(self, new_len) |
| new_len要素のdigit_tの列を確保して、先頭ポインタを self->digitsに設定. より詳しく...
|
#define | YMP_REALLOC_DIGITS(self, new_len) |
| new_len要素のdigit_tの列を再確保して、先頭ポインタを self->digitsに設定. より詳しく...
|
#define | YMP_FREE_DIGITS(self) |
| self->digitsを解放. より詳しく...
|
#define | ymp_alloca_initialize(self, new_len) |
| 多倍長整数を、`alloca()により'一定のdigit列を確保した状態で初期化し、0を代入. より詳しく...
|
#define | ymp_assign_zero(self) (void)((self)->used = 0) |
| 多倍長整数に0を代入. より詳しく...
|
#define | ymp_div(quotient, self, other) ymp_divmod((quotient), NULL, (self), (other)) |
| 多倍長整数の整除. より詳しく...
|
#define | ymp_mod(remainder, self, other) ymp_divmod(NULL, (remainder), (self), (other)) |
| 多倍長整数の剰余計算. より詳しく...
|
#define | ymp_div_digit(quotient, self, other) (void)ymp_divmod_digit((quotient), (self), (other)) |
| 多倍長整数のdigit_tによる整除. より詳しく...
|
#define | ymp_mod_digit(self, other) ymp_divmod_digit(NULL, (self), (other)) |
| 多倍長整数のdigit_tによる剰余計算. より詳しく...
|
#define | ymp_is_divisible(self, other) ymp_div_if_divisible(NULL, (self), (other)) |
| 多倍長整数が割り切れるかを判定. より詳しく...
|
#define | ymp_is_divisible_digit(self, other) ymp_div_if_divisible_digit(NULL, (self), (other)) |
| 多倍長整数がdigit_tで割り切れるかを判定. より詳しく...
|
#define | ymp_is_odd(self) !ymp_is_even((self)) |
| 多倍長整数が奇数かどうかを判定. より詳しく...
|
型定義 |
typedef unsigned | digit_t |
| 多倍長整数の各桁を表す整数型. より詳しく...
|
typedef unsigned long long | double_digit_t |
| digit_tの2倍以上のビット数を持つ整数型. より詳しく...
|
typedef multiprec * | mp_ref_t |
| struct multiprecヘの参照(ポインタ). より詳しく...
|
typedef const struct multiprec * | mp_cref_t |
| struct multiprecヘのconst参照(constポインタ). より詳しく...
|
列挙型 |
enum | mp_sign_t { positive_sign = 0,
negative_sign = 1
} |
| 多倍長整数の符号. より詳しく...
|
関数 |
size_t | digit_len_to_str_len (size_t len, digit_t r) |
| 多倍長整数の対数を概算. より詳しく...
|
void | ymp_initialize (mp_ref_t self) |
| 多倍長整数を標準初期化指定子の値で初期化. より詳しく...
|
void | ymp_destroy (mp_ref_t self) |
| 多倍長整数を破棄し、digit列を解放する。. より詳しく...
|
void | ymp_reinitialize (mp_ref_t self) |
| 初期化済の多倍長整数を再び初期状態にする。. より詳しく...
|
void | ymp_initialize_by_mp (mp_ref_t self, mp_cref_t other) |
| ディープコピーにより多倍長整数を初期化. より詳しく...
|
void | ymp_reserve_and_initialize_by_digit (mp_ref_t self, size_t len, digit_t d) |
| 多倍長整数を、一定のdigit列を確保した状態で初期化し、digit_tを代入. より詳しく...
|
void | ymp_reserve_and_initialize (mp_ref_t self, size_t len) |
| 多倍長整数を、一定のdigit列を確保した状態で初期化し、0を代入. より詳しく...
|
void | ymp_initialize_by_array (mp_ref_t self, size_t len, const digit_t *array) |
| 多倍長整数をdigit_tの列により初期化. より詳しく...
|
void | ymp_initialize_by_digit (mp_ref_t self, digit_t d) |
| 多倍長整数を、digit_tを代入して初期化. より詳しく...
|
void | ymp_initialize_by_string (mp_ref_t self, const char *text, char **endptr, unsigned radix) |
| 文字列形式で表された整数値でstruct multiprecを初期化. より詳しく...
|
void | ymp_initialize_by_char (mp_ref_t self, signed char val) |
| 多倍長整数に signed char 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_short (mp_ref_t self, short val) |
| 多倍長整数に short 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_int (mp_ref_t self, int val) |
| 多倍長整数に int 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_long (mp_ref_t self, long val) |
| 多倍長整数に long 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_uchar (mp_ref_t self, unsigned char val) |
| 多倍長整数に unsigned char 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_ushort (mp_ref_t self, unsigned short val) |
| 多倍長整数に unsigned short 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_uint (mp_ref_t self, unsigned val) |
| 多倍長整数に unsigned int 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_ulong (mp_ref_t self, unsigned long val) |
| 多倍長整数に unsigned long 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_intmax (mp_ref_t self, intmax_t val) |
| 多倍長整数に intmax_t 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_uintmax (mp_ref_t self, uintmax_t val) |
| 多倍長整数に uintmax_t 型から値を代入して初期化. より詳しく...
|
void | ymp_initialize_by_double (mp_ref_t self, double val) |
| 多倍長整数にdouble型から値を代入して初期化. より詳しく...
|
mp_ref_t | ymp_dup (mp_cref_t orig) |
| ディープコピーにより多倍長整数を新規に生成. より詳しく...
|
void | ymp_reserve (mp_ref_t self, size_t len) |
| 多倍長整数が、少なくとも len 個からなるdigit列を持つことを保証する. より詳しく...
|
void | ymp_cut_down (mp_ref_t self) |
| 多倍長整数が保持している余分なdigitを(可能なら)解放する。. より詳しく...
|
void | ymp_assign_abs (mp_ref_t self, mp_cref_t other) |
| 多倍長整数の絶対値をディープコピーにより代入. より詳しく...
|
void | ymp_assign_abs_digit (mp_ref_t self, digit_t other) |
| 多倍長整数の絶対値をdigit_tから代入. より詳しく...
|
void | ymp_assign_abs_array (mp_ref_t self, size_t len, const digit_t *array) |
| 多倍長整数にdigit_tの列から絶対値を代入. より詳しく...
|
void | ymp_assign (mp_ref_t self, mp_cref_t other) |
| 多倍長整数の値をディープコピーにより代入. より詳しく...
|
void | ymp_assign_digit (mp_ref_t self, digit_t other) |
| 多倍長整数の値をdigit_tから代入. より詳しく...
|
void | ymp_assign_array (mp_ref_t self, size_t len, const digit_t *array) |
| 多倍長整数にdigit_tの列から代入. より詳しく...
|
void | ymp_assign_string (mp_ref_t self, const char *text, char **endptr, unsigned radix) |
| 文字列形式で表された整数値をstruct multiprecに代入. より詳しく...
|
void | ymp_assign_char (mp_ref_t self, signed char val) |
| 多倍長整数に signed char 型から値を代入. より詳しく...
|
void | ymp_assign_short (mp_ref_t self, short val) |
| 多倍長整数に short 型から値を代入. より詳しく...
|
void | ymp_assign_int (mp_ref_t self, int val) |
| 多倍長整数に int 型から値を代入. より詳しく...
|
void | ymp_assign_long (mp_ref_t self, long val) |
| 多倍長整数に long 型から値を代入. より詳しく...
|
void | ymp_assign_uchar (mp_ref_t self, unsigned char val) |
| 多倍長整数に unsigned char 型から値を代入. より詳しく...
|
void | ymp_assign_ushort (mp_ref_t self, unsigned short val) |
| 多倍長整数に unsigned short 型から値を代入. より詳しく...
|
void | ymp_assign_uint (mp_ref_t self, unsigned val) |
| 多倍長整数に unsigned int 型から値を代入. より詳しく...
|
void | ymp_assign_ulong (mp_ref_t self, unsigned long val) |
| 多倍長整数に unsigned long 型から値を代入. より詳しく...
|
void | ymp_assign_intmax (mp_ref_t self, intmax_t val) |
| 多倍長整数に intmax_t 型から値を代入. より詳しく...
|
void | ymp_assign_uintmax (mp_ref_t self, uintmax_t val) |
| 多倍長整数に uintmax_t 型から値を代入. より詳しく...
|
void | ymp_assign_double (mp_ref_t self, double val) |
| 多倍長整数にdouble型から値を代入. より詳しく...
|
void | ymp_assign_2exp (mp_ref_t self, size_t pow) |
| 多倍長整数に2の冪を代入. より詳しく...
|
void | ymp_swap (mp_ref_t self, mp_ref_t other) |
| 多倍長整数の値を交換. より詳しく...
|
size_t | ymp_rshiftabs (digit_t *result, const digit_t *source, size_t len, size_t width) |
| 多倍長の自然数に対し、右に向かってビットシフトを行なう。. より詳しく...
|
size_t | ymp_lshiftabs (digit_t *result, const digit_t *source, size_t len, size_t width) |
| 多倍長の自然数に対し、左に向かってビットシフトを行なう。. より詳しく...
|
size_t | ymp_addabs (digit_t *result, const digit_t *lhs, const digit_t *rhs, size_t lhs_len, size_t rhs_len) |
| digit_tの列で表されている絶対値の和を求める. より詳しく...
|
size_t | ymp_subabs (digit_t *result, const digit_t *lhs, const digit_t *rhs, size_t lhs_len, size_t rhs_len) |
| digit_tの列で表されている絶対値の差を求める. より詳しく...
|
size_t | ymp_mulabs (digit_t *result, const digit_t *lhs, const digit_t *rhs, size_t lhs_len, size_t rhs_len) |
| digit_tの列で表されている絶対値の積を求める. より詳しく...
|
size_t | ymp_mulabs_digit (digit_t *result, const digit_t *lhs, digit_t rhs, size_t lhs_len) |
| digit_tの列で表されている絶対値にdigit_tを掛ける. より詳しく...
|
size_t | ymp_modmulabs (digit_t *result, const digit_t *lhs, const digit_t *rhs, const digit_t *modulus, size_t lhs_len, size_t rhs_len, size_t modulus_len) |
| 多倍長自然数の積の剰余を求める. より詳しく...
|
size_t | ymp_modmulabs_2exp (digit_t *result, const digit_t *lhs, const digit_t *rhs, size_t pow, size_t lhs_len, size_t rhs_len) |
| 多倍長自然数の積の、2の冪による剰余を求める. より詳しく...
|
size_t | ymp_modabs_2exp (digit_t *result, const digit_t *self, size_t len, size_t pow) |
| 多倍長自然数の2の冪乗による剰余. より詳しく...
|
size_t | ymp_divmodabs (digit_t *quotient, digit_t *remainder, const digit_t *lhs, const digit_t *rhs, size_t lhs_len, size_t rhs_len) |
| 多倍長自然数の除算. より詳しく...
|
digit_t | ymp_divmodabs_digit (digit_t *quotient, const digit_t *lhs, digit_t rhs, size_t lhs_len) |
| 多倍長の自然数をdigit_tで割る. より詳しく...
|
size_t | ymp_modpowabs (digit_t *result, const digit_t *source, const digit_t *modulus, const digit_t *pow, size_t source_len, size_t modulus_len, size_t pow_len) |
| 多倍長自然数の冪の剰余を求める(冪指数は多倍長). より詳しく...
|
size_t | ymp_modpowabs_z (digit_t *result, const digit_t *source, const digit_t *modulus, size_t source_len, size_t modulus_len, size_t pow) |
| 多倍長自然数の冪の剰余を求める(冪指数はsize_t). より詳しく...
|
size_t | ymp_modpowabs_2exp_z (digit_t *result, const digit_t *source, size_t len, size_t emod, size_t pow) |
| 多倍長の自然数の冪の、2の冪による剰余を求める(冪指数はsize_t). より詳しく...
|
size_t | ymp_powabs (digit_t *result, const digit_t *source, size_t source_len, size_t pow) |
| 多倍長自然数の冪 (冪指数はsize_t). より詳しく...
|
void | ymp_neg (mp_ref_t result, mp_cref_t orig) |
| 多倍長整数の符号反転. より詳しく...
|
void | ymp_add (mp_ref_t result, mp_cref_t self, mp_cref_t other) |
| 多倍長整数の加算. より詳しく...
|
void | ymp_sub (mp_ref_t result, mp_cref_t self, mp_cref_t other) |
| 多倍長整数の減算. より詳しく...
|
void | ymp_add_digit (mp_ref_t result, mp_cref_t self, digit_t other) |
| 多倍長整数にdigit_tを足す. より詳しく...
|
void | ymp_sub_digit (mp_ref_t result, mp_cref_t self, digit_t other) |
| 多倍長整数からdigit_tを引く. より詳しく...
|
void | ymp_mul (mp_ref_t result, mp_cref_t self, mp_cref_t other) |
| 多倍長整数同士を掛ける. より詳しく...
|
void | ymp_mul_digit (mp_ref_t result, mp_cref_t self, digit_t other) |
| 多倍長整数にdigit_tを掛ける. より詳しく...
|
void | ymp_modmul (mp_ref_t result, mp_cref_t self, mp_cref_t other, mp_cref_t modulus) |
| 多倍長整数の積の剰余を求める. より詳しく...
|
void | ymp_modmul_2exp (mp_ref_t result, mp_cref_t self, mp_cref_t other, size_t pow) |
| 多倍長自然数の積の、2の冪による剰余を求める. より詳しく...
|
void | ymp_mul_2exp (mp_ref_t result, mp_cref_t self, size_t pow) |
| 多倍長整数を2の冪乗倍する. より詳しく...
|
void | ymp_div_2exp (mp_ref_t result, mp_cref_t self, size_t pow) |
| 多倍長整数を2の冪乗で割る. より詳しく...
|
void | ymp_mod_2exp (mp_ref_t result, mp_cref_t self, size_t pow) |
| 多倍長整数を2の冪乗で割った剰余. より詳しく...
|
void | ymp_divmod (mp_ref_t quotient, mp_ref_t remainder, mp_cref_t self, mp_cref_t other) |
| 多倍長整数の除算. より詳しく...
|
digit_t | ymp_divmod_digit (mp_ref_t quotient, mp_cref_t self, digit_t other) |
| 多倍長整数の、digit_tによる除算. より詳しく...
|
int | ymp_div_if_divisible (mp_ref_t quotient, mp_cref_t self, mp_cref_t other) |
| 多倍長整数を、もし可能なら割る. より詳しく...
|
int | ymp_div_if_divisible_digit (mp_ref_t quotient, mp_cref_t self, digit_t other) |
| 多倍長整数をdigit_tで、もし可能なら割る. より詳しく...
|
void | ymp_pow (mp_ref_t result, mp_cref_t self, size_t pow) |
| 多倍長整数の冪 (冪指数はsize_t). より詳しく...
|
void | ymp_modpow (mp_ref_t result, mp_cref_t self, mp_cref_t modulus, mp_cref_t pow) |
| 多倍長整数の冪の剰余を求める(冪指数は多倍長). より詳しく...
|
void | ymp_modpow_z (mp_ref_t result, mp_cref_t self, mp_cref_t modulus, size_t pow) |
| 多倍長整数の冪の剰余を求める(冪指数はsize_t). より詳しく...
|
void | ymp_modpow_2exp_z (mp_ref_t result, mp_cref_t self, size_t emod, size_t pow) |
| 多倍長整数の冪の、2の冪による剰余を求める(冪指数はsize_t). より詳しく...
|
void | ymp_iroot (mp_ref_t result, mp_cref_t self, size_t pow) |
| 多倍長整数の冪乗根の整数部分. より詳しく...
|
void | ymp_euclid (mp_ref_t g, mp_cref_t a, mp_cref_t b) |
| 多倍長整数の最小公倍数を計算. より詳しく...
|
void | ymp_euclid_ex (mp_ref_t g, mp_ref_t s, mp_ref_t t, mp_cref_t a, mp_cref_t b) |
| 拡張Euclid互除法を行なう. より詳しく...
|
void | ymp_multi_euclid (mp_ref_t result, size_t len, const struct multiprec *ary) |
int | ymp_modinv (mp_ref_t result, mp_cref_t self, mp_cref_t modulus) |
| 剰余環Z/rZ上の逆元. より詳しく...
|
int | ymp_binary_sunzi (mp_ref_t result, const mp_cref_t remainders[2], const mp_cref_t moduli[2]) |
| 孫子(中国)の剰余定理の解を求める. より詳しく...
|
int | ymp_proot (mp_ref_t result, mp_cref_t self, size_t pow) |
| Perfect powerの冪根を求める. より詳しく...
|
int | ymp_is_perfect_power (mp_cref_t self) |
| Perfect powerかどうかを判定. より詳しく...
|
void | ymp_dump (FILE *fp, mp_cref_t mz) |
| 多倍長整数の内部状態をダンプ. より詳しく...
|
int | ymp_print_hex (FILE *fp, mp_cref_t mz) |
| 多倍長整数を16進表記で簡易出力. より詳しく...
|
int | ymp_snprint (char *buf, size_t len, mp_cref_t mz, digit_t radix) |
| 多倍長整数をr進表記で文字列に出力. より詳しく...
|
int | ymp_fprint (FILE *fp, mp_cref_t mz, digit_t radix) |
| 多倍長整数をr進表記でファイルに出力. より詳しく...
|
int | ymp_compare_abs (mp_cref_t lhs, mp_cref_t rhs) |
| 多倍長整数の絶対値同士を大小比較する. より詳しく...
|
int | ymp_compare (mp_cref_t lhs, mp_cref_t rhs) |
| 多倍長整数同士を大小比較する. より詳しく...
|
int | ymp_compare_digit (mp_cref_t lhs, digit_t rhs) |
| 多倍長整数とdigit_tを大小比較する. より詳しく...
|
int | ymp_is_zero (mp_cref_t self) |
| 多倍長整数が0かどうかを判定. より詳しく...
|
int | ymp_is_even (mp_cref_t self) |
| 多倍長整数が偶数かどうかを判定. より詳しく...
|
size_t | ymp_ilog2 (mp_cref_t self) |
| int( log_2 |n| ). より詳しく...
|
size_t | ymp_abs_clog2 (const digit_t *digits, size_t len) |
| ceil ( log_2 |n| ). より詳しく...
|
変数 |
void *(* | ymp_malloc )(size_t size) |
| 動的メモリー確保. より詳しく...
|
void *(* | ymp_realloc )(void *pv_mem, size_t size) |
| 動的メモリー再配置. より詳しく...
|
void(* | ymp_free )(void *pv_mem) |
| メモリー解放. より詳しく...
|
void(* | ymp_warning )(const char *format,...) |
| 警告レベルのメッセージを出力するための関数へのポインタ. より詳しく...
|
void(* | ymp_error )(const char *format,...) |
| エラーメッセージを出力するための関数へのポインタ. より詳しく...
|
void(* | ymp_fatal )(const char *format,...) |
| 致命的エラーを処理するための関数へのポインタ. より詳しく...
|
void(* | ymp_alloc_error )(const char *psz_msg, size_t size) |
| メモリー確保の失敗を捕捉する関数へのポインタ. より詳しく...
|