マクロ定義 | |
#define | to_sign_check(self, val) |
#define | not_to_sign_check(self, val) (void)(self->sign = positive_sign) |
#define | do_assign_integral_value(type, self, val, allocator, sign_check) |
#define | define_ymp_initialize_integral_type(type, postfix, sign_check) |
#define | do_assign_floating_value(type, sys_suffix, funcname, allocator) |
#define | ymp_alloca_initialize(self, new_len) |
多倍長整数を、`alloca()により'一定のdigit列を確保した状態で初期化し、0を代入. より詳しく... | |
関数 | |
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_initialize_by_digit (mp_ref_t self, digit_t d) |
多倍長整数を、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_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 int 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_initialize_by_string (mp_ref_t self, const char *psz, char **endptr, unsigned radix) |
文字列形式で表された整数値でstruct multiprecを初期化. より詳しく... |
|
値: if (val >= 0) \ { \ self->sign = positive_sign; \ } \ else \ { \ self->sign = negative_sign; \ val = -val; \ } construct.c の 136 行で定義されています。 呼出 ymp_assign_char, ymp_assign_int, ymp_assign_intmax, ymp_assign_long, ymp_assign_short, ymp_initialize_by_char, ymp_initialize_by_int, ymp_initialize_by_intmax, ymp_initialize_by_long, ymp_initialize_by_short, と ymp_initialize_by_uintmax. |
|
|
値: static const size_t len \ = sizeof(type)/sizeof(digit_t)+!!(sizeof(type)%sizeof(digit_t)); \ size_t i; \ \ sign_check(self, val); \ allocator(self, len); \ \ for (i=0; val; ++i) \ { \ self->digits[i] = (digit_t)val & DIGIT_MAX; \ val >>= DIGIT_BIT; \ } \ self->used = i; construct.c の 168 行で定義されています。 |
|
値: \ void ymp_initialize_by_##postfix(mp_ref_t self, type val) \ { \ do_assign_integral_value(type, self, val, YMP_ALLOC_DIGITS, sign_check); \ } construct.c の 192 行で定義されています。 |
|
construct.c の 218 行で定義されています。 |
|
値: do { \ (self)->sign = positive_sign; \ (self)->len = (self)->used = 0; \ YMP_TEMP_ALLOCATE((self)->digits, digit_t, (new_len)); \ (self)->len = (new_len); \ } while (0)
multiprec.h の 276 行で定義されています。 呼出 ymp_binary_sunzi, ymp_euclid_ex, ymp_iroot, ymp_is_perfect_power, ymp_modinv, ymp_nsqrt_mod2exp, ymp_odd_root, ymp_odd_sqrt, と ymp_proot. |
|
多倍長整数を標準初期化指定子の値で初期化. 初期化されたselfは値としては0である。 MULTIPREC_INITIALIZERによる初期化と同じ
construct.c の 20 行で定義されています。
00021 { 00022 static const struct multiprec prototype = MULTIPREC_INITIALIZER; 00023 memcpy(self, &prototype, sizeof(struct multiprec)); 00024 } |
|
多倍長整数を破棄し、digit列を解放する。.
construct.c の 33 行で定義されています。 参照 YMP_FREE_DIGITS.
00034 { 00035 YMP_FREE_DIGITS(self); 00036 } |
|
初期化済の多倍長整数を再び初期状態にする。. したがって、値としては0となる。
construct.c の 46 行で定義されています。 参照 ymp_destroy, と ymp_initialize.
00047 { 00048 ymp_destroy(self); 00049 ymp_initialize(self); 00050 } |
|
ディープコピーにより多倍長整数を初期化.
construct.c の 61 行で定義されています。 参照 digit_t, multiprec::digits, multiprec::len, mp_cref_t, multiprec::used, と YMP_ALLOC_DIGITS.
|
|
多倍長整数を、一定のdigit列を確保した状態で初期化し、digit_tを代入.
construct.c の 76 行で定義されています。 参照 digit_t, multiprec::digits, positive_sign, multiprec::sign, multiprec::used, と YMP_ALLOC_DIGITS.
00077 { 00078 self->sign = positive_sign; 00079 YMP_ALLOC_DIGITS(self, len); 00080 self->used = 1; 00081 self->digits[0] = d; 00082 } |
|
多倍長整数を、digit_tを代入して初期化.
construct.c の 91 行で定義されています。 参照 digit_t, と ymp_reserve_and_initialize_by_digit.
00092 { 00093 ymp_reserve_and_initialize_by_digit(self, 1, d); 00094 } |
|
多倍長整数を、一定のdigit列を確保した状態で初期化し、0を代入.
construct.c の 103 行で定義されています。 参照 ymp_reserve_and_initialize_by_digit.
00104 { 00105 ymp_reserve_and_initialize_by_digit(self, len, 0); 00106 } |
|
多倍長整数をdigit_tの列により初期化.
construct.c の 118 行で定義されています。 参照 digit_t, multiprec::digits, positive_sign, multiprec::sign, multiprec::used, と YMP_ALLOC_DIGITS.
00119 { 00120 self->sign = positive_sign; 00121 self->used = len; 00122 YMP_ALLOC_DIGITS(self, len); 00123 memcpy(self->digits, array, len); 00124 } |
|
多倍長整数に signed char 型から値を代入して初期化.
construct.c の 204 行で定義されています。 参照 to_sign_check.
00223 { \ |
|
多倍長整数に short 型から値を代入して初期化.
construct.c の 205 行で定義されています。 参照 to_sign_check.
00223 { \ |
|
多倍長整数に int 型から値を代入して初期化.
construct.c の 206 行で定義されています。 参照 to_sign_check.
00223 { \ |
|
多倍長整数に long 型から値を代入して初期化.
construct.c の 207 行で定義されています。 参照 to_sign_check.
00223 { \ |
|
多倍長整数に unsigned char 型から値を代入して初期化.
construct.c の 208 行で定義されています。
00223 { \ |
|
多倍長整数に unsigned short 型から値を代入して初期化.
construct.c の 209 行で定義されています。
00223 { \ |
|
多倍長整数に unsigned int 型から値を代入して初期化.
construct.c の 210 行で定義されています。
00223 { \ |
|
多倍長整数に unsigned long 型から値を代入して初期化.
construct.c の 211 行で定義されています。
00223 { \ |
|
多倍長整数に intmax_t 型から値を代入して初期化.
construct.c の 213 行で定義されています。 参照 to_sign_check.
00223 { \ |
|
多倍長整数に uintmax_t 型から値を代入して初期化.
construct.c の 214 行で定義されています。 参照 to_sign_check.
00223 { \ |
|
多倍長整数にdouble型から値を代入して初期化. double型の値の整数部分が代入される。
construct.c の 262 行で定義されています。 参照 do_assign_floating_value, と YMP_ALLOC_DIGITS.
00263 { 00264 do_assign_floating_value(double,, "ymp_initialize_by_double", YMP_ALLOC_DIGITS); 00265 } |
|
ディープコピーにより多倍長整数を新規に生成.
construct.c の 275 行で定義されています。 参照 mp_cref_t, ymp_alloc_error, ymp_initialize_by_mp, と ymp_malloc.
00276 { 00277 struct multiprec *p = ymp_malloc(sizeof(struct multiprec)); 00278 if (!p) 00279 ymp_alloc_error("can't dup struct multiprec", sizeof(struct multiprec)); 00280 00281 ymp_initialize_by_mp(p, orig); 00282 return p; 00283 } |
|
多倍長整数が、少なくとも len 個からなるdigit列を持つことを保証する. 多倍長整数がlen個以上のdigitを現在保持している場合は、何もしない。
construct.c の 295 行で定義されています。 参照 multiprec::len, と YMP_REALLOC_DIGITS.
00296 { 00297 if (self->len < len) YMP_REALLOC_DIGITS(self, len); 00298 } |
|
多倍長整数が保持している余分なdigitを(可能なら)解放する。. 解放によりself->digits[]の長さが変化したときにはself->lenは適切に設定される
construct.c の 310 行で定義されています。 参照 multiprec::used, と YMP_REALLOC_DIGITS.
00311 { 00312 YMP_REALLOC_DIGITS(self, self->used); 00313 } |
|
文字列形式で表された整数値でstruct multiprecを初期化. 引数のの意味はstrtol(), strtoul()と同じ
construct_str.c の 141 行で定義されています。 参照 ymp_assign_string, と ymp_initialize.
00143 { 00144 ymp_initialize(self); 00145 ymp_assign_string(self, psz, endptr, radix); 00146 } |