Annotation of OpenXM_contrib2/windows/gmp/x64/mpfr.h, Revision 1.1
1.1 ! ohara 1: /* mpfr.h -- Include file for mpfr.
! 2:
! 3: Copyright 1999-2015 Free Software Foundation, Inc.
! 4: Contributed by the AriC and Caramel projects, INRIA.
! 5:
! 6: This file is part of the GNU MPFR Library.
! 7:
! 8: The GNU MPFR Library is free software; you can redistribute it and/or modify
! 9: it under the terms of the GNU Lesser General Public License as published by
! 10: the Free Software Foundation; either version 3 of the License, or (at your
! 11: option) any later version.
! 12:
! 13: The GNU MPFR Library is distributed in the hope that it will be useful, but
! 14: WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 15: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
! 16: License for more details.
! 17:
! 18: You should have received a copy of the GNU Lesser General Public License
! 19: along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
! 20: http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
! 21: 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
! 22:
! 23: #ifndef __MPFR_H
! 24: #define __MPFR_H
! 25:
! 26: /* Define MPFR version number */
! 27: #define MPFR_VERSION_MAJOR 3
! 28: #define MPFR_VERSION_MINOR 1
! 29: #define MPFR_VERSION_PATCHLEVEL 3
! 30: #define MPFR_VERSION_STRING "3.1.3"
! 31:
! 32: /* Macros dealing with MPFR VERSION */
! 33: #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
! 34: #define MPFR_VERSION \
! 35: MPFR_VERSION_NUM(MPFR_VERSION_MAJOR,MPFR_VERSION_MINOR,MPFR_VERSION_PATCHLEVEL)
! 36:
! 37: /* Check if GMP is included, and try to include it (Works with local GMP) */
! 38: #ifndef __GMP_H__
! 39: # include <gmp.h>
! 40: #endif
! 41:
! 42: /* GMP's internal __gmp_const macro has been removed on 2012-03-04:
! 43: http://gmplib.org:8000/gmp/rev/d287cfaf6732
! 44: const is standard and now assumed to be available. If the __gmp_const
! 45: definition is no longer present in GMP, this probably means that GMP
! 46: assumes that const is available; thus let's define it to const.
! 47: Note: this is a temporary fix that can be backported to previous MPFR
! 48: versions. In the future, __gmp_const should be replaced by const like
! 49: in GMP. */
! 50: #ifndef __gmp_const
! 51: # define __gmp_const const
! 52: #endif
! 53:
! 54: /* Avoid some problems with macro expansion if the user defines macros
! 55: with the same name as keywords. By convention, identifiers and macro
! 56: names starting with mpfr_ are reserved by MPFR. */
! 57: typedef void mpfr_void;
! 58: typedef int mpfr_int;
! 59: typedef unsigned int mpfr_uint;
! 60: typedef long mpfr_long;
! 61: typedef unsigned long mpfr_ulong;
! 62: typedef size_t mpfr_size_t;
! 63:
! 64: /* Definition of rounding modes (DON'T USE MPFR_RNDNA!).
! 65: Warning! Changing the contents of this enum should be seen as an
! 66: interface change since the old and the new types are not compatible
! 67: (the integer type compatible with the enumerated type can even change,
! 68: see ISO C99, 6.7.2.2#4), and in Makefile.am, AGE should be set to 0.
! 69:
! 70: MPFR_RNDU must appear just before MPFR_RNDD (see
! 71: MPFR_IS_RNDUTEST_OR_RNDDNOTTEST in mpfr-impl.h).
! 72:
! 73: MPFR_RNDF has been added, though not implemented yet, in order to avoid
! 74: to break the ABI once faithful rounding gets implemented.
! 75:
! 76: If you change the order of the rounding modes, please update the routines
! 77: in texceptions.c which assume 0=RNDN, 1=RNDZ, 2=RNDU, 3=RNDD, 4=RNDA.
! 78: */
! 79: typedef enum {
! 80: MPFR_RNDN=0, /* round to nearest, with ties to even */
! 81: MPFR_RNDZ, /* round toward zero */
! 82: MPFR_RNDU, /* round toward +Inf */
! 83: MPFR_RNDD, /* round toward -Inf */
! 84: MPFR_RNDA, /* round away from zero */
! 85: MPFR_RNDF, /* faithful rounding (not implemented yet) */
! 86: MPFR_RNDNA=-1 /* round to nearest, with ties away from zero (mpfr_round) */
! 87: } mpfr_rnd_t;
! 88:
! 89: /* kept for compatibility with MPFR 2.4.x and before */
! 90: #define GMP_RNDN MPFR_RNDN
! 91: #define GMP_RNDZ MPFR_RNDZ
! 92: #define GMP_RNDU MPFR_RNDU
! 93: #define GMP_RNDD MPFR_RNDD
! 94:
! 95: /* Note: With the following default choices for _MPFR_PREC_FORMAT and
! 96: _MPFR_EXP_FORMAT, mpfr_exp_t will be the same as [mp_exp_t] (at least
! 97: up to GMP 5). */
! 98:
! 99: /* Define precision: 1 (short), 2 (int) or 3 (long) (DON'T USE IT!) */
! 100: #ifndef _MPFR_PREC_FORMAT
! 101: # if __GMP_MP_SIZE_T_INT == 1
! 102: # define _MPFR_PREC_FORMAT 2
! 103: # else
! 104: # define _MPFR_PREC_FORMAT 3
! 105: # endif
! 106: #endif
! 107:
! 108: /* Define exponent: 1 (short), 2 (int), 3 (long) or 4 (intmax_t)
! 109: (DON'T USE IT!) */
! 110: #ifndef _MPFR_EXP_FORMAT
! 111: # define _MPFR_EXP_FORMAT _MPFR_PREC_FORMAT
! 112: #endif
! 113:
! 114: #if _MPFR_PREC_FORMAT > _MPFR_EXP_FORMAT
! 115: # error "mpfr_prec_t must not be larger than mpfr_exp_t"
! 116: #endif
! 117:
! 118: /* Let's make mpfr_prec_t signed in order to avoid problems due to the
! 119: usual arithmetic conversions when mixing mpfr_prec_t and mpfr_exp_t
! 120: in an expression (for error analysis) if casts are forgotten. */
! 121: #if _MPFR_PREC_FORMAT == 1
! 122: typedef short mpfr_prec_t;
! 123: typedef unsigned short mpfr_uprec_t;
! 124: #elif _MPFR_PREC_FORMAT == 2
! 125: typedef int mpfr_prec_t;
! 126: typedef unsigned int mpfr_uprec_t;
! 127: #elif _MPFR_PREC_FORMAT == 3
! 128: typedef long mpfr_prec_t;
! 129: typedef unsigned long mpfr_uprec_t;
! 130: #else
! 131: # error "Invalid MPFR Prec format"
! 132: #endif
! 133:
! 134: /* Definition of precision limits without needing <limits.h> */
! 135: /* Note: the casts allows the expression to yield the wanted behavior
! 136: for _MPFR_PREC_FORMAT == 1 (due to integer promotion rules). */
! 137: #define MPFR_PREC_MIN 2
! 138: #define MPFR_PREC_MAX ((mpfr_prec_t)((mpfr_uprec_t)(~(mpfr_uprec_t)0)>>1))
! 139:
! 140: /* Definition of sign */
! 141: typedef int mpfr_sign_t;
! 142:
! 143: /* Definition of the exponent. _MPFR_EXP_FORMAT must be large enough
! 144: so that mpfr_exp_t has at least 32 bits. */
! 145: #if _MPFR_EXP_FORMAT == 1
! 146: typedef short mpfr_exp_t;
! 147: typedef unsigned short mpfr_uexp_t;
! 148: #elif _MPFR_EXP_FORMAT == 2
! 149: typedef int mpfr_exp_t;
! 150: typedef unsigned int mpfr_uexp_t;
! 151: #elif _MPFR_EXP_FORMAT == 3
! 152: typedef long mpfr_exp_t;
! 153: typedef unsigned long mpfr_uexp_t;
! 154: #elif _MPFR_EXP_FORMAT == 4
! 155: /* Note: in this case, intmax_t and uintmax_t must be defined before
! 156: the inclusion of mpfr.h (we do not include <stdint.h> here because
! 157: of some non-ISO C99 implementations that support these types). */
! 158: typedef intmax_t mpfr_exp_t;
! 159: typedef uintmax_t mpfr_uexp_t;
! 160: #else
! 161: # error "Invalid MPFR Exp format"
! 162: #endif
! 163:
! 164: /* Definition of the standard exponent limits */
! 165: #define MPFR_EMAX_DEFAULT ((mpfr_exp_t) (((mpfr_ulong) 1 << 30) - 1))
! 166: #define MPFR_EMIN_DEFAULT (-(MPFR_EMAX_DEFAULT))
! 167:
! 168: /* DON'T USE THIS! (For MPFR-public macros only, see below.)
! 169: The mpfr_sgn macro uses the fact that __MPFR_EXP_NAN and __MPFR_EXP_ZERO
! 170: are the smallest values. */
! 171: #define __MPFR_EXP_MAX ((mpfr_exp_t) (((mpfr_uexp_t) -1) >> 1))
! 172: #define __MPFR_EXP_NAN (1 - __MPFR_EXP_MAX)
! 173: #define __MPFR_EXP_ZERO (0 - __MPFR_EXP_MAX)
! 174: #define __MPFR_EXP_INF (2 - __MPFR_EXP_MAX)
! 175:
! 176: /* Definition of the main structure */
! 177: typedef struct {
! 178: mpfr_prec_t _mpfr_prec;
! 179: mpfr_sign_t _mpfr_sign;
! 180: mpfr_exp_t _mpfr_exp;
! 181: mp_limb_t *_mpfr_d;
! 182: } __mpfr_struct;
! 183:
! 184: /* Compatibility with previous types of MPFR */
! 185: #ifndef mp_rnd_t
! 186: # define mp_rnd_t mpfr_rnd_t
! 187: #endif
! 188: #ifndef mp_prec_t
! 189: # define mp_prec_t mpfr_prec_t
! 190: #endif
! 191:
! 192: /*
! 193: The represented number is
! 194: _sign*(_d[k-1]/B+_d[k-2]/B^2+...+_d[0]/B^k)*2^_exp
! 195: where k=ceil(_mp_prec/GMP_NUMB_BITS) and B=2^GMP_NUMB_BITS.
! 196:
! 197: For the msb (most significant bit) normalized representation, we must have
! 198: _d[k-1]>=B/2, unless the number is singular.
! 199:
! 200: We must also have the last k*GMP_NUMB_BITS-_prec bits set to zero.
! 201: */
! 202:
! 203: typedef __mpfr_struct mpfr_t[1];
! 204: typedef __mpfr_struct *mpfr_ptr;
! 205: typedef __gmp_const __mpfr_struct *mpfr_srcptr;
! 206:
! 207: /* For those who need a direct and fast access to the sign field.
! 208: However it is not in the API, thus use it at your own risk: it might
! 209: not be supported, or change name, in further versions!
! 210: Unfortunately, it must be defined here (instead of MPFR's internal
! 211: header file mpfr-impl.h) because it is used by some macros below.
! 212: */
! 213: #define MPFR_SIGN(x) ((x)->_mpfr_sign)
! 214:
! 215: /* Stack interface */
! 216: typedef enum {
! 217: MPFR_NAN_KIND = 0,
! 218: MPFR_INF_KIND = 1, MPFR_ZERO_KIND = 2, MPFR_REGULAR_KIND = 3
! 219: } mpfr_kind_t;
! 220:
! 221: /* GMP defines:
! 222: + size_t: Standard size_t
! 223: + __GMP_ATTRIBUTE_PURE Attribute for math functions.
! 224: + __GMP_NOTHROW For C++: can't throw .
! 225: + __GMP_EXTERN_INLINE Attribute for inline function.
! 226: * __gmp_const const (Supports for K&R compiler only for mpfr.h).
! 227: + __GMP_DECLSPEC_EXPORT compiling to go into a DLL
! 228: + __GMP_DECLSPEC_IMPORT compiling to go into a application
! 229: */
! 230: /* Extra MPFR defines */
! 231: #define __MPFR_SENTINEL_ATTR
! 232: #if defined (__GNUC__)
! 233: # if __GNUC__ >= 4
! 234: # undef __MPFR_SENTINEL_ATTR
! 235: # define __MPFR_SENTINEL_ATTR __attribute__ ((sentinel))
! 236: # endif
! 237: #endif
! 238:
! 239: /* Prototypes: Support of K&R compiler */
! 240: #if defined (__GMP_PROTO)
! 241: # define _MPFR_PROTO __GMP_PROTO
! 242: #elif defined (__STDC__) || defined (__cplusplus)
! 243: # define _MPFR_PROTO(x) x
! 244: #else
! 245: # define _MPFR_PROTO(x) ()
! 246: #endif
! 247: /* Support for WINDOWS Dll:
! 248: Check if we are inside a MPFR build, and if so export the functions.
! 249: Otherwise does the same thing as GMP */
! 250: #if defined(__MPFR_WITHIN_MPFR) && __GMP_LIBGMP_DLL
! 251: # define __MPFR_DECLSPEC __GMP_DECLSPEC_EXPORT
! 252: #else
! 253: # define __MPFR_DECLSPEC __GMP_DECLSPEC
! 254: #endif
! 255:
! 256: /* Use MPFR_DEPRECATED to mark MPFR functions, types or variables as
! 257: deprecated. Code inspired by Apache Subversion's svn_types.h file. */
! 258: #if defined(__GNUC__) && \
! 259: (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
! 260: # define MPFR_DEPRECATED __attribute__ ((deprecated))
! 261: #elif defined(_MSC_VER) && _MSC_VER >= 1300
! 262: # define MPFR_DEPRECATED __declspec(deprecated)
! 263: #else
! 264: # define MPFR_DEPRECATED
! 265: #endif
! 266:
! 267: /* Note: In order to be declared, some functions need a specific
! 268: system header to be included *before* "mpfr.h". If the user
! 269: forgets to include the header, the MPFR function prototype in
! 270: the user object file is not correct. To avoid wrong results,
! 271: we raise a linker error in that case by changing their internal
! 272: name in the library (prefixed by __gmpfr instead of mpfr). See
! 273: the lines of the form "#define mpfr_xxx __gmpfr_xxx" below. */
! 274:
! 275: #if defined (__cplusplus)
! 276: extern "C" {
! 277: #endif
! 278:
! 279: __MPFR_DECLSPEC __gmp_const char * mpfr_get_version _MPFR_PROTO ((void));
! 280: __MPFR_DECLSPEC __gmp_const char * mpfr_get_patches _MPFR_PROTO ((void));
! 281: __MPFR_DECLSPEC int mpfr_buildopt_tls_p _MPFR_PROTO ((void));
! 282: __MPFR_DECLSPEC int mpfr_buildopt_decimal_p _MPFR_PROTO ((void));
! 283: __MPFR_DECLSPEC int mpfr_buildopt_gmpinternals_p _MPFR_PROTO ((void));
! 284: __MPFR_DECLSPEC __gmp_const char * mpfr_buildopt_tune_case _MPFR_PROTO ((void));
! 285:
! 286: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin _MPFR_PROTO ((void));
! 287: __MPFR_DECLSPEC int mpfr_set_emin _MPFR_PROTO ((mpfr_exp_t));
! 288: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_min _MPFR_PROTO ((void));
! 289: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_max _MPFR_PROTO ((void));
! 290: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax _MPFR_PROTO ((void));
! 291: __MPFR_DECLSPEC int mpfr_set_emax _MPFR_PROTO ((mpfr_exp_t));
! 292: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_min _MPFR_PROTO ((void));
! 293: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_max _MPFR_PROTO ((void));
! 294:
! 295: __MPFR_DECLSPEC void mpfr_set_default_rounding_mode _MPFR_PROTO((mpfr_rnd_t));
! 296: __MPFR_DECLSPEC mpfr_rnd_t mpfr_get_default_rounding_mode _MPFR_PROTO((void));
! 297: __MPFR_DECLSPEC __gmp_const char *
! 298: mpfr_print_rnd_mode _MPFR_PROTO((mpfr_rnd_t));
! 299:
! 300: __MPFR_DECLSPEC void mpfr_clear_flags _MPFR_PROTO ((void));
! 301: __MPFR_DECLSPEC void mpfr_clear_underflow _MPFR_PROTO ((void));
! 302: __MPFR_DECLSPEC void mpfr_clear_overflow _MPFR_PROTO ((void));
! 303: __MPFR_DECLSPEC void mpfr_clear_divby0 _MPFR_PROTO ((void));
! 304: __MPFR_DECLSPEC void mpfr_clear_nanflag _MPFR_PROTO ((void));
! 305: __MPFR_DECLSPEC void mpfr_clear_inexflag _MPFR_PROTO ((void));
! 306: __MPFR_DECLSPEC void mpfr_clear_erangeflag _MPFR_PROTO ((void));
! 307:
! 308: __MPFR_DECLSPEC void mpfr_set_underflow _MPFR_PROTO ((void));
! 309: __MPFR_DECLSPEC void mpfr_set_overflow _MPFR_PROTO ((void));
! 310: __MPFR_DECLSPEC void mpfr_set_divby0 _MPFR_PROTO ((void));
! 311: __MPFR_DECLSPEC void mpfr_set_nanflag _MPFR_PROTO ((void));
! 312: __MPFR_DECLSPEC void mpfr_set_inexflag _MPFR_PROTO ((void));
! 313: __MPFR_DECLSPEC void mpfr_set_erangeflag _MPFR_PROTO ((void));
! 314:
! 315: __MPFR_DECLSPEC int mpfr_underflow_p _MPFR_PROTO ((void));
! 316: __MPFR_DECLSPEC int mpfr_overflow_p _MPFR_PROTO ((void));
! 317: __MPFR_DECLSPEC int mpfr_divby0_p _MPFR_PROTO ((void));
! 318: __MPFR_DECLSPEC int mpfr_nanflag_p _MPFR_PROTO ((void));
! 319: __MPFR_DECLSPEC int mpfr_inexflag_p _MPFR_PROTO ((void));
! 320: __MPFR_DECLSPEC int mpfr_erangeflag_p _MPFR_PROTO ((void));
! 321:
! 322: __MPFR_DECLSPEC int
! 323: mpfr_check_range _MPFR_PROTO ((mpfr_ptr, int, mpfr_rnd_t));
! 324:
! 325: __MPFR_DECLSPEC void mpfr_init2 _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t));
! 326: __MPFR_DECLSPEC void mpfr_init _MPFR_PROTO ((mpfr_ptr));
! 327: __MPFR_DECLSPEC void mpfr_clear _MPFR_PROTO ((mpfr_ptr));
! 328:
! 329: __MPFR_DECLSPEC void
! 330: mpfr_inits2 _MPFR_PROTO ((mpfr_prec_t, mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
! 331: __MPFR_DECLSPEC void
! 332: mpfr_inits _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
! 333: __MPFR_DECLSPEC void
! 334: mpfr_clears _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
! 335:
! 336: __MPFR_DECLSPEC int
! 337: mpfr_prec_round _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t, mpfr_rnd_t));
! 338: __MPFR_DECLSPEC int
! 339: mpfr_can_round _MPFR_PROTO ((mpfr_srcptr, mpfr_exp_t, mpfr_rnd_t, mpfr_rnd_t,
! 340: mpfr_prec_t));
! 341: __MPFR_DECLSPEC mpfr_prec_t mpfr_min_prec _MPFR_PROTO ((mpfr_srcptr));
! 342:
! 343: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_exp _MPFR_PROTO ((mpfr_srcptr));
! 344: __MPFR_DECLSPEC int mpfr_set_exp _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t));
! 345: __MPFR_DECLSPEC mpfr_prec_t mpfr_get_prec _MPFR_PROTO((mpfr_srcptr));
! 346: __MPFR_DECLSPEC void mpfr_set_prec _MPFR_PROTO((mpfr_ptr, mpfr_prec_t));
! 347: __MPFR_DECLSPEC void mpfr_set_prec_raw _MPFR_PROTO((mpfr_ptr, mpfr_prec_t));
! 348: __MPFR_DECLSPEC void mpfr_set_default_prec _MPFR_PROTO((mpfr_prec_t));
! 349: __MPFR_DECLSPEC mpfr_prec_t mpfr_get_default_prec _MPFR_PROTO((void));
! 350:
! 351: __MPFR_DECLSPEC int mpfr_set_d _MPFR_PROTO ((mpfr_ptr, double, mpfr_rnd_t));
! 352: __MPFR_DECLSPEC int mpfr_set_flt _MPFR_PROTO ((mpfr_ptr, float, mpfr_rnd_t));
! 353: #ifdef MPFR_WANT_DECIMAL_FLOATS
! 354: __MPFR_DECLSPEC int mpfr_set_decimal64 _MPFR_PROTO ((mpfr_ptr, _Decimal64,
! 355: mpfr_rnd_t));
! 356: #endif
! 357: __MPFR_DECLSPEC int
! 358: mpfr_set_ld _MPFR_PROTO ((mpfr_ptr, long double, mpfr_rnd_t));
! 359: __MPFR_DECLSPEC int
! 360: mpfr_set_z _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_rnd_t));
! 361: __MPFR_DECLSPEC int
! 362: mpfr_set_z_2exp _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_exp_t, mpfr_rnd_t));
! 363: __MPFR_DECLSPEC void mpfr_set_nan _MPFR_PROTO ((mpfr_ptr));
! 364: __MPFR_DECLSPEC void mpfr_set_inf _MPFR_PROTO ((mpfr_ptr, int));
! 365: __MPFR_DECLSPEC void mpfr_set_zero _MPFR_PROTO ((mpfr_ptr, int));
! 366: __MPFR_DECLSPEC int
! 367: mpfr_set_f _MPFR_PROTO ((mpfr_ptr, mpf_srcptr, mpfr_rnd_t));
! 368: __MPFR_DECLSPEC int
! 369: mpfr_get_f _MPFR_PROTO ((mpf_ptr, mpfr_srcptr, mpfr_rnd_t));
! 370: __MPFR_DECLSPEC int mpfr_set_si _MPFR_PROTO ((mpfr_ptr, long, mpfr_rnd_t));
! 371: __MPFR_DECLSPEC int
! 372: mpfr_set_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, mpfr_rnd_t));
! 373: __MPFR_DECLSPEC int
! 374: mpfr_set_si_2exp _MPFR_PROTO ((mpfr_ptr, long, mpfr_exp_t, mpfr_rnd_t));
! 375: __MPFR_DECLSPEC int
! 376: mpfr_set_ui_2exp _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_exp_t,mpfr_rnd_t));
! 377: __MPFR_DECLSPEC int
! 378: mpfr_set_q _MPFR_PROTO ((mpfr_ptr, mpq_srcptr, mpfr_rnd_t));
! 379: __MPFR_DECLSPEC int
! 380: mpfr_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, mpfr_rnd_t));
! 381: __MPFR_DECLSPEC int
! 382: mpfr_init_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int,
! 383: mpfr_rnd_t));
! 384: __MPFR_DECLSPEC int
! 385: mpfr_set4 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t, int));
! 386: __MPFR_DECLSPEC int
! 387: mpfr_abs _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 388: __MPFR_DECLSPEC int
! 389: mpfr_set _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 390: __MPFR_DECLSPEC int mpfr_neg _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 391: __MPFR_DECLSPEC int mpfr_signbit _MPFR_PROTO ((mpfr_srcptr));
! 392: __MPFR_DECLSPEC int
! 393: mpfr_setsign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, int, mpfr_rnd_t));
! 394: __MPFR_DECLSPEC int
! 395: mpfr_copysign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t));
! 396:
! 397: __MPFR_DECLSPEC mpfr_exp_t mpfr_get_z_2exp _MPFR_PROTO ((mpz_ptr, mpfr_srcptr));
! 398: __MPFR_DECLSPEC float mpfr_get_flt _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
! 399: __MPFR_DECLSPEC double mpfr_get_d _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
! 400: #ifdef MPFR_WANT_DECIMAL_FLOATS
! 401: __MPFR_DECLSPEC _Decimal64 mpfr_get_decimal64 _MPFR_PROTO ((mpfr_srcptr,
! 402: mpfr_rnd_t));
! 403: #endif
! 404: __MPFR_DECLSPEC long double mpfr_get_ld _MPFR_PROTO ((mpfr_srcptr,
! 405: mpfr_rnd_t));
! 406: __MPFR_DECLSPEC double mpfr_get_d1 _MPFR_PROTO ((mpfr_srcptr));
! 407: __MPFR_DECLSPEC double mpfr_get_d_2exp _MPFR_PROTO ((long*, mpfr_srcptr,
! 408: mpfr_rnd_t));
! 409: __MPFR_DECLSPEC long double mpfr_get_ld_2exp _MPFR_PROTO ((long*, mpfr_srcptr,
! 410: mpfr_rnd_t));
! 411: __MPFR_DECLSPEC int mpfr_frexp _MPFR_PROTO ((mpfr_exp_t*, mpfr_ptr,
! 412: mpfr_srcptr, mpfr_rnd_t));
! 413: __MPFR_DECLSPEC long mpfr_get_si _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
! 414: __MPFR_DECLSPEC unsigned long mpfr_get_ui _MPFR_PROTO ((mpfr_srcptr,
! 415: mpfr_rnd_t));
! 416: __MPFR_DECLSPEC char*mpfr_get_str _MPFR_PROTO ((char*, mpfr_exp_t*, int, size_t,
! 417: mpfr_srcptr, mpfr_rnd_t));
! 418: __MPFR_DECLSPEC int mpfr_get_z _MPFR_PROTO ((mpz_ptr z, mpfr_srcptr f,
! 419: mpfr_rnd_t));
! 420:
! 421: __MPFR_DECLSPEC void mpfr_free_str _MPFR_PROTO ((char *));
! 422:
! 423: __MPFR_DECLSPEC int mpfr_urandom _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t,
! 424: mpfr_rnd_t));
! 425: __MPFR_DECLSPEC int mpfr_grandom _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, gmp_randstate_t,
! 426: mpfr_rnd_t));
! 427: __MPFR_DECLSPEC int mpfr_urandomb _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t));
! 428:
! 429: __MPFR_DECLSPEC void mpfr_nextabove _MPFR_PROTO ((mpfr_ptr));
! 430: __MPFR_DECLSPEC void mpfr_nextbelow _MPFR_PROTO ((mpfr_ptr));
! 431: __MPFR_DECLSPEC void mpfr_nexttoward _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr));
! 432:
! 433: __MPFR_DECLSPEC int mpfr_printf _MPFR_PROTO ((__gmp_const char*, ...));
! 434: __MPFR_DECLSPEC int mpfr_asprintf _MPFR_PROTO ((char**, __gmp_const char*,
! 435: ...));
! 436: __MPFR_DECLSPEC int mpfr_sprintf _MPFR_PROTO ((char*, __gmp_const char*,
! 437: ...));
! 438: __MPFR_DECLSPEC int mpfr_snprintf _MPFR_PROTO ((char*, size_t,
! 439: __gmp_const char*, ...));
! 440:
! 441: __MPFR_DECLSPEC int mpfr_pow _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 442: mpfr_srcptr, mpfr_rnd_t));
! 443: __MPFR_DECLSPEC int mpfr_pow_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 444: long int, mpfr_rnd_t));
! 445: __MPFR_DECLSPEC int mpfr_pow_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 446: unsigned long int, mpfr_rnd_t));
! 447: __MPFR_DECLSPEC int mpfr_ui_pow_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int,
! 448: unsigned long int, mpfr_rnd_t));
! 449: __MPFR_DECLSPEC int mpfr_ui_pow _MPFR_PROTO ((mpfr_ptr, unsigned long int,
! 450: mpfr_srcptr, mpfr_rnd_t));
! 451: __MPFR_DECLSPEC int mpfr_pow_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 452: mpz_srcptr, mpfr_rnd_t));
! 453:
! 454: __MPFR_DECLSPEC int mpfr_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 455: mpfr_rnd_t));
! 456: __MPFR_DECLSPEC int mpfr_sqrt_ui _MPFR_PROTO ((mpfr_ptr, unsigned long,
! 457: mpfr_rnd_t));
! 458: __MPFR_DECLSPEC int mpfr_rec_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 459: mpfr_rnd_t));
! 460:
! 461: __MPFR_DECLSPEC int mpfr_add _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 462: mpfr_srcptr, mpfr_rnd_t));
! 463: __MPFR_DECLSPEC int mpfr_sub _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 464: mpfr_srcptr, mpfr_rnd_t));
! 465: __MPFR_DECLSPEC int mpfr_mul _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 466: mpfr_srcptr, mpfr_rnd_t));
! 467: __MPFR_DECLSPEC int mpfr_div _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 468: mpfr_srcptr, mpfr_rnd_t));
! 469:
! 470: __MPFR_DECLSPEC int mpfr_add_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 471: unsigned long, mpfr_rnd_t));
! 472: __MPFR_DECLSPEC int mpfr_sub_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 473: unsigned long, mpfr_rnd_t));
! 474: __MPFR_DECLSPEC int mpfr_ui_sub _MPFR_PROTO ((mpfr_ptr, unsigned long,
! 475: mpfr_srcptr, mpfr_rnd_t));
! 476: __MPFR_DECLSPEC int mpfr_mul_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 477: unsigned long, mpfr_rnd_t));
! 478: __MPFR_DECLSPEC int mpfr_div_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 479: unsigned long, mpfr_rnd_t));
! 480: __MPFR_DECLSPEC int mpfr_ui_div _MPFR_PROTO ((mpfr_ptr, unsigned long,
! 481: mpfr_srcptr, mpfr_rnd_t));
! 482:
! 483: __MPFR_DECLSPEC int mpfr_add_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 484: long int, mpfr_rnd_t));
! 485: __MPFR_DECLSPEC int mpfr_sub_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 486: long int, mpfr_rnd_t));
! 487: __MPFR_DECLSPEC int mpfr_si_sub _MPFR_PROTO ((mpfr_ptr, long int,
! 488: mpfr_srcptr, mpfr_rnd_t));
! 489: __MPFR_DECLSPEC int mpfr_mul_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 490: long int, mpfr_rnd_t));
! 491: __MPFR_DECLSPEC int mpfr_div_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 492: long int, mpfr_rnd_t));
! 493: __MPFR_DECLSPEC int mpfr_si_div _MPFR_PROTO ((mpfr_ptr, long int,
! 494: mpfr_srcptr, mpfr_rnd_t));
! 495:
! 496: __MPFR_DECLSPEC int mpfr_add_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 497: double, mpfr_rnd_t));
! 498: __MPFR_DECLSPEC int mpfr_sub_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 499: double, mpfr_rnd_t));
! 500: __MPFR_DECLSPEC int mpfr_d_sub _MPFR_PROTO ((mpfr_ptr, double,
! 501: mpfr_srcptr, mpfr_rnd_t));
! 502: __MPFR_DECLSPEC int mpfr_mul_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 503: double, mpfr_rnd_t));
! 504: __MPFR_DECLSPEC int mpfr_div_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 505: double, mpfr_rnd_t));
! 506: __MPFR_DECLSPEC int mpfr_d_div _MPFR_PROTO ((mpfr_ptr, double,
! 507: mpfr_srcptr, mpfr_rnd_t));
! 508:
! 509: __MPFR_DECLSPEC int mpfr_sqr _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 510:
! 511: __MPFR_DECLSPEC int mpfr_const_pi _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
! 512: __MPFR_DECLSPEC int mpfr_const_log2 _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
! 513: __MPFR_DECLSPEC int mpfr_const_euler _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
! 514: __MPFR_DECLSPEC int mpfr_const_catalan _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
! 515:
! 516: __MPFR_DECLSPEC int mpfr_agm _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
! 517: mpfr_rnd_t));
! 518:
! 519: __MPFR_DECLSPEC int mpfr_log _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 520: __MPFR_DECLSPEC int mpfr_log2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 521: __MPFR_DECLSPEC int mpfr_log10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 522: mpfr_rnd_t));
! 523: __MPFR_DECLSPEC int mpfr_log1p _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 524: mpfr_rnd_t));
! 525:
! 526: __MPFR_DECLSPEC int mpfr_exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 527: __MPFR_DECLSPEC int mpfr_exp2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 528: __MPFR_DECLSPEC int mpfr_exp10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 529: mpfr_rnd_t));
! 530: __MPFR_DECLSPEC int mpfr_expm1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 531: mpfr_rnd_t));
! 532: __MPFR_DECLSPEC int mpfr_eint _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 533: __MPFR_DECLSPEC int mpfr_li2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 534:
! 535: __MPFR_DECLSPEC int mpfr_cmp _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 536: __MPFR_DECLSPEC int mpfr_cmp3 _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr, int));
! 537: __MPFR_DECLSPEC int mpfr_cmp_d _MPFR_PROTO ((mpfr_srcptr, double));
! 538: __MPFR_DECLSPEC int mpfr_cmp_ld _MPFR_PROTO ((mpfr_srcptr, long double));
! 539: __MPFR_DECLSPEC int mpfr_cmpabs _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 540: __MPFR_DECLSPEC int mpfr_cmp_ui _MPFR_PROTO ((mpfr_srcptr, unsigned long));
! 541: __MPFR_DECLSPEC int mpfr_cmp_si _MPFR_PROTO ((mpfr_srcptr, long));
! 542: __MPFR_DECLSPEC int mpfr_cmp_ui_2exp _MPFR_PROTO ((mpfr_srcptr, unsigned long,
! 543: mpfr_exp_t));
! 544: __MPFR_DECLSPEC int mpfr_cmp_si_2exp _MPFR_PROTO ((mpfr_srcptr, long,
! 545: mpfr_exp_t));
! 546: __MPFR_DECLSPEC void mpfr_reldiff _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 547: mpfr_srcptr, mpfr_rnd_t));
! 548: __MPFR_DECLSPEC int mpfr_eq _MPFR_PROTO((mpfr_srcptr, mpfr_srcptr,
! 549: unsigned long));
! 550: __MPFR_DECLSPEC int mpfr_sgn _MPFR_PROTO ((mpfr_srcptr));
! 551:
! 552: __MPFR_DECLSPEC int mpfr_mul_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 553: unsigned long, mpfr_rnd_t));
! 554: __MPFR_DECLSPEC int mpfr_div_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 555: unsigned long, mpfr_rnd_t));
! 556: __MPFR_DECLSPEC int mpfr_mul_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 557: unsigned long, mpfr_rnd_t));
! 558: __MPFR_DECLSPEC int mpfr_div_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 559: unsigned long, mpfr_rnd_t));
! 560: __MPFR_DECLSPEC int mpfr_mul_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 561: long, mpfr_rnd_t));
! 562: __MPFR_DECLSPEC int mpfr_div_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 563: long, mpfr_rnd_t));
! 564:
! 565: __MPFR_DECLSPEC int mpfr_rint _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
! 566: __MPFR_DECLSPEC int mpfr_round _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
! 567: __MPFR_DECLSPEC int mpfr_trunc _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
! 568: __MPFR_DECLSPEC int mpfr_ceil _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
! 569: __MPFR_DECLSPEC int mpfr_floor _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
! 570: __MPFR_DECLSPEC int mpfr_rint_round _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 571: mpfr_rnd_t));
! 572: __MPFR_DECLSPEC int mpfr_rint_trunc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 573: mpfr_rnd_t));
! 574: __MPFR_DECLSPEC int mpfr_rint_ceil _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 575: mpfr_rnd_t));
! 576: __MPFR_DECLSPEC int mpfr_rint_floor _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 577: mpfr_rnd_t));
! 578: __MPFR_DECLSPEC int mpfr_frac _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 579: __MPFR_DECLSPEC int mpfr_modf _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, mpfr_srcptr,
! 580: mpfr_rnd_t));
! 581: __MPFR_DECLSPEC int mpfr_remquo _MPFR_PROTO ((mpfr_ptr, long*, mpfr_srcptr,
! 582: mpfr_srcptr, mpfr_rnd_t));
! 583: __MPFR_DECLSPEC int mpfr_remainder _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 584: mpfr_srcptr, mpfr_rnd_t));
! 585: __MPFR_DECLSPEC int mpfr_fmod _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 586: mpfr_srcptr, mpfr_rnd_t));
! 587:
! 588: __MPFR_DECLSPEC int mpfr_fits_ulong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 589: __MPFR_DECLSPEC int mpfr_fits_slong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 590: __MPFR_DECLSPEC int mpfr_fits_uint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 591: __MPFR_DECLSPEC int mpfr_fits_sint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 592: __MPFR_DECLSPEC int mpfr_fits_ushort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 593: __MPFR_DECLSPEC int mpfr_fits_sshort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 594: __MPFR_DECLSPEC int mpfr_fits_uintmax_p _MPFR_PROTO((mpfr_srcptr,mpfr_rnd_t));
! 595: __MPFR_DECLSPEC int mpfr_fits_intmax_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
! 596:
! 597: __MPFR_DECLSPEC void mpfr_extract _MPFR_PROTO ((mpz_ptr, mpfr_srcptr,
! 598: unsigned int));
! 599: __MPFR_DECLSPEC void mpfr_swap _MPFR_PROTO ((mpfr_ptr, mpfr_ptr));
! 600: __MPFR_DECLSPEC void mpfr_dump _MPFR_PROTO ((mpfr_srcptr));
! 601:
! 602: __MPFR_DECLSPEC int mpfr_nan_p _MPFR_PROTO((mpfr_srcptr));
! 603: __MPFR_DECLSPEC int mpfr_inf_p _MPFR_PROTO((mpfr_srcptr));
! 604: __MPFR_DECLSPEC int mpfr_number_p _MPFR_PROTO((mpfr_srcptr));
! 605: __MPFR_DECLSPEC int mpfr_integer_p _MPFR_PROTO ((mpfr_srcptr));
! 606: __MPFR_DECLSPEC int mpfr_zero_p _MPFR_PROTO ((mpfr_srcptr));
! 607: __MPFR_DECLSPEC int mpfr_regular_p _MPFR_PROTO ((mpfr_srcptr));
! 608:
! 609: __MPFR_DECLSPEC int mpfr_greater_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 610: __MPFR_DECLSPEC int mpfr_greaterequal_p _MPFR_PROTO ((mpfr_srcptr,
! 611: mpfr_srcptr));
! 612: __MPFR_DECLSPEC int mpfr_less_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 613: __MPFR_DECLSPEC int mpfr_lessequal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 614: __MPFR_DECLSPEC int mpfr_lessgreater_p _MPFR_PROTO((mpfr_srcptr,mpfr_srcptr));
! 615: __MPFR_DECLSPEC int mpfr_equal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 616: __MPFR_DECLSPEC int mpfr_unordered_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
! 617:
! 618: __MPFR_DECLSPEC int mpfr_atanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 619: __MPFR_DECLSPEC int mpfr_acosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 620: __MPFR_DECLSPEC int mpfr_asinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 621: __MPFR_DECLSPEC int mpfr_cosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
! 622: __MPFR_DECLSPEC int mpfr_sinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
! 623: __MPFR_DECLSPEC int mpfr_tanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
! 624: __MPFR_DECLSPEC int mpfr_sinh_cosh _MPFR_PROTO ((mpfr_ptr, mpfr_ptr,
! 625: mpfr_srcptr, mpfr_rnd_t));
! 626:
! 627: __MPFR_DECLSPEC int mpfr_sech _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 628: __MPFR_DECLSPEC int mpfr_csch _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 629: __MPFR_DECLSPEC int mpfr_coth _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 630:
! 631: __MPFR_DECLSPEC int mpfr_acos _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 632: __MPFR_DECLSPEC int mpfr_asin _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 633: __MPFR_DECLSPEC int mpfr_atan _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 634: __MPFR_DECLSPEC int mpfr_sin _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 635: __MPFR_DECLSPEC int mpfr_sin_cos _MPFR_PROTO ((mpfr_ptr, mpfr_ptr,
! 636: mpfr_srcptr, mpfr_rnd_t));
! 637: __MPFR_DECLSPEC int mpfr_cos _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 638: __MPFR_DECLSPEC int mpfr_tan _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 639: __MPFR_DECLSPEC int mpfr_atan2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_srcptr,
! 640: mpfr_rnd_t));
! 641: __MPFR_DECLSPEC int mpfr_sec _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 642: __MPFR_DECLSPEC int mpfr_csc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 643: __MPFR_DECLSPEC int mpfr_cot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 644:
! 645: __MPFR_DECLSPEC int mpfr_hypot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 646: mpfr_srcptr, mpfr_rnd_t));
! 647: __MPFR_DECLSPEC int mpfr_erf _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 648: __MPFR_DECLSPEC int mpfr_erfc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
! 649: __MPFR_DECLSPEC int mpfr_cbrt _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 650: __MPFR_DECLSPEC int mpfr_root _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,unsigned long,mpfr_rnd_t));
! 651: __MPFR_DECLSPEC int mpfr_gamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 652: __MPFR_DECLSPEC int mpfr_lngamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 653: __MPFR_DECLSPEC int mpfr_lgamma _MPFR_PROTO((mpfr_ptr,int*,mpfr_srcptr,mpfr_rnd_t));
! 654: __MPFR_DECLSPEC int mpfr_digamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 655: __MPFR_DECLSPEC int mpfr_zeta _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
! 656: __MPFR_DECLSPEC int mpfr_zeta_ui _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_rnd_t));
! 657: __MPFR_DECLSPEC int mpfr_fac_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int,
! 658: mpfr_rnd_t));
! 659: __MPFR_DECLSPEC int mpfr_j0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 660: __MPFR_DECLSPEC int mpfr_j1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 661: __MPFR_DECLSPEC int mpfr_jn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr,
! 662: mpfr_rnd_t));
! 663: __MPFR_DECLSPEC int mpfr_y0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 664: __MPFR_DECLSPEC int mpfr_y1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 665: __MPFR_DECLSPEC int mpfr_yn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr,
! 666: mpfr_rnd_t));
! 667:
! 668: __MPFR_DECLSPEC int mpfr_ai _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
! 669:
! 670: __MPFR_DECLSPEC int mpfr_min _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
! 671: mpfr_rnd_t));
! 672: __MPFR_DECLSPEC int mpfr_max _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
! 673: mpfr_rnd_t));
! 674: __MPFR_DECLSPEC int mpfr_dim _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
! 675: mpfr_rnd_t));
! 676:
! 677: __MPFR_DECLSPEC int mpfr_mul_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 678: mpz_srcptr, mpfr_rnd_t));
! 679: __MPFR_DECLSPEC int mpfr_div_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 680: mpz_srcptr, mpfr_rnd_t));
! 681: __MPFR_DECLSPEC int mpfr_add_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 682: mpz_srcptr, mpfr_rnd_t));
! 683: __MPFR_DECLSPEC int mpfr_sub_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 684: mpz_srcptr, mpfr_rnd_t));
! 685: __MPFR_DECLSPEC int mpfr_z_sub _MPFR_PROTO ((mpfr_ptr, mpz_srcptr,
! 686: mpfr_srcptr, mpfr_rnd_t));
! 687: __MPFR_DECLSPEC int mpfr_cmp_z _MPFR_PROTO ((mpfr_srcptr, mpz_srcptr));
! 688:
! 689: __MPFR_DECLSPEC int mpfr_mul_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 690: mpq_srcptr, mpfr_rnd_t));
! 691: __MPFR_DECLSPEC int mpfr_div_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 692: mpq_srcptr, mpfr_rnd_t));
! 693: __MPFR_DECLSPEC int mpfr_add_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 694: mpq_srcptr, mpfr_rnd_t));
! 695: __MPFR_DECLSPEC int mpfr_sub_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
! 696: mpq_srcptr, mpfr_rnd_t));
! 697: __MPFR_DECLSPEC int mpfr_cmp_q _MPFR_PROTO ((mpfr_srcptr, mpq_srcptr));
! 698:
! 699: __MPFR_DECLSPEC int mpfr_cmp_f _MPFR_PROTO ((mpfr_srcptr, mpf_srcptr));
! 700:
! 701: __MPFR_DECLSPEC int mpfr_fma _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
! 702: mpfr_srcptr, mpfr_rnd_t));
! 703: __MPFR_DECLSPEC int mpfr_fms _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
! 704: mpfr_srcptr, mpfr_rnd_t));
! 705: __MPFR_DECLSPEC int mpfr_sum _MPFR_PROTO ((mpfr_ptr, mpfr_ptr *__gmp_const,
! 706: unsigned long, mpfr_rnd_t));
! 707:
! 708: __MPFR_DECLSPEC void mpfr_free_cache _MPFR_PROTO ((void));
! 709:
! 710: __MPFR_DECLSPEC int mpfr_subnormalize _MPFR_PROTO ((mpfr_ptr, int,
! 711: mpfr_rnd_t));
! 712:
! 713: __MPFR_DECLSPEC int mpfr_strtofr _MPFR_PROTO ((mpfr_ptr, __gmp_const char *,
! 714: char **, int, mpfr_rnd_t));
! 715:
! 716: __MPFR_DECLSPEC size_t mpfr_custom_get_size _MPFR_PROTO ((mpfr_prec_t));
! 717: __MPFR_DECLSPEC void mpfr_custom_init _MPFR_PROTO ((void *, mpfr_prec_t));
! 718: __MPFR_DECLSPEC void * mpfr_custom_get_significand _MPFR_PROTO ((mpfr_srcptr));
! 719: __MPFR_DECLSPEC mpfr_exp_t mpfr_custom_get_exp _MPFR_PROTO ((mpfr_srcptr));
! 720: __MPFR_DECLSPEC void mpfr_custom_move _MPFR_PROTO ((mpfr_ptr, void *));
! 721: __MPFR_DECLSPEC void mpfr_custom_init_set _MPFR_PROTO ((mpfr_ptr, int,
! 722: mpfr_exp_t, mpfr_prec_t, void *));
! 723: __MPFR_DECLSPEC int mpfr_custom_get_kind _MPFR_PROTO ((mpfr_srcptr));
! 724:
! 725: #if defined (__cplusplus)
! 726: }
! 727: #endif
! 728:
! 729: /* Define MPFR_USE_EXTENSION to avoid "gcc -pedantic" warnings. */
! 730: #ifndef MPFR_EXTENSION
! 731: # if defined(MPFR_USE_EXTENSION)
! 732: # define MPFR_EXTENSION __extension__
! 733: # else
! 734: # define MPFR_EXTENSION
! 735: # endif
! 736: #endif
! 737:
! 738: /* Warning! This macro doesn't work with K&R C (e.g., compare the "gcc -E"
! 739: output with and without -traditional) and shouldn't be used internally.
! 740: For public use only, but see the MPFR manual. */
! 741: #define MPFR_DECL_INIT(_x, _p) \
! 742: MPFR_EXTENSION mp_limb_t __gmpfr_local_tab_##_x[((_p)-1)/GMP_NUMB_BITS+1]; \
! 743: MPFR_EXTENSION mpfr_t _x = {{(_p),1,__MPFR_EXP_NAN,__gmpfr_local_tab_##_x}}
! 744:
! 745: /* Fast access macros to replace function interface.
! 746: If the USER don't want to use the macro interface, let him make happy
! 747: even if it produces faster and smaller code. */
! 748: #ifndef MPFR_USE_NO_MACRO
! 749:
! 750: /* Inlining theses functions is both faster and smaller */
! 751: #define mpfr_nan_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_NAN)
! 752: #define mpfr_inf_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_INF)
! 753: #define mpfr_zero_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_ZERO)
! 754: #define mpfr_regular_p(_x) ((_x)->_mpfr_exp > __MPFR_EXP_INF)
! 755: #define mpfr_sgn(_x) \
! 756: ((_x)->_mpfr_exp < __MPFR_EXP_INF ? \
! 757: (mpfr_nan_p (_x) ? mpfr_set_erangeflag () : (mpfr_void) 0), 0 : \
! 758: MPFR_SIGN (_x))
! 759:
! 760: /* Prevent them from using as lvalues */
! 761: #define MPFR_VALUE_OF(x) (0 ? (x) : (x))
! 762: #define mpfr_get_prec(_x) MPFR_VALUE_OF((_x)->_mpfr_prec)
! 763: #define mpfr_get_exp(_x) MPFR_VALUE_OF((_x)->_mpfr_exp)
! 764: /* Note: if need be, the MPFR_VALUE_OF can be used for other expressions
! 765: (of any type). Thanks to Wojtek Lerch and Tim Rentsch for the idea. */
! 766:
! 767: #define mpfr_round(a,b) mpfr_rint((a), (b), MPFR_RNDNA)
! 768: #define mpfr_trunc(a,b) mpfr_rint((a), (b), MPFR_RNDZ)
! 769: #define mpfr_ceil(a,b) mpfr_rint((a), (b), MPFR_RNDU)
! 770: #define mpfr_floor(a,b) mpfr_rint((a), (b), MPFR_RNDD)
! 771:
! 772: #define mpfr_cmp_ui(b,i) mpfr_cmp_ui_2exp((b),(i),0)
! 773: #define mpfr_cmp_si(b,i) mpfr_cmp_si_2exp((b),(i),0)
! 774: #define mpfr_set(a,b,r) mpfr_set4(a,b,r,MPFR_SIGN(b))
! 775: #define mpfr_abs(a,b,r) mpfr_set4(a,b,r,1)
! 776: #define mpfr_copysign(a,b,c,r) mpfr_set4(a,b,r,MPFR_SIGN(c))
! 777: #define mpfr_setsign(a,b,s,r) mpfr_set4(a,b,r,(s) ? -1 : 1)
! 778: #define mpfr_signbit(x) (MPFR_SIGN(x) < 0)
! 779: #define mpfr_cmp(b, c) mpfr_cmp3(b, c, 1)
! 780: #define mpfr_mul_2exp(y,x,n,r) mpfr_mul_2ui((y),(x),(n),(r))
! 781: #define mpfr_div_2exp(y,x,n,r) mpfr_div_2ui((y),(x),(n),(r))
! 782:
! 783:
! 784: /* When using GCC, optimize certain common comparisons and affectations.
! 785: + Remove ICC since it defines __GNUC__ but produces a
! 786: huge number of warnings if you use this code.
! 787: VL: I couldn't reproduce a single warning when enabling these macros
! 788: with icc 10.1 20080212 on Itanium. But with this version, __ICC isn't
! 789: defined (__INTEL_COMPILER is, though), so that these macros are enabled
! 790: anyway. Checking with other ICC versions is needed. Possibly detect
! 791: whether warnings are produced or not with a configure test.
! 792: + Remove C++ too, since it complains too much. */
! 793: /* Added casts to improve robustness in case of undefined behavior and
! 794: compiler extensions based on UB (in particular -fwrapv). MPFR doesn't
! 795: use such extensions, but these macros will be used by 3rd-party code,
! 796: where such extensions may be required.
! 797: Moreover casts to unsigned long have been added to avoid warnings in
! 798: programs that use MPFR and are compiled with -Wconversion; such casts
! 799: are OK since if X is a constant expression, then (unsigned long) X is
! 800: also a constant expression, so that the optimizations still work. The
! 801: warnings are probably related to the following two bugs:
! 802: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210
! 803: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38470 (possibly a variant)
! 804: and the casts could be removed once these bugs are fixed.
! 805: Casts shouldn't be used on the generic calls (to the ..._2exp functions),
! 806: where implicit conversions are performed. Indeed, having at least one
! 807: implicit conversion in the macro allows the compiler to emit diagnostics
! 808: when normally expected, for instance in the following call:
! 809: mpfr_set_ui (x, "foo", MPFR_RNDN);
! 810: If this is not possible (for future macros), one of the tricks described
! 811: on http://groups.google.com/group/comp.std.c/msg/e92abd24bf9eaf7b could
! 812: be used. */
! 813: #if defined (__GNUC__) && !defined(__ICC) && !defined(__cplusplus)
! 814: #if (__GNUC__ >= 2)
! 815: #undef mpfr_cmp_ui
! 816: /* We use the fact that mpfr_sgn on NaN sets the erange flag and returns 0.
! 817: But warning! mpfr_sgn is specified as a macro in the API, thus the macro
! 818: mustn't be used if side effects are possible, like here. */
! 819: #define mpfr_cmp_ui(_f,_u) \
! 820: (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \
! 821: (mpfr_sgn) (_f) : \
! 822: mpfr_cmp_ui_2exp ((_f), (_u), 0))
! 823: #undef mpfr_cmp_si
! 824: #define mpfr_cmp_si(_f,_s) \
! 825: (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \
! 826: mpfr_cmp_ui ((_f), (mpfr_ulong) (mpfr_long) (_s)) : \
! 827: mpfr_cmp_si_2exp ((_f), (_s), 0))
! 828: #if __GNUC__ > 2 || __GNUC_MINOR__ >= 95
! 829: #undef mpfr_set_ui
! 830: #define mpfr_set_ui(_f,_u,_r) \
! 831: (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \
! 832: __extension__ ({ \
! 833: mpfr_ptr _p = (_f); \
! 834: _p->_mpfr_sign = 1; \
! 835: _p->_mpfr_exp = __MPFR_EXP_ZERO; \
! 836: (mpfr_void) (_r); 0; }) : \
! 837: mpfr_set_ui_2exp ((_f), (_u), 0, (_r)))
! 838: #endif
! 839: #undef mpfr_set_si
! 840: #define mpfr_set_si(_f,_s,_r) \
! 841: (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \
! 842: mpfr_set_ui ((_f), (mpfr_ulong) (mpfr_long) (_s), (_r)) : \
! 843: mpfr_set_si_2exp ((_f), (_s), 0, (_r)))
! 844: #endif
! 845: #endif
! 846:
! 847: /* Macro version of mpfr_stack interface for fast access */
! 848: #define mpfr_custom_get_size(p) ((mpfr_size_t) \
! 849: (((p)+GMP_NUMB_BITS-1)/GMP_NUMB_BITS*sizeof (mp_limb_t)))
! 850: #define mpfr_custom_init(m,p) do {} while (0)
! 851: #define mpfr_custom_get_significand(x) ((mpfr_void*)((x)->_mpfr_d))
! 852: #define mpfr_custom_get_exp(x) ((x)->_mpfr_exp)
! 853: #define mpfr_custom_move(x,m) do { ((x)->_mpfr_d = (mp_limb_t*)(m)); } while (0)
! 854: #define mpfr_custom_init_set(x,k,e,p,m) do { \
! 855: mpfr_ptr _x = (x); \
! 856: mpfr_exp_t _e; \
! 857: mpfr_kind_t _t; \
! 858: mpfr_int _s, _k; \
! 859: _k = (k); \
! 860: if (_k >= 0) { \
! 861: _t = (mpfr_kind_t) _k; \
! 862: _s = 1; \
! 863: } else { \
! 864: _t = (mpfr_kind_t) - _k; \
! 865: _s = -1; \
! 866: } \
! 867: _e = _t == MPFR_REGULAR_KIND ? (e) : \
! 868: _t == MPFR_NAN_KIND ? __MPFR_EXP_NAN : \
! 869: _t == MPFR_INF_KIND ? __MPFR_EXP_INF : __MPFR_EXP_ZERO; \
! 870: _x->_mpfr_prec = (p); \
! 871: _x->_mpfr_sign = _s; \
! 872: _x->_mpfr_exp = _e; \
! 873: _x->_mpfr_d = (mp_limb_t*) (m); \
! 874: } while (0)
! 875: #define mpfr_custom_get_kind(x) \
! 876: ( (x)->_mpfr_exp > __MPFR_EXP_INF ? \
! 877: (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (x) \
! 878: : (x)->_mpfr_exp == __MPFR_EXP_INF ? \
! 879: (mpfr_int) MPFR_INF_KIND * MPFR_SIGN (x) \
! 880: : (x)->_mpfr_exp == __MPFR_EXP_NAN ? (mpfr_int) MPFR_NAN_KIND \
! 881: : (mpfr_int) MPFR_ZERO_KIND * MPFR_SIGN (x) )
! 882:
! 883:
! 884: #endif /* MPFR_USE_NO_MACRO */
! 885:
! 886: /* Theses are defined to be macros */
! 887: #define mpfr_init_set_si(x, i, rnd) \
! 888: ( mpfr_init(x), mpfr_set_si((x), (i), (rnd)) )
! 889: #define mpfr_init_set_ui(x, i, rnd) \
! 890: ( mpfr_init(x), mpfr_set_ui((x), (i), (rnd)) )
! 891: #define mpfr_init_set_d(x, d, rnd) \
! 892: ( mpfr_init(x), mpfr_set_d((x), (d), (rnd)) )
! 893: #define mpfr_init_set_ld(x, d, rnd) \
! 894: ( mpfr_init(x), mpfr_set_ld((x), (d), (rnd)) )
! 895: #define mpfr_init_set_z(x, i, rnd) \
! 896: ( mpfr_init(x), mpfr_set_z((x), (i), (rnd)) )
! 897: #define mpfr_init_set_q(x, i, rnd) \
! 898: ( mpfr_init(x), mpfr_set_q((x), (i), (rnd)) )
! 899: #define mpfr_init_set(x, y, rnd) \
! 900: ( mpfr_init(x), mpfr_set((x), (y), (rnd)) )
! 901: #define mpfr_init_set_f(x, y, rnd) \
! 902: ( mpfr_init(x), mpfr_set_f((x), (y), (rnd)) )
! 903:
! 904: /* Compatibility layer -- obsolete functions and macros */
! 905: /* Note: it is not possible to output warnings, unless one defines
! 906: * a deprecated variable and uses it, e.g.
! 907: * MPFR_DEPRECATED extern int mpfr_deprecated_feature;
! 908: * #define MPFR_EMIN_MIN ((void)mpfr_deprecated_feature,mpfr_get_emin_min())
! 909: * (the cast to void avoids a warning because the left-hand operand
! 910: * has no effect).
! 911: */
! 912: #define mpfr_cmp_abs mpfr_cmpabs
! 913: #define mpfr_round_prec(x,r,p) mpfr_prec_round(x,p,r)
! 914: #define __gmp_default_rounding_mode (mpfr_get_default_rounding_mode())
! 915: #define __mpfr_emin (mpfr_get_emin())
! 916: #define __mpfr_emax (mpfr_get_emax())
! 917: #define __mpfr_default_fp_bit_precision (mpfr_get_default_fp_bit_precision())
! 918: #define MPFR_EMIN_MIN mpfr_get_emin_min()
! 919: #define MPFR_EMIN_MAX mpfr_get_emin_max()
! 920: #define MPFR_EMAX_MIN mpfr_get_emax_min()
! 921: #define MPFR_EMAX_MAX mpfr_get_emax_max()
! 922: #define mpfr_version (mpfr_get_version())
! 923: #ifndef mpz_set_fr
! 924: # define mpz_set_fr mpfr_get_z
! 925: #endif
! 926: #define mpfr_add_one_ulp(x,r) \
! 927: (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
! 928: #define mpfr_sub_one_ulp(x,r) \
! 929: (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))
! 930: #define mpfr_get_z_exp mpfr_get_z_2exp
! 931: #define mpfr_custom_get_mantissa mpfr_custom_get_significand
! 932:
! 933: #endif /* __MPFR_H */
! 934:
! 935:
! 936: /* Check if <stdint.h> / <inttypes.h> is included or if the user
! 937: explicitly wants intmax_t. Automatical detection is done by
! 938: checking:
! 939: - INTMAX_C and UINTMAX_C, but not if the compiler is a C++ one
! 940: (as suggested by Patrick Pelissier) because the test does not
! 941: work well in this case. See:
! 942: https://sympa.inria.fr/sympa/arc/mpfr/2010-02/msg00025.html
! 943: We do not check INTMAX_MAX and UINTMAX_MAX because under Solaris,
! 944: these macros are always defined by <limits.h> (i.e. even when
! 945: <stdint.h> and <inttypes.h> are not included).
! 946: - _STDINT_H (defined by the glibc), _STDINT_H_ (defined under
! 947: Mac OS X) and _STDINT (defined under MS Visual Studio), but
! 948: this test may not work with all implementations.
! 949: Portable software should not rely on these tests.
! 950: */
! 951: #if (defined (INTMAX_C) && defined (UINTMAX_C) && !defined(__cplusplus)) || \
! 952: defined (MPFR_USE_INTMAX_T) || \
! 953: defined (_STDINT_H) || defined (_STDINT_H_) || defined (_STDINT)
! 954: # ifndef _MPFR_H_HAVE_INTMAX_T
! 955: # define _MPFR_H_HAVE_INTMAX_T 1
! 956:
! 957: #if defined (__cplusplus)
! 958: extern "C" {
! 959: #endif
! 960:
! 961: #define mpfr_set_sj __gmpfr_set_sj
! 962: #define mpfr_set_sj_2exp __gmpfr_set_sj_2exp
! 963: #define mpfr_set_uj __gmpfr_set_uj
! 964: #define mpfr_set_uj_2exp __gmpfr_set_uj_2exp
! 965: #define mpfr_get_sj __gmpfr_mpfr_get_sj
! 966: #define mpfr_get_uj __gmpfr_mpfr_get_uj
! 967: __MPFR_DECLSPEC int mpfr_set_sj _MPFR_PROTO ((mpfr_t, intmax_t, mpfr_rnd_t));
! 968: __MPFR_DECLSPEC int
! 969: mpfr_set_sj_2exp _MPFR_PROTO ((mpfr_t, intmax_t, intmax_t, mpfr_rnd_t));
! 970: __MPFR_DECLSPEC int mpfr_set_uj _MPFR_PROTO ((mpfr_t, uintmax_t, mpfr_rnd_t));
! 971: __MPFR_DECLSPEC int
! 972: mpfr_set_uj_2exp _MPFR_PROTO ((mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t));
! 973: __MPFR_DECLSPEC intmax_t mpfr_get_sj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
! 974: __MPFR_DECLSPEC uintmax_t mpfr_get_uj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
! 975:
! 976: #if defined (__cplusplus)
! 977: }
! 978: #endif
! 979:
! 980: # endif /* _MPFR_H_HAVE_INTMAX_T */
! 981: #endif
! 982:
! 983:
! 984: /* Check if <stdio.h> has been included or if the user wants FILE */
! 985: #if defined (_GMP_H_HAVE_FILE) || defined (MPFR_USE_FILE)
! 986: # ifndef _MPFR_H_HAVE_FILE
! 987: # define _MPFR_H_HAVE_FILE 1
! 988:
! 989: #if defined (__cplusplus)
! 990: extern "C" {
! 991: #endif
! 992:
! 993: #define mpfr_inp_str __gmpfr_inp_str
! 994: #define mpfr_out_str __gmpfr_out_str
! 995: __MPFR_DECLSPEC size_t mpfr_inp_str _MPFR_PROTO ((mpfr_ptr, FILE*, int,
! 996: mpfr_rnd_t));
! 997: __MPFR_DECLSPEC size_t mpfr_out_str _MPFR_PROTO ((FILE*, int, size_t,
! 998: mpfr_srcptr, mpfr_rnd_t));
! 999: #define mpfr_fprintf __gmpfr_fprintf
! 1000: __MPFR_DECLSPEC int mpfr_fprintf _MPFR_PROTO ((FILE*, __gmp_const char*,
! 1001: ...));
! 1002:
! 1003: #if defined (__cplusplus)
! 1004: }
! 1005: #endif
! 1006:
! 1007: # endif /* _MPFR_H_HAVE_FILE */
! 1008: #endif
! 1009:
! 1010:
! 1011: /* check if <stdarg.h> has been included or if the user wants va_list */
! 1012: #if defined (_GMP_H_HAVE_VA_LIST) || defined (MPFR_USE_VA_LIST)
! 1013: # ifndef _MPFR_H_HAVE_VA_LIST
! 1014: # define _MPFR_H_HAVE_VA_LIST 1
! 1015:
! 1016: #if defined (__cplusplus)
! 1017: extern "C" {
! 1018: #endif
! 1019:
! 1020: #define mpfr_vprintf __gmpfr_vprintf
! 1021: #define mpfr_vasprintf __gmpfr_vasprintf
! 1022: #define mpfr_vsprintf __gmpfr_vsprintf
! 1023: #define mpfr_vsnprintf __gmpfr_vsnprintf
! 1024: __MPFR_DECLSPEC int mpfr_vprintf _MPFR_PROTO ((__gmp_const char*, va_list));
! 1025: __MPFR_DECLSPEC int mpfr_vasprintf _MPFR_PROTO ((char**, __gmp_const char*,
! 1026: va_list));
! 1027: __MPFR_DECLSPEC int mpfr_vsprintf _MPFR_PROTO ((char*, __gmp_const char*,
! 1028: va_list));
! 1029: __MPFR_DECLSPEC int mpfr_vsnprintf _MPFR_PROTO ((char*, size_t,
! 1030: __gmp_const char*, va_list));
! 1031:
! 1032: #if defined (__cplusplus)
! 1033: }
! 1034: #endif
! 1035:
! 1036: # endif /* _MPFR_H_HAVE_VA_LIST */
! 1037: #endif
! 1038:
! 1039:
! 1040: /* check if <stdarg.h> has been included and if FILE is available
! 1041: (see above) */
! 1042: #if defined (_MPFR_H_HAVE_VA_LIST) && defined (_MPFR_H_HAVE_FILE)
! 1043: # ifndef _MPFR_H_HAVE_VA_LIST_FILE
! 1044: # define _MPFR_H_HAVE_VA_LIST_FILE 1
! 1045:
! 1046: #if defined (__cplusplus)
! 1047: extern "C" {
! 1048: #endif
! 1049:
! 1050: #define mpfr_vfprintf __gmpfr_vfprintf
! 1051: __MPFR_DECLSPEC int mpfr_vfprintf _MPFR_PROTO ((FILE*, __gmp_const char*,
! 1052: va_list));
! 1053:
! 1054: #if defined (__cplusplus)
! 1055: }
! 1056: #endif
! 1057:
! 1058: # endif /* _MPFR_H_HAVE_VA_LIST_FILE */
! 1059: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>