マクロ定義 | |
| #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 }
|
1.2.14 作者 Dimitri van Heesch,
© 1997-2002