📄 mpfr.h
字号:
/* mpfr.h -- Include file for mpfr.Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.This file is part of the MPFR Library.The MPFR Library is free software; you can redistribute it and/or modifyit under the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.The MPFR Library is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General PublicLicense for more details.You should have received a copy of the GNU Lesser General Public Licensealong with the MPFR Library; see the file COPYING.LIB. If not, write tothe Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,MA 02111-1307, USA. */#ifndef __MPFR_H#define __MPFR_H/* check if stdio.h is included */#if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H) /* Borland */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */#define _MPFR_H_HAVE_FILE 1#endif/* Definition of rounding modes */#define GMP_RNDN 0#define GMP_RNDZ 1#define GMP_RNDU 2#define GMP_RNDD 3/* Definition of exponent limits */#define MPFR_EMAX_DEFAULT ((mp_exp_t) (((unsigned long) 1 << 30) - 1))#define MPFR_EMIN_DEFAULT (-(MPFR_EMAX_DEFAULT))#define MPFR_EMIN_MIN MPFR_EMIN_DEFAULT#define MPFR_EMIN_MAX MPFR_EMAX_DEFAULT#define MPFR_EMAX_MIN MPFR_EMIN_DEFAULT#define MPFR_EMAX_MAX MPFR_EMAX_DEFAULT/* Flags */#define MPFR_FLAGS_UNDERFLOW 1#define MPFR_FLAGS_OVERFLOW 2#define MPFR_FLAGS_NAN 4#define MPFR_FLAGS_INEXACT 8#define MPFR_FLAGS_ALL 15/* Definitions of types and their semantics */typedef unsigned long int mp_prec_t; /* easy to change if necessary */#define MPFR_PREC_MIN 2#define MPFR_PREC_MAX (ULONG_MAX >> 1)/* Limit mainly due to the multiplication code. */typedef int mp_rnd_t;typedef struct { mp_prec_t _mpfr_prec; /* WARNING : for the mpfr type, the precision */ /* should be understood as the number of BITS,*/ /* not the number of mp_limb_t's. This means */ /* that the corresponding number of allocated limbs is >= ceil(_mp_prec/BITS_PER_MP_LIMB) */ mp_size_t _mpfr_size; /* MPFR_ABSSIZE(.) is the number of allocated limbs the field _mp_d points to. The sign is that of _mpfr_size. The number 0 is such that _mp_d[k-1]=0 where k = ceil(_mp_prec/BITS_PER_MP_LIMB) */ mp_exp_t _mpfr_exp; mp_limb_t *_mpfr_d;}__mpfr_struct;/* The number represented is sign(_mpfr_size)*(_mpfr_d[k-1]/B+_mpfr_d[k-2]/B^2+...+_mpfr_d[0]/B^k)*2^_mpfr_exp where k=ceil(_mp_prec/BITS_PER_MP_LIMB) and B=2^BITS_PER_MP_LIMB. For the msb (most significant bit) normalized representation, we must have _mpfr_d[k-1]>=B/2, unless the number is zero (in that case its sign is still given by sign(_mpfr_size)). We must also have the last k*BITS_PER_MP_LIMB-_mp_prec bits set to zero.*/typedef __mpfr_struct mpfr_t[1];typedef __mpfr_struct *mpfr_ptr;typedef __gmp_const __mpfr_struct *mpfr_srcptr;#define MPFR_SIGN(x) (((x)->_mpfr_size >> 31) ? -1 : 1)/* Prototypes */#ifndef _PROTO#if defined (__STDC__) || defined (__cplusplus)#define _PROTO(x) x#else#define _PROTO(x) ()#endif#endif/* _PROTO will be renamed __GMP_PROTO in gmp 4.1 */#ifndef __GMP_PROTO#define __GMP_PROTO(x) _PROTO(x)#endif#if defined (__cplusplus)extern "C" {#endifextern unsigned int __gmpfr_flags;extern mp_exp_t __gmpfr_emin;extern mp_exp_t __gmpfr_emax;mp_exp_t mpfr_get_emin _PROTO ((void));int mpfr_set_emin _PROTO ((mp_exp_t));mp_exp_t mpfr_get_emax _PROTO ((void));int mpfr_set_emax _PROTO ((mp_exp_t));void mpfr_clear_flags _PROTO ((void));void mpfr_clear_underflow _PROTO ((void));void mpfr_clear_overflow _PROTO ((void));void mpfr_clear_nanflag _PROTO ((void));void mpfr_clear_inexflag _PROTO ((void));int mpfr_check_range _PROTO ((mpfr_ptr, int, mp_rnd_t));int mpfr_underflow_p _PROTO ((void));int mpfr_overflow_p _PROTO ((void));int mpfr_nanflag_p _PROTO ((void));int mpfr_inexflag_p _PROTO ((void));void mpfr_init2 _PROTO ((mpfr_ptr, mp_prec_t));void mpfr_init _PROTO ((mpfr_ptr));int mpfr_prec_round _PROTO ((mpfr_ptr, mp_prec_t, mp_rnd_t));#define mpfr_round_prec(x,r,p) mpfr_prec_round(x,p,r) /* compatibility 2.0.1 */int mpfr_can_round _PROTO ((mpfr_ptr, mp_exp_t, mp_rnd_t, mp_rnd_t, mp_prec_t));mp_exp_t mpfr_get_exp _PROTO ((mpfr_srcptr));int mpfr_set_exp _PROTO ((mpfr_ptr, mp_exp_t));int mpfr_set_d _PROTO ((mpfr_ptr, double, mp_rnd_t));int mpfr_set_ld _PROTO ((mpfr_ptr, long double, mp_rnd_t));int mpfr_set_z _PROTO ((mpfr_ptr, mpz_srcptr, mp_rnd_t));void mpfr_set_nan _PROTO ((mpfr_ptr));void mpfr_set_inf _PROTO ((mpfr_ptr, int));mp_exp_t mpfr_get_z_exp _PROTO ((mpz_ptr, mpfr_srcptr));int mpfr_set_q _PROTO ((mpfr_ptr, mpq_srcptr, mp_rnd_t));double mpfr_get_d _PROTO ((mpfr_srcptr, mp_rnd_t));long double mpfr_get_ld _PROTO ((mpfr_srcptr, mp_rnd_t));double mpfr_get_d1 _PROTO ((mpfr_srcptr));double mpfr_get_d_2exp _PROTO ((long *, mpfr_srcptr, mp_rnd_t));long mpfr_get_si _PROTO ((mpfr_srcptr, mp_rnd_t));unsigned long mpfr_get_ui _PROTO ((mpfr_srcptr, mp_rnd_t));int mpfr_set_f _PROTO ((mpfr_ptr, mpf_srcptr, mp_rnd_t));int mpfr_set_si _PROTO ((mpfr_ptr, long, mp_rnd_t));int mpfr_set_ui _PROTO ((mpfr_ptr, unsigned long, mp_rnd_t));void mpfr_random _PROTO ((mpfr_ptr));void mpfr_random2 _PROTO ((mpfr_ptr, mp_size_t, mp_exp_t));int mpfr_urandomb _PROTO ((mpfr_ptr, gmp_randstate_t));void mpfr_clear _PROTO ((mpfr_ptr));void mpfr_nextabove _PROTO ((mpfr_ptr));void mpfr_nextbelow _PROTO ((mpfr_ptr));void mpfr_nexttoward _PROTO ((mpfr_ptr, mpfr_srcptr));int mpfr_set_str _PROTO ((mpfr_ptr, __gmp_const char *, int, mp_rnd_t));int mpfr_init_set_str _PROTO ((mpfr_ptr, __gmp_const char *, int, mp_rnd_t));char* mpfr_get_str _PROTO ((char *, mp_exp_t *, int, size_t, mpfr_srcptr, mp_rnd_t));#ifdef _MPFR_H_HAVE_FILEsize_t mpfr_inp_str _PROTO ((mpfr_ptr, FILE *, int, mp_rnd_t));size_t mpfr_out_str _PROTO ((FILE *, int, size_t, mpfr_srcptr, mp_rnd_t));#endifint mpfr_mul _PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -