📄 gmp.h
字号:
void mpf_mul _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));void mpf_mul_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));void mpf_mul_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));void mpf_neg _PROTO ((mpf_ptr, mpf_srcptr));#ifdef FILEvoid mpf_out_str _PROTO ((mpf_ptr, int, size_t, FILE *));#endifvoid mpf_set _PROTO ((mpf_ptr, mpf_srcptr));void mpf_set_d _PROTO ((mpf_ptr, double));mp_size_t mpf_set_default_prec _PROTO ((mp_size_t));void mpf_set_si _PROTO ((mpf_ptr, long int));int mpf_set_str _PROTO ((mpf_ptr, const char *, int));void mpf_set_ui _PROTO ((mpf_ptr, unsigned long int));size_t mpf_size _PROTO ((mpf_srcptr));void mpf_sqrt _PROTO ((mpf_ptr, mpf_srcptr));void mpf_sqrt_ui _PROTO ((mpf_ptr, unsigned long int));void mpf_sub _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));void mpf_sub_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));void mpf_ui_div _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));/************ Low level positive-integer (i.e. N) routines. ************//* This is ugly, but we need to make usr calls reach the prefixed function. */#define mpn_add_n __mpn_add_n#define mpn_sub_n __mpn_sub_n#define mpn_mul_1 __mpn_mul_1#define mpn_addmul_1 __mpn_addmul_1#define mpn_submul_1 __mpn_submul_1#define mpn_lshift __mpn_lshift#define mpn_rshift __mpn_rshift#define mpn_sub __mpn_sub#define mpn_add __mpn_add#define mpn_normal_size __mpn_normal_size#define mpn_cmp __mpn_cmp#define mpn_add_1 __mpn_add_1#define mpn_sub_1 __mpn_sub_1#define mpn_mul_n __mpn_mul_n#define mpn_mul __mpn_mul#define mpn_divmod __mpn_divmod#define mpn_divmod_1 __mpn_divmod_1#define mpn_mod_1 __mpn_mod_1#define mpn_sqrt __mpn_sqrt#define mpn_next_bit_set __mpn_next_bit_set#define mpn_popcount __mpn_popcount#define mpn_hamdist __mpn_hamdist#define mpn_random2 __mpn_random2#define mpn_set_str __mpn_set_str#define mpn_get_str __mpn_get_str#define mpn_gcd_1 __mpn_gcd_1mp_limb __mpn_add_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));mp_limb __mpn_sub_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));mp_limb __mpn_mul _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));void __mpn_mul_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));mp_limb __mpn_mul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb));mp_limb __mpn_addmul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb));mp_limb __mpn_submul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb));mp_limb __mpn_divmod _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));mp_limb __mpn_divmod_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb));mp_limb __mpn_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb));mp_limb __mpn_lshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));mp_limb __mpn_rshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));mp_size_t __mpn_sqrt _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));int __mpn_cmp _PROTO ((mp_srcptr, mp_srcptr, mp_size_t));mp_size_t __mpn_next_bit_set _PROTO ((mp_srcptr, mp_size_t));mp_size_t __mpn_popcount _PROTO ((mp_srcptr, mp_size_t));mp_size_t __mpn_hamdist _PROTO ((mp_srcptr, mp_srcptr, mp_size_t));void __mpn_random2 _PROTO ((mp_ptr, mp_size_t));mp_size_t __mpn_set_str _PROTO ((mp_ptr, const unsigned char *, size_t, int));size_t __mpn_get_str _PROTO ((unsigned char *, int, mp_ptr, mp_size_t));mp_limb __mpn_gcd_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb));static __gmp_inline mp_limb#if __STDC____mpn_add_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_limb s2_limb)#else__mpn_add_1 (res_ptr, s1_ptr, s1_size, s2_limb) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_limb s2_limb;#endif{ register mp_limb x; x = *s1_ptr++; s2_limb = x + s2_limb; *res_ptr++ = s2_limb; if (s2_limb < x) { while (--s1_size != 0) { x = *s1_ptr++ + 1; *res_ptr++ = x; if (x != 0) goto fin; } return 1; } fin: if (res_ptr != s1_ptr) { mp_size_t i; for (i = 0; i < s1_size - 1; i++) res_ptr[i] = s1_ptr[i]; } return 0;}static __gmp_inline mp_limb#if __STDC____mpn_add (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_srcptr s2_ptr, register mp_size_t s2_size)#else__mpn_add (res_ptr, s1_ptr, s1_size, s2_ptr, s2_size) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_srcptr s2_ptr; register mp_size_t s2_size;#endif{ mp_limb cy_limb = 0; if (s2_size != 0) cy_limb = __mpn_add_n (res_ptr, s1_ptr, s2_ptr, s2_size); if (s1_size - s2_size != 0) cy_limb = __mpn_add_1 (res_ptr + s2_size, s1_ptr + s2_size, s1_size - s2_size, cy_limb); return cy_limb;}static __gmp_inline mp_limb#if __STDC____mpn_sub_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_limb s2_limb)#else__mpn_sub_1 (res_ptr, s1_ptr, s1_size, s2_limb) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_limb s2_limb;#endif{ register mp_limb x; x = *s1_ptr++; s2_limb = x - s2_limb; *res_ptr++ = s2_limb; if (s2_limb > x) { while (--s1_size != 0) { x = *s1_ptr++; *res_ptr++ = x - 1; if (x != 0) goto fin; } return 1; } fin: if (res_ptr != s1_ptr) { mp_size_t i; for (i = 0; i < s1_size - 1; i++) res_ptr[i] = s1_ptr[i]; } return 0;}static __gmp_inline mp_limb#if __STDC____mpn_sub (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_srcptr s2_ptr, register mp_size_t s2_size)#else__mpn_sub (res_ptr, s1_ptr, s1_size, s2_ptr, s2_size) register mp_ptr res_ptr; register mp_srcptr s1_ptr; register mp_size_t s1_size; register mp_srcptr s2_ptr; register mp_size_t s2_size;#endif{ mp_limb cy_limb = 0; if (s2_size != 0) cy_limb = __mpn_sub_n (res_ptr, s1_ptr, s2_ptr, s2_size); if (s1_size - s2_size != 0) cy_limb = __mpn_sub_1 (res_ptr + s2_size, s1_ptr + s2_size, s1_size - s2_size, cy_limb); return cy_limb;}static __gmp_inline mp_size_t#if __STDC____mpn_normal_size (mp_srcptr ptr, mp_size_t size)#else__mpn_normal_size (ptr, size) mp_srcptr ptr; mp_size_t size;#endif{ while (size) { size--; if (ptr[size] != 0) return size + 1; } return 0;}/* Compatibility with GMP 1. */#define mpz_mdiv mpz_fdiv_q#define mpz_mdivmod mpz_fdiv_qr#define mpz_mmod mpz_fdiv_r#define mpz_mdiv_ui mpz_fdiv_q_ui#define mpz_mdivmod_ui(q,r,n,d) \ ((r == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))#define mpz_mmod_ui(r,n,d) \ ((r == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))/* ??? Before release...#define mpz_div_2exp mpz_fdiv_q_2exp#define mpz_mod_2exp mpz_fdiv_r_2exp*//* Useful synonyms, but not quite compatible with GMP 1. */#define mpz_div mpz_fdiv_q#define mpz_divmod mpz_fdiv_qr#define mpz_mod mpz_fdiv_r#define mpz_div_ui mpz_fdiv_q_ui#define mpz_divmod_ui mpz_fdiv_qr_ui#define mpz_mod_ui mpz_fdiv_r_ui#define __GNU_MP__ 2#define __GNU_MP_VERSION 2#define __GNU_MP_VERSION_MINOR -900 /* ??? */#define __GMP_H__#endif /* __GMP_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -