📄 gmp.h
字号:
void mpf_div_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));void mpf_div_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));void mpf_dump _PROTO ((mpf_srcptr));int mpf_eq _PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int));double mpf_get_d _PROTO ((mpf_srcptr));unsigned long int mpf_get_prec _PROTO ((mpf_srcptr));char *mpf_get_str _PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));void mpf_init _PROTO ((mpf_ptr));void mpf_init2 _PROTO ((mpf_ptr, unsigned long int));#ifdef _GMP_H_HAVE_FILEsize_t mpf_inp_str _PROTO ((mpf_ptr, FILE *, int));#endifvoid mpf_init_set _PROTO ((mpf_ptr, mpf_srcptr));void mpf_init_set_d _PROTO ((mpf_ptr, double));void mpf_init_set_si _PROTO ((mpf_ptr, signed long int));int mpf_init_set_str _PROTO ((mpf_ptr, const char *, int));void mpf_init_set_ui _PROTO ((mpf_ptr, unsigned long int));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 _GMP_H_HAVE_FILEsize_t mpf_out_str _PROTO ((FILE *, int, size_t, mpf_srcptr));#endifvoid mpf_random2 _PROTO ((mpf_ptr, mp_size_t, mp_exp_t));void mpf_reldiff _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));void mpf_set _PROTO ((mpf_ptr, mpf_srcptr));void mpf_set_d _PROTO ((mpf_ptr, double));void mpf_set_default_prec _PROTO ((unsigned long int));void mpf_set_prec _PROTO ((mpf_ptr, unsigned long int));void mpf_set_prec_raw _PROTO ((mpf_ptr, unsigned long int));void mpf_set_q _PROTO ((mpf_ptr, mpq_srcptr));void mpf_set_si _PROTO ((mpf_ptr, signed long int));int mpf_set_str _PROTO ((mpf_ptr, const char *, int));void mpf_set_ui _PROTO ((mpf_ptr, unsigned long int));void mpf_set_z _PROTO ((mpf_ptr, mpz_srcptr));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));void mpf_ui_sub _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));#if defined (__cplusplus)}#endif/************ 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 __MPN(add)#define mpn_add_1 __MPN(add_1)#define mpn_add_n __MPN(add_n)#define mpn_addmul_1 __MPN(addmul_1)#define mpn_bdivmod __MPN(bdivmod)#define mpn_cmp __MPN(cmp)#define mpn_divmod_1 __MPN(divmod_1)#define mpn_divrem __MPN(divrem)#define mpn_divrem_1 __MPN(divrem_1)#define mpn_dump __MPN(dump)#define mpn_gcd __MPN(gcd)#define mpn_gcd_1 __MPN(gcd_1)#define mpn_gcdext __MPN(gcdext)#define mpn_get_str __MPN(get_str)#define mpn_hamdist __MPN(hamdist)#define mpn_lshift __MPN(lshift)#define mpn_mod_1 __MPN(mod_1)#define mpn_mul __MPN(mul)#define mpn_mul_1 __MPN(mul_1)#define mpn_mul_n __MPN(mul_n)#define mpn_perfect_square_p __MPN(perfect_square_p)#define mpn_popcount __MPN(popcount)#define mpn_preinv_mod_1 __MPN(preinv_mod_1)#define mpn_random2 __MPN(random2)#define mpn_rshift __MPN(rshift)#define mpn_scan0 __MPN(scan0)#define mpn_scan1 __MPN(scan1)#define mpn_set_str __MPN(set_str)#define mpn_sqrtrem __MPN(sqrtrem)#define mpn_sub __MPN(sub)#define mpn_sub_1 __MPN(sub_1)#define mpn_sub_n __MPN(sub_n)#define mpn_submul_1 __MPN(submul_1)#define mpn_udiv_w_sdiv __MPN(udiv_w_sdiv)#if defined (__cplusplus)extern "C" {#endifmp_limb_t mpn_add _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));mp_limb_t mpn_add_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));mp_limb_t mpn_add_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));mp_limb_t mpn_addmul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));mp_limb_t mpn_bdivmod _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int));int mpn_cmp _PROTO ((mp_srcptr, mp_srcptr, mp_size_t));mp_limb_t mpn_divmod_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));mp_limb_t mpn_divrem _PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));mp_limb_t mpn_divrem_1 _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));void mpn_dump _PROTO ((mp_srcptr, mp_size_t));mp_size_t mpn_gcd _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));mp_limb_t mpn_gcd_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t));mp_size_t mpn_gcdext _PROTO ((mp_ptr, mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));size_t mpn_get_str _PROTO ((unsigned char *, int, mp_ptr, mp_size_t));unsigned long int mpn_hamdist _PROTO ((mp_srcptr, mp_srcptr, mp_size_t));mp_limb_t mpn_lshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));mp_limb_t mpn_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t));mp_limb_t mpn_mul _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));mp_limb_t mpn_mul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));void mpn_mul_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));int mpn_perfect_square_p _PROTO ((mp_srcptr, mp_size_t));unsigned long int mpn_popcount _PROTO ((mp_srcptr, mp_size_t));mp_limb_t mpn_preinv_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t));void mpn_random2 _PROTO ((mp_ptr, mp_size_t));mp_limb_t mpn_rshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));unsigned long int mpn_scan0 _PROTO ((mp_srcptr, unsigned long int));unsigned long int mpn_scan1 _PROTO ((mp_srcptr, unsigned long int));mp_size_t mpn_set_str _PROTO ((mp_ptr, const unsigned char *, size_t, int));mp_size_t mpn_sqrtrem _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));mp_limb_t mpn_sub _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));mp_limb_t mpn_sub_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));mp_limb_t mpn_sub_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));mp_limb_t mpn_submul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));#if defined (__cplusplus)}#endif#if defined (__GNUC__) || defined (_FORCE_INLINES)_EXTERN_INLINE mp_limb_t#if defined (__STDC__) || defined (__cplusplus)mpn_add_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_limb_t s2_limb)#elsempn_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_t s2_limb;#endif{ register mp_limb_t 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;}_EXTERN_INLINE mp_limb_t#if defined (__STDC__) || defined (__cplusplus)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)#elsempn_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_t 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;}_EXTERN_INLINE mp_limb_t#if defined (__STDC__) || defined (__cplusplus)mpn_sub_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr, register mp_size_t s1_size, register mp_limb_t s2_limb)#elsempn_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_t s2_limb;#endif{ register mp_limb_t 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;}_EXTERN_INLINE mp_limb_t#if defined (__STDC__) || defined (__cplusplus)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)#elsempn_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_t 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;}#endif /* __GNUC__ *//* Allow faster testing for negative, zero, and positive. */#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)/* Allow direct user access to numerator and denominator of a mpq_t object. */#define mpq_numref(Q) (&((Q)->_mp_num))#define mpq_denref(Q) (&((Q)->_mp_den))/* When using GCC, optimize certain common comparisons. */#if defined (__GNUC__)#define mpz_cmp_ui(Z,UI) \ (__builtin_constant_p (UI) && (UI) == 0 \ ? mpz_sgn (Z) : mpz_cmp_ui (Z,UI))#define mpz_cmp_si(Z,UI) \ (__builtin_constant_p (UI) && (UI) == 0 ? mpz_sgn (Z) \ : __builtin_constant_p (UI) && (UI) > 0 ? mpz_cmp_ui (Z,UI) \ : mpz_cmp_si (Z,UI))#define mpq_cmp_ui(Q,NUI,DUI) \ (__builtin_constant_p (NUI) && (NUI) == 0 \ ? mpq_sgn (Q) : mpq_cmp_ui (Q,NUI,DUI))#endif#define mpn_divmod(qp,np,nsize,dp,dsize) mpn_divrem (qp,0,np,nsize,dp,dsize)#if 0#define mpn_divmod_1(qp,np,nsize,dlimb) mpn_divrem_1 (qp,0,np,nsize,dlimb)#endif/* 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))/* Useful synonyms, but not quite compatible with GMP 1. */#define mpz_div mpz_fdiv_q#define mpz_divmod mpz_fdiv_qr#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 mpz_div_2exp mpz_fdiv_q_2exp#define mpz_mod_2exp mpz_fdiv_r_2exp#define __GNU_MP_VERSION 2#define __GNU_MP_VERSION_MINOR 0#define __GMP_H__#endif /* __GMP_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -