summaryrefslogtreecommitdiff
path: root/Build/source/libs/mpfr/mpfr-src
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-02-22 06:02:38 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-02-22 06:02:38 +0000
commitb2ef5d127f546fa32f303b1dedfc4a6390ad677e (patch)
tree17cd90adb54888579df0e08223bf4909332380c2 /Build/source/libs/mpfr/mpfr-src
parent05d739843a7c50294efbda2abf2ab4ea3fc146b1 (diff)
libs/mpfr: New convention
git-svn-id: svn://tug.org/texlive/trunk@39814 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/mpfr/mpfr-src')
-rw-r--r--Build/source/libs/mpfr/mpfr-src/AUTHORS23
-rw-r--r--Build/source/libs/mpfr/mpfr-src/BUGS73
-rw-r--r--Build/source/libs/mpfr/mpfr-src/ChangeLog68083
-rw-r--r--Build/source/libs/mpfr/mpfr-src/INSTALL660
-rw-r--r--Build/source/libs/mpfr/mpfr-src/Makefile.am38
-rw-r--r--Build/source/libs/mpfr/mpfr-src/NEWS319
-rw-r--r--Build/source/libs/mpfr/mpfr-src/PATCHES0
-rw-r--r--Build/source/libs/mpfr/mpfr-src/README89
-rw-r--r--Build/source/libs/mpfr/mpfr-src/TODO434
-rw-r--r--Build/source/libs/mpfr/mpfr-src/VERSION1
-rw-r--r--Build/source/libs/mpfr/mpfr-src/acinclude.m41082
-rw-r--r--Build/source/libs/mpfr/mpfr-src/configure.ac631
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/Makefile.am93
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/abort_prec_max.c32
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/acos.c146
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/acosh.c158
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/add.c111
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/add1.c538
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/add1sp.c387
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/add_d.c52
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/add_ui.c58
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/agm.c319
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ai.c664
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/amd/amdfam10/mparam.h236
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/amd/athlon/mparam.h90
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/amd/k8/mparam.h236
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/arm/mparam.h232
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/asin.c125
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/asinh.c119
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/atan.c437
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/atan2.c281
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/atanh.c130
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/bernoulli.c80
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/buildopt.c63
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cache.c145
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cbrt.c153
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/check.c80
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/clear.c31
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/clears.c61
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp.c104
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp2.c243
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp_abs.c94
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp_d.c38
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp_ld.c38
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp_si.c101
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cmp_ui.c101
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/comparisons.c78
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/const_catalan.c153
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/const_euler.c221
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/const_log2.c200
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/const_pi.c128
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/constant.c28
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/copysign.c38
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cos.c299
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cosh.c128
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/cot.c96
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/coth.c93
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/csc.c76
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/csch.c79
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/d_div.c50
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/d_sub.c50
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/digamma.c378
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/dim.c48
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/div.c794
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/div_2exp.c33
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/div_2si.c60
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/div_2ui.c61
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/div_d.c51
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/div_ui.c281
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/dump.c30
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/eint.c319
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/eq.c141
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/erf.c262
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/erfc.c277
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/exceptions.c360
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/exp.c164
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/exp10.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/exp2.c151
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/exp3.c335
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/exp_2.c421
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/expm1.c179
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/extract.c55
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/factorial.c113
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_intmax.c107
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_s.h89
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_sint.c28
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_slong.c28
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_sshort.c28
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_u.h70
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_uint.c27
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_uintmax.c45
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_ulong.c27
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fits_ushort.c27
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fma.c319
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/fms.c304
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/frac.c144
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/free_cache.c59
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/frexp.c56
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/gamma.c439
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/gammaonethird.c191
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/gen_inverse.h106
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/generic/mparam.h69
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_d.c183
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_d64.c400
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_exp.c31
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_f.c148
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_flt.c123
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_ld.c222
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_patches.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_si.c69
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_sj.c123
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_str.c2555
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_ui.c65
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_uj.c82
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_z.c61
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/get_z_exp.c79
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/gmp_op.c489
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/grandom.c198
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/hppa/mparam.h233
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/hypot.c194
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ia64/mparam.h233
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ieee_floats.h80
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/init.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/init2.c69
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/inits.c62
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/inits2.c66
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/inp_str.c89
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/int_ceil_log2.c42
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/isinf.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/isinteger.c59
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/isnan.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/isnum.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/isqrt.c84
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/isregular.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/iszero.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/jn.c329
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/jyn_asympt.c269
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/li2.c634
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/lngamma.c738
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/log.c171
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/log10.c150
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/log1p.c158
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/log2.c142
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/logging.c124
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/min_prec.c33
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/minmax.c92
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/modf.c102
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mp_clz_tab.c38
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mparam_h.in94
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpf2mpfr.h175
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.c386
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.h412
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr-impl.h1941
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr-intmax.h40
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr-longlong.h1943
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr-thread.h48
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpfr.h1059
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mpn_exp.c174
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mul.c547
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mul_2exp.c33
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mul_2si.c59
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mul_2ui.c66
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mul_d.c52
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mul_ui.c133
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/mulders.c495
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/neg.c39
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/next.c150
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/out_str.c98
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/pow.c715
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/pow_si.c250
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/pow_ui.c164
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/pow_z.c373
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/powerof2.c49
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/powerpc32/mparam.h232
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/powerpc64/mparam.h233
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/print_raw.c129
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/print_rnd_mode.c46
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/printf.c215
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/rec_sqrt.c556
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/reldiff.c73
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/rem1.c229
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/rint.c443
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/root.c205
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/round_near_x.c233
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/round_p.c123
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/round_prec.c240
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/round_raw_generic.c259
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/scale2.c91
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sec.c34
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sech.c40
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set.c80
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_d.c255
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_d64.c224
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_dfl_prec.c41
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_exp.c37
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_f.c99
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_flt.c34
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_inf.c33
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_ld.c331
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_nan.c31
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_prc_raw.c31
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_prec.c55
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_q.c135
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_rnd.c40
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_si.c30
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_si_2exp.c73
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_sj.c52
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_str.c42
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_str_raw.c55
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_ui.c30
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_ui_2exp.c72
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_uj.c123
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_z.c30
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_z_exp.c180
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/set_zero.c31
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/setmax.c41
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/setmin.c38
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/setsign.c30
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sgn.c40
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/si_op.c57
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/signbit.c30
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sin.c187
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sin_cos.c662
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sinh.c184
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sinh_cosh.c161
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sparc64/mparam.h233
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sqr.c112
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sqrt.c231
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sqrt_ui.c54
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/stack_interface.c104
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/strtofr.c853
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sub.c116
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sub1.c657
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sub1sp.c810
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sub_d.c51
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sub_ui.c60
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/subnormal.c163
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/sum.c316
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/swap.c54
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/tan.c89
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/tanh.c153
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/uceil_exp2.c65
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/uceil_log2.c63
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ufloor_log2.c53
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ui_div.c113
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ui_pow.c41
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ui_pow_ui.c95
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/ui_sub.c78
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/urandom.c147
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/urandomb.c110
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/vasprintf.c2090
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/version.c29
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/volatile.c36
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/x86/core2/mparam.h234
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/x86/mparam.h233
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/x86_64/core2/mparam.h236
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/x86_64/pentium4/mparam.h160
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/yn.c426
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/zeta.c466
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/zeta_ui.c244
260 files changed, 120278 insertions, 0 deletions
diff --git a/Build/source/libs/mpfr/mpfr-src/AUTHORS b/Build/source/libs/mpfr/mpfr-src/AUTHORS
new file mode 100644
index 00000000000..5cd6c87be35
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/AUTHORS
@@ -0,0 +1,23 @@
+Authors of MPFR (in chronological order of initial contribution):
+
+Guillaume Hanrot Main author
+Fabrice Rouillier Original version of mul_ui.c, gmp_op.c
+Paul Zimmermann Main author
+Sylvie Boldo Original version of agm.c and log.c
+Jean-Luc Rémy Original version of zeta.c
+Emmanuel Jeandel Original version of exp3.c, const_pi.c, sincos.c
+Mathieu Dutour acos.c, asin.c, atan.c and early gamma.c
+Vincent Lefèvre Main author
+David Daney Hyperbolic and inverse hyperbolic functions, base-2
+ and base-10 exponential and logarithm, factorial
+Alain Delplanque Rewritten get_str.c
+Ludovic Meunier Error function (erf.c)
+Patrick Pélissier Main author
+Laurent Fousse Original version of sum.c
+Damien Stehlé Function mpfr_get_ld_2exp
+Philippe Théveny Main author
+Sylvain Chevillard Original version of ai.c
+
+The main authors are included in the MPFR mailing-list <mpfr@inria.fr>.
+This is the preferred way to contact us. For further information, please
+look at the MPFR web page <http://www.mpfr.org/>.
diff --git a/Build/source/libs/mpfr/mpfr-src/BUGS b/Build/source/libs/mpfr/mpfr-src/BUGS
new file mode 100644
index 00000000000..3e1536200cf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/BUGS
@@ -0,0 +1,73 @@
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+##############################################################################
+
+Known bugs:
+
+* The overflow/underflow exceptions may be badly handled in some functions;
+ specially when the intermediary internal results have exponent which
+ exceeds the hardware limit (2^30 for a 32 bits CPU, and 2^62 for a 64 bits
+ CPU) or the exact result is close to an overflow/underflow threshold.
+
+* Under Linux/x86 with the traditional FPU, some functions do not work
+ if the FPU rounding precision has been changed to single (this is a
+ bad practice and should be useless, but one never knows what other
+ software will do).
+
+* Some functions do not use MPFR_SAVE_EXPO_* macros, thus do not behave
+ correctly in a reduced exponent range.
+
+* Function hypot gives incorrect result when on the one hand the difference
+ between parameters' exponents is near 2*MPFR_EMAX_MAX and on the other hand
+ the output precision or the precision of the parameter with greatest
+ absolute value is greater than 2*MPFR_EMAX_MAX-4.
+
+Potential bugs:
+
+* Possible incorrect results due to internal underflow, which can lead to
+ a huge loss of accuracy while the error analysis doesn't take that into
+ account. If the underflow occurs at the last function call (just before
+ the MPFR_CAN_ROUND), the result should be correct (or MPFR gets into an
+ infinite loop). TODO: check the code and the error analysis.
+
+* Possible integer overflows on some machines.
+
+* Possible bugs with huge precisions (> 2^30).
+
+* Possible bugs if the chosen exponent range does not allow to represent
+ the range [1/16, 16].
+
+* Possible infinite loop in some functions for particular cases: when
+ the exact result is an exactly representable number or the middle of
+ consecutive two such numbers. However for non-algebraic functions, it is
+ believed that no such case exists, except the well-known cases like cos(0)=1,
+ exp(0)=1, and so on, and the x^y function when y is an integer or y=1/2^k.
+
+* The mpfr_set_ld function may be quite slow if the long double type has an
+ exponent of more than 15 bits.
+
+* mpfr_set_d may give wrong results on some non-IEEE architectures.
+
+* Error analysis for some functions may be incorrect (out-of-date due
+ to modifications in the code?).
+
+* Possible use of non-portable feature (pre-C99) of the integer division
+ with negative result.
diff --git a/Build/source/libs/mpfr/mpfr-src/ChangeLog b/Build/source/libs/mpfr/mpfr-src/ChangeLog
new file mode 100644
index 00000000000..1a7ec5812ca
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/ChangeLog
@@ -0,0 +1,68083 @@
+------------------------------------------------------------------------
+r9582 | vlefevre | 2015-06-19 19:50:16 +0000 (Fri, 19 Jun 2015) | 1 line
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.3.
+------------------------------------------------------------------------
+r9577 | vlefevre | 2015-06-12 15:37:01 +0000 (Fri, 12 Jun 2015) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r9576 | vlefevre | 2015-06-12 15:34:37 +0000 (Fri, 12 Jun 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/faq.xsl
+
+[doc/faq.xsl] Remove the indent="no" to get the same behavior as before
+when using libxslt 1.1.27+. See:
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718535#10
+(merged changeset r9575 from the trunk)
+------------------------------------------------------------------------
+r9574 | vlefevre | 2015-06-12 15:22:10 +0000 (Fri, 12 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.3-rc1 and updated libmpfr_la_LDFLAGS in
+src/Makefile.am for the next release.
+------------------------------------------------------------------------
+r9573 | vlefevre | 2015-06-12 14:04:56 +0000 (Fri, 12 Jun 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tfma.c
+
+[tests/tfma.c] Improved the new underflow tests (test_underflow3) to
+test FMA(-x,y,-z).
+(merged changeset r9572 from the trunk)
+------------------------------------------------------------------------
+r9570 | vlefevre | 2015-06-12 13:38:54 +0000 (Fri, 12 Jun 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/tests/tfma.c
+
+[src/fma.c] Fixed the scaling in case of underflow. Added log messages.
+[tests/tfma.c] Added testcases. Code clean-up.
+(merged changesets r9560-9569 from the trunk, with mpfr_flags_t
+replaced by unsigned int)
+------------------------------------------------------------------------
+r9556 | vlefevre | 2015-06-11 00:55:01 +0000 (Thu, 11 Jun 2015) | 4 lines
+Changed paths:
+ M /branches/3.1/src/urandomb.c
+
+[src/urandomb.c] Replaced mpn_copyd by MPN_COPY for GMP 4 compatibility.
+Note: The trunk does something better (see r8813), but let's keep the
+change minimal in this branch, in particular for code that is executed
+very rarely (1/2^32 or 1/2^64 probability).
+------------------------------------------------------------------------
+r9555 | vlefevre | 2015-06-11 00:34:36 +0000 (Thu, 11 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/urandomb.c
+
+[src/urandomb.c] Replaced mpn_copyi by mpn_copyd.
+(merged changeset r8763 from the trunk)
+------------------------------------------------------------------------
+r9554 | vlefevre | 2015-06-10 23:56:37 +0000 (Wed, 10 Jun 2015) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/trandom.c
+
+[tests/trandom.c] The use of mpfr_rands yielded a compilation failure
+of trandom.c with --with-gmp-build; it should have been __gmp_rands or
+RANDS. But let's do better by using a new gmp_randstate_t as done in
+bug20100914().
+(merged changeset r9553 from the trunk)
+------------------------------------------------------------------------
+r9552 | vlefevre | 2015-06-10 15:40:11 +0000 (Wed, 10 Jun 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/tests/trandom.c
+
+[src/urandomb.c] Fixed bug which could appear with probability 1/2^32
+ (32-bit limbs) or 1/2^64 (64-bit limbs).
+[tests/trandom.c] Added testcase for 32-bit limbs.
+(merged changesets r8762,9550-9551 from the trunk)
+------------------------------------------------------------------------
+r9548 | vlefevre | 2015-06-10 10:47:35 +0000 (Wed, 10 Jun 2015) | 10 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/sin.c
+
+[src/{cos.c,sin.c}] Fixed bug related to the exponent range, introduced
+in r6461 with the use of mpfr_sincos_fast.
+Details:
+ For mpfr_sin, the exponent range was not restored, and restoring it
+ before calling mpfr_sincos_fast as this was done for mpfr_cos did
+ not work; indeed the source of this function shows that it needs an
+ extended exponent range. So, changed both mpfr_cos and mpfr_sin to
+ call mpfr_sincos_fast in the extended exponent range and restore the
+ exponent range at the end, like in usual code.
+(merged changeset r9542 from the trunk)
+------------------------------------------------------------------------
+r9547 | vlefevre | 2015-06-10 10:45:39 +0000 (Wed, 10 Jun 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tsin.c
+
+[tests/tsin.c] Added tests to check the mpfr_sin_fast call in src/sin.c,
+which is currently buggy, modifying the exponent range in particular.
+(merged changeset r8273 from the trunk)
+------------------------------------------------------------------------
+r9546 | vlefevre | 2015-06-10 10:41:54 +0000 (Wed, 10 Jun 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tgeneric.c
+
+[tests/tgeneric.c] Added overflow/underflow tests. Check whether the
+exponent range has been modified by the tested function (which should
+never happen).
+(merged/ported changesets r9539,9541,9544 from the trunk)
+------------------------------------------------------------------------
+r9524 | vlefevre | 2015-06-08 00:54:03 +0000 (Mon, 08 Jun 2015) | 6 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/tzeta_ui.c
+
+[src/zeta_ui.c]
+ * Support reduced exponent range for the generic case.
+ * Added logging.
+[tests/tzeta_ui.c] Added tests in reduced exponent range.
+(merged changesets r9518-9523 from the trunk, with mpfr_flags_t
+replaced by unsigned int)
+------------------------------------------------------------------------
+r9522 | vlefevre | 2015-06-08 00:29:04 +0000 (Mon, 08 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/add_ui.c
+
+[src/add_ui.c] Fixed format string in MPFR_LOG_FUNC.
+(merged changeset r9521 from the trunk)
+------------------------------------------------------------------------
+r9517 | vlefevre | 2015-06-05 08:53:56 +0000 (Fri, 05 Jun 2015) | 28 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_sub.c
+
+Various fixes, improvements and new tests concerning the exponent range
+and exceptions (flags). Details:
+
+[src/set_q.c]
+ * Added missing MPFR_SAVE_EXPO_FREE in case of preliminary overflow
+ or underflow (extreme cases).
+ * Replaced a "return" by MPFR_RET: this is at least needed in the
+ extreme case cd != 0, and safer in general.
+
+[src/{ui_div.c,ui_sub.c}] Correction for reduced exponent range.
+
+[tests/tgeneric.c] Major clean-up, with some minor corrections.
+Added support for unsigned long argument, which can be the first
+or the second one (another intent is to replace tgeneric_ui.c,
+which does fewer tests concerning the flags).
+
+[tests/t{add,div,mul,sub}_ui.c] Replaced tgeneric_ui.c by tgeneric.c,
+showing the mpfr_mul_ui bug fixed in r9516 (missing inexact flag).
+
+[tests/tpow_all.c] Better flags output in error message.
+
+[tests/tset_q.c] Check the flags.
+
+[tests/{tui_div.c,tui_sub.c}] Added generic tests, yielding assertion
+failures without the above fix when assertions are checked. Added a
+new test checking overflow.
+
+(merged changesets r9494-9514 from the trunk)
+------------------------------------------------------------------------
+r9516 | vlefevre | 2015-06-05 08:34:34 +0000 (Fri, 05 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mul_ui.c
+
+[src/mul_ui.c] Fixed bug in mpfr_mul_ui/si: the inexact flag wasn't set.
+(merged changeset r9505 from the trunk)
+------------------------------------------------------------------------
+r9501 | vlefevre | 2015-06-04 10:08:54 +0000 (Thu, 04 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tdiv_d.c
+
+[tests/tdiv_d.c] Corrected the tested function for the generic tests.
+(merged changeset r9500 from the trunk)
+------------------------------------------------------------------------
+r9499 | vlefevre | 2015-06-04 10:04:47 +0000 (Thu, 04 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/td_div.c
+
+[tests/td_div.c] Corrected the tested function for the generic tests.
+(merged changeset r9498 from the trunk)
+------------------------------------------------------------------------
+r9496 | vlefevre | 2015-06-04 02:07:49 +0000 (Thu, 04 Jun 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tgeneric_ui.c
+
+[tests/tgeneric_ui.c] Added missing \n. Minor improvements.
+(merged changeset r9495 from the trunk)
+------------------------------------------------------------------------
+r9493 | vlefevre | 2015-06-03 14:27:31 +0000 (Wed, 03 Jun 2015) | 8 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/tests/trint.c
+
+[src/rint.c] Simplified and fixed the mpfr_rint_* functions: in some
+ corner cases, an intermediate overflow would not be propagated.
+ Handle reduced exponent range.
+[tests/trint.c] Added generic tests for the mpfr_rint_* functions.
+ Since all numbers in ]0,1/2[ round to the same value, in order to
+ avoid redundant tests, increased the TEST_RANDOM_EMIN value to -20
+ and set TEST_RANDOM_ALWAYS_SCALE to 1. Added basic tests.
+(merged changesets r8953,9472-9473,9476-9492 from the trunk)
+------------------------------------------------------------------------
+r9491 | vlefevre | 2015-06-03 14:16:59 +0000 (Wed, 03 Jun 2015) | 12 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/tsin_cos.c
+
+[tests] Added always_scale argument (boolean) to tests_default_random()
+so that when it is true, scaling is always performed on random numbers
+generated by mpfr_urandomb(), instead of preferring numbers of the order
+of magnitude of 1 for half outputs. This will be useful for mpfr_rint_*
+tests.
+
+For tgeneric.c, the value of this argument is controlled by a new macro
+TEST_RANDOM_ALWAYS_SCALE (0 by default, which corresponds to the current
+behavior). For the other tests that call tests_default_random(), the
+argument is set to 0, so that the behavior remains the same.
+
+(merged changeset r9471 from the trunk)
+------------------------------------------------------------------------
+r9483 | vlefevre | 2015-06-02 12:20:53 +0000 (Tue, 02 Jun 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Added description of the flags for the mpfr_rint,
+mpfr_ceil, mpfr_floor, mpfr_round, mpfr_trunc functions.
+(merged changeset r9482 from the trunk)
+------------------------------------------------------------------------
+r9479 | vlefevre | 2015-05-31 09:49:05 +0000 (Sun, 31 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] For the gcc compiler, better choice of the -W flags
+when the selected language is C++ (e.g. when CC=g++).
+(merged changeset r9478 from the trunk)
+------------------------------------------------------------------------
+r9475 | vlefevre | 2015-05-29 11:19:54 +0000 (Fri, 29 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Added blank lines to improve readability.
+(merged changeset r9474 from the trunk)
+------------------------------------------------------------------------
+r9470 | vlefevre | 2015-05-29 08:55:40 +0000 (Fri, 29 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Added a remark concerning the mpfr_rint_* functions.
+(merged changeset r9469 from the trunk)
+------------------------------------------------------------------------
+r9468 | vlefevre | 2015-05-28 21:04:37 +0000 (Thu, 28 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1/tests/tstdint.c
+
+[tests/tstdint.c] Added missing #include <stdlib.h> needed since r9448
+(this #include was not necessary in the trunk thanks to r8053).
+------------------------------------------------------------------------
+r9467 | vlefevre | 2015-05-28 17:57:17 +0000 (Thu, 28 May 2015) | 9 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+
+[src] Fixed allocation issue for multithreaded applications:
+https://sympa.inria.fr/sympa/arc/mpfr/2015-05/msg00001.html
+ * mpfr-gmp.{c,h}: made mpfr_allocate_func, mpfr_reallocate_func and
+ mpfr_free_func thread-local; updated MPFR_GET_MEMFUNC to execute
+ mp_get_memory_functions only when these pointers have not been set
+ to the actual function pointers yet.
+ * mpfr-impl.h: #include "mpfr-thread.h" earlier (before mpfr-gmp.h,
+ where MPFR_THREAD_ATTR is now used).
+(merged changeset r9466 from the trunk)
+------------------------------------------------------------------------
+r9458 | vlefevre | 2015-05-23 23:42:14 +0000 (Sat, 23 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1/src/frexp.c
+
+Added svn:keywords on src/frexp.c for consistency.
+------------------------------------------------------------------------
+r9454 | vlefevre | 2015-05-23 23:09:18 +0000 (Sat, 23 May 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tvalist.c
+
+[tests/{tstdint.c,tvalist.c}] Added missing #include "mpfr-test.h"
+(detected with gcc -Werror=implicit-function-declaration), needed
+since r9448.
+(merged changeset r9453 from the trunk)
+------------------------------------------------------------------------
+r9452 | vlefevre | 2015-05-23 08:13:46 +0000 (Sat, 23 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tstckintc.c
+
+[tests/tstckintc.c] Fixed undefined behavior (invalid pointer).
+(merged changeset r9450 from the trunk)
+------------------------------------------------------------------------
+r9448 | vlefevre | 2015-05-22 09:22:44 +0000 (Fri, 22 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tvalist.c
+
+[tests/{tstdint.c,tvalist.c}] Use tests_start_mpfr / tests_end_mpfr,
+in particular to detect a wrong MPFR version (due to a libtool bug).
+(merged changeset r9447 from the trunk)
+------------------------------------------------------------------------
+r9446 | vlefevre | 2015-05-21 15:09:16 +0000 (Thu, 21 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/autogen.sh
+
+[autogen.sh] Exit with the exit status of autoreconf. Thus a failure
+will be noticed more easily.
+(merged changeset r9445 from the trunk)
+------------------------------------------------------------------------
+r9444 | vlefevre | 2015-05-21 14:15:50 +0000 (Thu, 21 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1/NEWS
+
+[NEWS] Update for GNU MPFR 3.1.3.
+------------------------------------------------------------------------
+r9442 | vlefevre | 2015-05-21 14:05:16 +0000 (Thu, 21 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1/tools/ck-copyright-notice
+
+[tools/ck-copyright-notice] Update from the trunk.
+------------------------------------------------------------------------
+r9439 | vlefevre | 2015-05-21 11:15:52 +0000 (Thu, 21 May 2015) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+
+[acinclude.m4] Various corrections in the tests:
+ * MPFR_FUNC_GMP_PRINTF_SPEC: missing #include <string.h> for strcmp.
+ * Replaced rint by nearbyint in messages (as nearbyint is tested).
+ * Avoid warnings to avoid failures when -Werror is used.
+(merged changeset r9438 from the trunk)
+------------------------------------------------------------------------
+r9437 | vlefevre | 2015-05-21 01:39:10 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/Makefile.am
+
+[Makefile.am] Added a comment about ACLOCAL_AMFLAGS.
+(merged changesets r8520,9379 from the trunk)
+------------------------------------------------------------------------
+r9436 | vlefevre | 2015-05-21 01:37:16 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/README
+
+[README] Added ar-lib (from AM_PROG_AR) and test-driver (Automake 1.12+).
+(merged changeset r8578 from the trunk)
+------------------------------------------------------------------------
+r9435 | vlefevre | 2015-05-21 01:34:16 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+
+Added ar-lib to svn:ignore property (this script comes from Automake,
+due to the use of AM_PROG_AR in configure.ac).
+------------------------------------------------------------------------
+r9434 | vlefevre | 2015-05-21 01:31:08 +0000 (Thu, 21 May 2015) | 7 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/INSTALL
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+
+To take into account that Automake 1.13 or later will be used:
+ * doc/mpfr.texi, INSTALL: updates related to "make check".
+ * configure.ac: require Automake 1.13 since the documentation now
+ assumes that 1.13 or later is used (and because previous Automake
+ versions are no longer tested); also added AM_PROG_AR to support
+ unusual archivers (after a warning from Automake 1.13).
+(merged changesets r8546,8572-8573,8611,9375,9380 from the trunk)
+------------------------------------------------------------------------
+r9433 | vlefevre | 2015-05-21 01:01:32 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1/configure.ac
+
+[configure.ac] Updated URL's.
+(merged changeset r9081 for configure.ac from the trunk)
+------------------------------------------------------------------------
+r9432 | vlefevre | 2015-05-21 00:58:31 +0000 (Thu, 21 May 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] Improved error message when the compiler doesn't know
+_Decimal64 (if MPFR is built with --enable-decimal-float).
+Detect broken _Decimal64 support on powerpc64 with the mode32 ABI.
+(merged changesets r8415,8679 from the trunk)
+------------------------------------------------------------------------
+r9431 | vlefevre | 2015-05-21 00:52:04 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/sub1sp.c
+
+Renamed WANT_ASSERT to MPFR_WANT_ASSERT in order to avoid a clash
+with GMP when MPFR is configured with --with-gmp-build.
+------------------------------------------------------------------------
+r9430 | vlefevre | 2015-05-21 00:41:06 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] Added a comment mentioning a problem with GNU gold ld.
+(merged changeset r8024 from the trunk)
+------------------------------------------------------------------------
+r9429 | vlefevre | 2015-05-21 00:32:21 +0000 (Thu, 21 May 2015) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] If the gmp.h vs libgmp test fails, also output the value
+of some variables (in case config.log is available, information can
+also be retrieved from "Cache variables" and "Output variables" near
+the end).
+(merged changesets r8056,8616 from the trunk)
+------------------------------------------------------------------------
+r9428 | vlefevre | 2015-05-21 00:28:44 +0000 (Thu, 21 May 2015) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] In the CC and CFLAGS setup from gmp.h, modified the
+list of commands to select the C preprocessor since /lib/cpp isn't
+the best choice under Solaris.
+(merged changeset r8612 from the trunk)
+------------------------------------------------------------------------
+r9427 | vlefevre | 2015-05-21 00:25:47 +0000 (Thu, 21 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] The test of CC and CFLAGS was done too late! Moved this
+test earlier.
+(merged changeset r8610 from the trunk)
+------------------------------------------------------------------------
+r9426 | vlefevre | 2015-05-21 00:12:59 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tests.c
+
+[tests/tests.c] Changed an error message.
+(merged changesets r9208-9209,9211-9212 from the trunk)
+------------------------------------------------------------------------
+r9425 | vlefevre | 2015-05-21 00:04:47 +0000 (Thu, 21 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tests.c
+
+[tests/tests.c] Fixed tests_default_random in case mpfr_exp_t > long.
+(merged changeset r8853 from the trunk)
+------------------------------------------------------------------------
+r9424 | vlefevre | 2015-05-20 23:58:59 +0000 (Wed, 20 May 2015) | 21 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/tversion.c
+
+Test suite improvement with Automake 1.13.
+ * Moved GMP version check from tversion.c to the test_version()
+ function of tests.c, so that this check is done in every test.
+ This function now returns an int, as there are now 3 cases:
+ 1. An error in MPFR version check is a fatal error: test_version()
+ exits with an error (exit status = 1).
+ 2. An error in GMP version check is a non-fatal error: if there
+ are no errors in MPFR version check, test_version() returns
+ with value 1.
+ 3. Otherwise test_version() returns with value 0 (everything is
+ fine).
+ * tversion.c still runs test_version(), but fails if this function
+ returns with an error, i.e. any error is fatal for this test.
+ Note: for the other tests, one just has a message in the output
+ in case of GMP version mismatch.
+ * mpfr-test.h: updated test_version() prototype.
+ * Makefile.am: removed the second tversion invocation, and output
+ the contents of tversion.log if this file exists (typically with
+ Automake 1.13+, for which one no longer gets tversion output by
+ default).
+(merged changesets r8821,8849 from the trunk)
+------------------------------------------------------------------------
+r9423 | vlefevre | 2015-05-20 23:44:39 +0000 (Wed, 20 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tversion.c
+
+[tests/tversion.c] Output the applied patches (if any).
+(merged changeset r8265 from the trunk)
+------------------------------------------------------------------------
+r9422 | vlefevre | 2015-05-20 23:43:02 +0000 (Wed, 20 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tversion.c
+
+[tests/tversion.c] Test mpfr_buildopt_tune_case() vs MPFR_TUNE_CASE.
+(merged changeset r8223 from the trunk)
+------------------------------------------------------------------------
+r9421 | vlefevre | 2015-05-20 16:17:19 +0000 (Wed, 20 May 2015) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+
+[acinclude.m4,configure.ac] Check that a directory passed to
+a --with-gmp* configure option exists and doesn't contain any
+space, and canonicalize the name if the realpath utility is
+available (patch by Patrick Pélissier).
+(merged changeset r8840 from the trunk)
+------------------------------------------------------------------------
+r9420 | vlefevre | 2015-05-20 16:15:46 +0000 (Wed, 20 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/Makefile.am
+
+[tests/Makefile.am] In LOADLIBES, replaced $(INCLUDES) by $(AM_CPPFLAGS)
+(completing r9411; merged changeset r8743 from the trunk)
+------------------------------------------------------------------------
+r9419 | vlefevre | 2015-05-20 16:11:33 +0000 (Wed, 20 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+
+[acinclude.m4] Avoid a warning due to variable set but not used in a
+test, making the test fail with gcc -Werror=unused-but-set-variable.
+(merged changeset r8729 from the trunk)
+------------------------------------------------------------------------
+r9418 | vlefevre | 2015-05-20 16:04:22 +0000 (Wed, 20 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1/acinclude.m4
+
+[acinclude.m4] Replaced "main()" by "main (void)".
+------------------------------------------------------------------------
+r9417 | vlefevre | 2015-05-20 15:57:51 +0000 (Wed, 20 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/trint.c
+
+[tests] Avoid warnings concerning unused variables under some conditions
+in order to avoid failures when -Werror is used.
+(merged changesets r8730,9415-9416 from the trunk)
+------------------------------------------------------------------------
+r9414 | vlefevre | 2015-05-20 14:33:30 +0000 (Wed, 20 May 2015) | 11 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/tests/tsprintf.c
+
+[acinclude.m4] Check struct lconv members (from <locale.h>) to avoid a
+ build failure under Android, which does not have them; see
+ https://sympa.inria.fr/sympa/arc/mpfr/2012-10/msg00002.html
+[src/mpfr-impl.h] Decimal point / thousands separator support can now be
+ detected automatically by configure (from the presence of <locale.h>
+ and the above members) or explicitly disabled/enabled by the user by
+ defining the MPFR_LCONV_DPTS macro to 0 or 1 via CFLAGS (a configure
+ switch might be added in the future).
+[tests/tsprintf.c] Do the locale_da_DK test only if MPFR_LCONV_DPTS is
+ true.
+(merged changeset r8423 from the trunk)
+------------------------------------------------------------------------
+r9413 | vlefevre | 2015-05-20 13:33:13 +0000 (Wed, 20 May 2015) | 6 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tset_d.c
+
+[acinclude.m4] Added a test for signed zeros (defines HAVE_SIGNEDZ).
+[tests/{tset_d.c,tget_flt.c}] Disabled two tests when HAVE_SIGNEDZ
+isn't defined, because these tests rely on signed zeros.
+Note: this is needed for compilers that don't support signed zeros,
+like tcc 0.9.26 and before.
+(merged changesets r8339-8340 from the trunk)
+------------------------------------------------------------------------
+r9412 | vlefevre | 2015-05-20 12:52:26 +0000 (Wed, 20 May 2015) | 8 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+
+[acinclude.m4,configure.ac]
+ * Added test for double-to-integer conversion bug.
+ * Corrected a gmp.h inclusion.
+ * Added MPFR_CHECK_GMP configure check. Without this test, one could
+ get an error in MPFR_CHECK_PRINTF_SPEC (or MPFR_CHECK_DBL2INT_BUG,
+ taking into account the above addition), though the error is not
+ related to printf or a double-to-integer conversion bug.
+(merged changesets r8353-8355,8432,8601-8602,8606,8614,8900 from the trunk)
+------------------------------------------------------------------------
+r9411 | vlefevre | 2015-05-20 12:29:48 +0000 (Wed, 20 May 2015) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/m4/size_max.m4
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tune/Makefile.am
+
+Updated autotools files to get rid of obsolete macros. Removed
+useless "#include <math.h>" in the test for subnormal numbers.
+(merged changesets r8337-8338,8364 from the trunk)
+------------------------------------------------------------------------
+r9410 | vlefevre | 2015-05-20 11:52:40 +0000 (Wed, 20 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/tset_d.c
+
+Replaced "denormalized" by the official term "subnormal".
+(merged changeset r8334 from the trunk)
+------------------------------------------------------------------------
+r9409 | vlefevre | 2015-05-20 11:47:38 +0000 (Wed, 20 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tests.c
+
+[tests/tests.c] Improved a type, avoiding a compiler warning.
+(merged changeset r8117 from the trunk)
+------------------------------------------------------------------------
+r9408 | vlefevre | 2015-05-20 11:19:53 +0000 (Wed, 20 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tversion.c
+
+[tests/tversion.c] Added GCC version (merged r8662 from the trunk).
+------------------------------------------------------------------------
+r9406 | vlefevre | 2015-05-20 08:35:52 +0000 (Wed, 20 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r9405 | vlefevre | 2015-05-20 08:35:02 +0000 (Wed, 20 May 2015) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Correction of the latest changes.
+------------------------------------------------------------------------
+r9404 | vlefevre | 2015-05-20 08:32:09 +0000 (Wed, 20 May 2015) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/INSTALL
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/vasprintf.c
+
+Merged some documentation changes from the trunk. Added a note in
+the mpfr_get_str description (in mpfr.texi) about the flags.
+------------------------------------------------------------------------
+r9403 | vlefevre | 2015-05-20 08:00:07 +0000 (Wed, 20 May 2015) | 5 lines
+Changed paths:
+ M /branches/3.1/BUGS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/Makefile.am
+ M /branches/3.1/NEWS
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/Makefile.am
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/abort_prec_max.c
+ M /branches/3.1/src/acos.c
+ M /branches/3.1/src/acosh.c
+ M /branches/3.1/src/add.c
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/ai.c
+ M /branches/3.1/src/amd/amdfam10/mparam.h
+ M /branches/3.1/src/amd/athlon/mparam.h
+ M /branches/3.1/src/amd/k8/mparam.h
+ M /branches/3.1/src/arm/mparam.h
+ M /branches/3.1/src/asin.c
+ M /branches/3.1/src/asinh.c
+ M /branches/3.1/src/atan.c
+ M /branches/3.1/src/atan2.c
+ M /branches/3.1/src/atanh.c
+ M /branches/3.1/src/bernoulli.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/cache.c
+ M /branches/3.1/src/cbrt.c
+ M /branches/3.1/src/check.c
+ M /branches/3.1/src/clear.c
+ M /branches/3.1/src/clears.c
+ M /branches/3.1/src/cmp.c
+ M /branches/3.1/src/cmp2.c
+ M /branches/3.1/src/cmp_abs.c
+ M /branches/3.1/src/cmp_d.c
+ M /branches/3.1/src/cmp_ld.c
+ M /branches/3.1/src/cmp_si.c
+ M /branches/3.1/src/cmp_ui.c
+ M /branches/3.1/src/comparisons.c
+ M /branches/3.1/src/const_catalan.c
+ M /branches/3.1/src/const_euler.c
+ M /branches/3.1/src/const_log2.c
+ M /branches/3.1/src/const_pi.c
+ M /branches/3.1/src/constant.c
+ M /branches/3.1/src/copysign.c
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/cosh.c
+ M /branches/3.1/src/cot.c
+ M /branches/3.1/src/coth.c
+ M /branches/3.1/src/csc.c
+ M /branches/3.1/src/csch.c
+ M /branches/3.1/src/d_div.c
+ M /branches/3.1/src/d_sub.c
+ M /branches/3.1/src/digamma.c
+ M /branches/3.1/src/dim.c
+ M /branches/3.1/src/div.c
+ M /branches/3.1/src/div_2exp.c
+ M /branches/3.1/src/div_2si.c
+ M /branches/3.1/src/div_2ui.c
+ M /branches/3.1/src/div_d.c
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/dump.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/erf.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/exceptions.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/exp10.c
+ M /branches/3.1/src/exp2.c
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/src/exp_2.c
+ M /branches/3.1/src/expm1.c
+ M /branches/3.1/src/extract.c
+ M /branches/3.1/src/factorial.c
+ M /branches/3.1/src/fits_intmax.c
+ M /branches/3.1/src/fits_s.h
+ M /branches/3.1/src/fits_sint.c
+ M /branches/3.1/src/fits_slong.c
+ M /branches/3.1/src/fits_sshort.c
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uint.c
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/src/fits_ulong.c
+ M /branches/3.1/src/fits_ushort.c
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/src/fms.c
+ M /branches/3.1/src/frac.c
+ M /branches/3.1/src/free_cache.c
+ M /branches/3.1/src/frexp.c
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/gammaonethird.c
+ M /branches/3.1/src/gen_inverse.h
+ M /branches/3.1/src/generic/mparam.h
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/src/get_exp.c
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_ld.c
+ M /branches/3.1/src/get_si.c
+ M /branches/3.1/src/get_sj.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/get_ui.c
+ M /branches/3.1/src/get_uj.c
+ M /branches/3.1/src/get_z.c
+ M /branches/3.1/src/get_z_exp.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/grandom.c
+ M /branches/3.1/src/hppa/mparam.h
+ M /branches/3.1/src/hypot.c
+ M /branches/3.1/src/ia64/mparam.h
+ M /branches/3.1/src/ieee_floats.h
+ M /branches/3.1/src/init.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/inits.c
+ M /branches/3.1/src/inits2.c
+ M /branches/3.1/src/inp_str.c
+ M /branches/3.1/src/int_ceil_log2.c
+ M /branches/3.1/src/isinf.c
+ M /branches/3.1/src/isinteger.c
+ M /branches/3.1/src/isnan.c
+ M /branches/3.1/src/isnum.c
+ M /branches/3.1/src/isqrt.c
+ M /branches/3.1/src/isregular.c
+ M /branches/3.1/src/iszero.c
+ M /branches/3.1/src/jn.c
+ M /branches/3.1/src/jyn_asympt.c
+ M /branches/3.1/src/li2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/log.c
+ M /branches/3.1/src/log10.c
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/src/log2.c
+ M /branches/3.1/src/logging.c
+ M /branches/3.1/src/min_prec.c
+ M /branches/3.1/src/minmax.c
+ M /branches/3.1/src/modf.c
+ M /branches/3.1/src/mp_clz_tab.c
+ M /branches/3.1/src/mparam_h.in
+ M /branches/3.1/src/mpf2mpfr.h
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr-intmax.h
+ M /branches/3.1/src/mpfr-longlong.h
+ M /branches/3.1/src/mpfr-thread.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/mpn_exp.c
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/mul_2exp.c
+ M /branches/3.1/src/mul_2si.c
+ M /branches/3.1/src/mul_2ui.c
+ M /branches/3.1/src/mul_d.c
+ M /branches/3.1/src/mul_ui.c
+ M /branches/3.1/src/mulders.c
+ M /branches/3.1/src/neg.c
+ M /branches/3.1/src/next.c
+ M /branches/3.1/src/out_raw.c
+ M /branches/3.1/src/out_str.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/pow_si.c
+ M /branches/3.1/src/pow_ui.c
+ M /branches/3.1/src/pow_z.c
+ M /branches/3.1/src/powerof2.c
+ M /branches/3.1/src/powerpc32/mparam.h
+ M /branches/3.1/src/powerpc64/mparam.h
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/print_rnd_mode.c
+ M /branches/3.1/src/printf.c
+ M /branches/3.1/src/rec_sqrt.c
+ M /branches/3.1/src/reldiff.c
+ M /branches/3.1/src/rem1.c
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/src/root.c
+ M /branches/3.1/src/round_near_x.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/scale2.c
+ M /branches/3.1/src/sec.c
+ M /branches/3.1/src/sech.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/set_d64.c
+ M /branches/3.1/src/set_dfl_prec.c
+ M /branches/3.1/src/set_exp.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_flt.c
+ M /branches/3.1/src/set_inf.c
+ M /branches/3.1/src/set_ld.c
+ M /branches/3.1/src/set_nan.c
+ M /branches/3.1/src/set_prc_raw.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/set_rnd.c
+ M /branches/3.1/src/set_si.c
+ M /branches/3.1/src/set_si_2exp.c
+ M /branches/3.1/src/set_sj.c
+ M /branches/3.1/src/set_str.c
+ M /branches/3.1/src/set_str_raw.c
+ M /branches/3.1/src/set_ui.c
+ M /branches/3.1/src/set_ui_2exp.c
+ M /branches/3.1/src/set_uj.c
+ M /branches/3.1/src/set_z.c
+ M /branches/3.1/src/set_z_exp.c
+ M /branches/3.1/src/set_zero.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/setmin.c
+ M /branches/3.1/src/setsign.c
+ M /branches/3.1/src/sgn.c
+ M /branches/3.1/src/si_op.c
+ M /branches/3.1/src/signbit.c
+ M /branches/3.1/src/sin.c
+ M /branches/3.1/src/sin_cos.c
+ M /branches/3.1/src/sinh.c
+ M /branches/3.1/src/sinh_cosh.c
+ M /branches/3.1/src/sparc64/mparam.h
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/sqrt.c
+ M /branches/3.1/src/sqrt_ui.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub.c
+ M /branches/3.1/src/sub1.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/sub_d.c
+ M /branches/3.1/src/sub_ui.c
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/src/sum.c
+ M /branches/3.1/src/swap.c
+ M /branches/3.1/src/tan.c
+ M /branches/3.1/src/tanh.c
+ M /branches/3.1/src/uceil_exp2.c
+ M /branches/3.1/src/uceil_log2.c
+ M /branches/3.1/src/ufloor_log2.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_pow.c
+ M /branches/3.1/src/ui_pow_ui.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/src/urandom.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/src/version.c
+ M /branches/3.1/src/volatile.c
+ M /branches/3.1/src/x86/core2/mparam.h
+ M /branches/3.1/src/x86/mparam.h
+ M /branches/3.1/src/x86_64/core2/mparam.h
+ M /branches/3.1/src/x86_64/pentium4/mparam.h
+ M /branches/3.1/src/yn.c
+ M /branches/3.1/src/zeta.c
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/cmp_str.c
+ M /branches/3.1/tests/data/digamma
+ M /branches/3.1/tests/data/li2
+ M /branches/3.1/tests/memory.c
+ M /branches/3.1/tests/mpf_compat.c
+ M /branches/3.1/tests/mpf_compat.h
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/mpfr_compat.c
+ M /branches/3.1/tests/random2.c
+ M /branches/3.1/tests/reuse.c
+ M /branches/3.1/tests/rnd_mode.c
+ M /branches/3.1/tests/tabs.c
+ M /branches/3.1/tests/tacos.c
+ M /branches/3.1/tests/tacosh.c
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tadd1sp.c
+ M /branches/3.1/tests/tadd_d.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tai.c
+ M /branches/3.1/tests/tasin.c
+ M /branches/3.1/tests/tasinh.c
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tatanh.c
+ M /branches/3.1/tests/taway.c
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tcan_round.c
+ M /branches/3.1/tests/tcbrt.c
+ M /branches/3.1/tests/tcheck.c
+ M /branches/3.1/tests/tcmp.c
+ M /branches/3.1/tests/tcmp2.c
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tcmp_ui.c
+ M /branches/3.1/tests/tcmpabs.c
+ M /branches/3.1/tests/tcomparisons.c
+ M /branches/3.1/tests/tconst_catalan.c
+ M /branches/3.1/tests/tconst_euler.c
+ M /branches/3.1/tests/tconst_log2.c
+ M /branches/3.1/tests/tconst_pi.c
+ M /branches/3.1/tests/tcopysign.c
+ M /branches/3.1/tests/tcos.c
+ M /branches/3.1/tests/tcosh.c
+ M /branches/3.1/tests/tcot.c
+ M /branches/3.1/tests/tcoth.c
+ M /branches/3.1/tests/tcsc.c
+ M /branches/3.1/tests/tcsch.c
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/td_sub.c
+ M /branches/3.1/tests/tdigamma.c
+ M /branches/3.1/tests/tdim.c
+ M /branches/3.1/tests/tdiv.c
+ M /branches/3.1/tests/tdiv_d.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/teint.c
+ M /branches/3.1/tests/teq.c
+ M /branches/3.1/tests/terf.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/texceptions.c
+ M /branches/3.1/tests/texp.c
+ M /branches/3.1/tests/texp10.c
+ M /branches/3.1/tests/texp2.c
+ M /branches/3.1/tests/texpm1.c
+ M /branches/3.1/tests/tfactorial.c
+ M /branches/3.1/tests/tfits.c
+ M /branches/3.1/tests/tfma.c
+ M /branches/3.1/tests/tfmod.c
+ M /branches/3.1/tests/tfms.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tfrac.c
+ M /branches/3.1/tests/tfrexp.c
+ M /branches/3.1/tests/tgamma.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tgeneric_ui.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/tget_d_2exp.c
+ M /branches/3.1/tests/tget_f.c
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tget_ld_2exp.c
+ M /branches/3.1/tests/tget_set_d64.c
+ M /branches/3.1/tests/tget_sj.c
+ M /branches/3.1/tests/tget_str.c
+ M /branches/3.1/tests/tget_z.c
+ M /branches/3.1/tests/tgmpop.c
+ M /branches/3.1/tests/tgrandom.c
+ M /branches/3.1/tests/thyperbolic.c
+ M /branches/3.1/tests/thypot.c
+ M /branches/3.1/tests/tinits.c
+ M /branches/3.1/tests/tinp_str.c
+ M /branches/3.1/tests/tinternals.c
+ M /branches/3.1/tests/tisnan.c
+ M /branches/3.1/tests/tisqrt.c
+ M /branches/3.1/tests/tj0.c
+ M /branches/3.1/tests/tj1.c
+ M /branches/3.1/tests/tjn.c
+ M /branches/3.1/tests/tl2b.c
+ M /branches/3.1/tests/tlgamma.c
+ M /branches/3.1/tests/tli2.c
+ M /branches/3.1/tests/tlngamma.c
+ M /branches/3.1/tests/tlog.c
+ M /branches/3.1/tests/tlog10.c
+ M /branches/3.1/tests/tlog1p.c
+ M /branches/3.1/tests/tlog2.c
+ M /branches/3.1/tests/tmin_prec.c
+ M /branches/3.1/tests/tminmax.c
+ M /branches/3.1/tests/tmodf.c
+ M /branches/3.1/tests/tmul.c
+ M /branches/3.1/tests/tmul_2exp.c
+ M /branches/3.1/tests/tmul_d.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tnext.c
+ M /branches/3.1/tests/tout_str.c
+ M /branches/3.1/tests/toutimpl.c
+ M /branches/3.1/tests/tpow.c
+ M /branches/3.1/tests/tpow3.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tpow_z.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/trec_sqrt.c
+ M /branches/3.1/tests/tremquo.c
+ M /branches/3.1/tests/trint.c
+ M /branches/3.1/tests/troot.c
+ M /branches/3.1/tests/tround_prec.c
+ M /branches/3.1/tests/tsec.c
+ M /branches/3.1/tests/tsech.c
+ M /branches/3.1/tests/tset.c
+ M /branches/3.1/tests/tset_d.c
+ M /branches/3.1/tests/tset_exp.c
+ M /branches/3.1/tests/tset_f.c
+ M /branches/3.1/tests/tset_ld.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tset_si.c
+ M /branches/3.1/tests/tset_sj.c
+ M /branches/3.1/tests/tset_str.c
+ M /branches/3.1/tests/tset_z.c
+ M /branches/3.1/tests/tset_z_exp.c
+ M /branches/3.1/tests/tsgn.c
+ M /branches/3.1/tests/tsi_op.c
+ M /branches/3.1/tests/tsin.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsinh.c
+ M /branches/3.1/tests/tsinh_cosh.c
+ M /branches/3.1/tests/tsprintf.c
+ M /branches/3.1/tests/tsqr.c
+ M /branches/3.1/tests/tsqrt.c
+ M /branches/3.1/tests/tsqrt_ui.c
+ M /branches/3.1/tests/tstckintc.c
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tstrtofr.c
+ M /branches/3.1/tests/tsub.c
+ M /branches/3.1/tests/tsub1sp.c
+ M /branches/3.1/tests/tsub_d.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tsubnormal.c
+ M /branches/3.1/tests/tsum.c
+ M /branches/3.1/tests/tswap.c
+ M /branches/3.1/tests/ttan.c
+ M /branches/3.1/tests/ttanh.c
+ M /branches/3.1/tests/ttrunc.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_pow.c
+ M /branches/3.1/tests/tui_sub.c
+ M /branches/3.1/tests/turandom.c
+ M /branches/3.1/tests/tvalist.c
+ M /branches/3.1/tests/tversion.c
+ M /branches/3.1/tests/ty0.c
+ M /branches/3.1/tests/ty1.c
+ M /branches/3.1/tests/tyn.c
+ M /branches/3.1/tests/tzeta.c
+ M /branches/3.1/tests/tzeta_ui.c
+ M /branches/3.1/tools/ck-copyright-notice
+ M /branches/3.1/tools/ck-mparam
+ M /branches/3.1/tools/ck-version-info
+ M /branches/3.1/tools/get_patches.sh
+ M /branches/3.1/tune/Makefile.am
+ M /branches/3.1/tune/bidimensional_sample.c
+ M /branches/3.1/tune/speed.c
+ M /branches/3.1/tune/tuneup.c
+
+Copyright notice update: added 2015 with
+ perl -pi -e 's/ (\d{4}-)?(2014)(?= Free Software)/
+ " ".($1||"$2-").($2+1)/e' **/*(^/)
+under zsh (the m4 and tools/mbench directories were not modified).
+Removed 2014 from the example in the doc/README.dev file.
+------------------------------------------------------------------------
+r9243 | vlefevre | 2014-12-04 01:04:28 +0000 (Thu, 04 Dec 2014) | 6 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/strtofr.c
+
+[src/strtofr.c] Fix of a buffer overflow due to incorrect
+GMP documentation for mpn_set_str. See discussion:
+ https://gmplib.org/list-archives/gmp-bugs/2013-December/003267.html
+and the first fix in the GMP documentation:
+ https://gmplib.org/repo/gmp-5.1/raw-rev/d19172622a74
+(merged changeset r8722 from the trunk)
+------------------------------------------------------------------------
+r9110 | vlefevre | 2014-06-26 10:59:38 +0000 (Thu, 26 Jun 2014) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/tests/tsprintf.c
+
+[src/vasprintf.c] Fixed assertion failures for tiny numbers (the code
+was correct, but the assertions didn't check against the right bound).
+[tests/tsprintf.c] Added a test with the minimum exponent, triggering
+as assertion failure in vasprintf.c without this correction.
+(merged changesets r9099-9100,9108-9109 from the trunk)
+------------------------------------------------------------------------
+r9105 | vlefevre | 2014-06-26 00:40:26 +0000 (Thu, 26 Jun 2014) | 2 lines
+Changed paths:
+ M /branches/3.1/src/div.c
+
+[src/div.c] Bug fix: avoid an integer overflow when dividing the
+largest finite MPFR number by the smallest positive one.
+------------------------------------------------------------------------
+r9104 | vlefevre | 2014-06-26 00:17:33 +0000 (Thu, 26 Jun 2014) | 1 line
+Changed paths:
+ M /branches/3.1/tests/tdiv.c
+
+[tests/tdiv.c] Forgot "exit (1);".
+------------------------------------------------------------------------
+r9102 | vlefevre | 2014-06-26 00:05:24 +0000 (Thu, 26 Jun 2014) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tdiv.c
+
+[tests/tdiv.c] Merged mpfr_div tests r9101 from the trunk.
+Note: the test actually fails (see output), but the "exit (1);"
+was forgotten (added later in r9104).
+------------------------------------------------------------------------
+r9055 | vlefevre | 2014-05-22 00:15:28 +0000 (Thu, 22 May 2014) | 1 line
+Changed paths:
+ M /branches/3.1/README
+ M /branches/3.1/doc/README.dev
+
+Changed "INRIAGForge" to "InriaForge" (due to the rename).
+------------------------------------------------------------------------
+r9034 | vlefevre | 2014-04-15 21:27:48 +0000 (Tue, 15 Apr 2014) | 9 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/stack_interface.c
+
+BYTES_PER_MP_LIMB -> MPFR_BYTES_PER_MP_LIMB for GMP 6 compatibility
+when --with-gmp-build is used. See mailing-list discussion:
+ https://sympa.inria.fr/sympa/arc/mpfr/2014-04/msg00000.html
+Updated configure test on GMP_NUMB_BITS and sizeof(mp_limb_t):
+ * BYTES_PER_MP_LIMB is no longer tested.
+ * The test is now always run, not just when --with-gmp-build is used.
+ * Results are output in config.log in case of failure.
+ * The error message has been updated.
+(merged changesets r9029,9030 from the trunk, with conflict resolution)
+------------------------------------------------------------------------
+r9004 | vlefevre | 2014-03-14 11:40:57 +0000 (Fri, 14 Mar 2014) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r9003 | vlefevre | 2014-03-14 11:39:59 +0000 (Fri, 14 Mar 2014) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Correction in the mpfr_set_str description.
+(merged changeset r9001 from the trunk)
+------------------------------------------------------------------------
+r8803 | vlefevre | 2014-01-20 14:24:44 +0000 (Mon, 20 Jan 2014) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/tests/texp.c
+
+[src/exp3.c] Fixed bug in mpfr_exp_3 (affecting mpfr_exp).
+[tests/texp.c] Added corresponding testcase.
+(merged changesets r8797,8802 from the trunk)
+------------------------------------------------------------------------
+r8801 | vlefevre | 2014-01-20 11:22:00 +0000 (Mon, 20 Jan 2014) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/li2.c
+
+[src/li2.c] Use MPFR_RET_NEVER_GO_HERE () instead of MPFR_ASSERTN (0)
+to avoid an error with:
+ ./configure --enable-logging CFLAGS="-Werror=return-type"; make
+(merged changeset r8799 from the trunk)
+------------------------------------------------------------------------
+r8800 | vlefevre | 2014-01-20 11:18:34 +0000 (Mon, 20 Jan 2014) | 3 lines
+Changed paths:
+ A /branches/3.1/autogen.sh (from /trunk/autogen.sh:8797)
+
+Added autogen.sh sh script from Daniel Richard G. to install/update the
+autotools files and clean up caches (useful before a release).
+[copied from the trunk]
+------------------------------------------------------------------------
+r8735 | vlefevre | 2014-01-07 00:53:51 +0000 (Tue, 07 Jan 2014) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/TODO
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/vasprintf.c
+
+Fixed misspellings, using codespell.
+(merged changesets r8733-8734 from the trunk)
+------------------------------------------------------------------------
+r8727 | vlefevre | 2014-01-04 03:03:01 +0000 (Sat, 04 Jan 2014) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r8724 | vlefevre | 2014-01-03 20:39:49 +0000 (Fri, 03 Jan 2014) | 6 lines
+Changed paths:
+ M /branches/3.1/BUGS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/Makefile.am
+ M /branches/3.1/NEWS
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/Makefile.am
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/abort_prec_max.c
+ M /branches/3.1/src/acos.c
+ M /branches/3.1/src/acosh.c
+ M /branches/3.1/src/add.c
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/ai.c
+ M /branches/3.1/src/amd/amdfam10/mparam.h
+ M /branches/3.1/src/amd/athlon/mparam.h
+ M /branches/3.1/src/amd/k8/mparam.h
+ M /branches/3.1/src/arm/mparam.h
+ M /branches/3.1/src/asin.c
+ M /branches/3.1/src/asinh.c
+ M /branches/3.1/src/atan.c
+ M /branches/3.1/src/atan2.c
+ M /branches/3.1/src/atanh.c
+ M /branches/3.1/src/bernoulli.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/cache.c
+ M /branches/3.1/src/cbrt.c
+ M /branches/3.1/src/check.c
+ M /branches/3.1/src/clear.c
+ M /branches/3.1/src/clears.c
+ M /branches/3.1/src/cmp.c
+ M /branches/3.1/src/cmp2.c
+ M /branches/3.1/src/cmp_abs.c
+ M /branches/3.1/src/cmp_d.c
+ M /branches/3.1/src/cmp_ld.c
+ M /branches/3.1/src/cmp_si.c
+ M /branches/3.1/src/cmp_ui.c
+ M /branches/3.1/src/comparisons.c
+ M /branches/3.1/src/const_catalan.c
+ M /branches/3.1/src/const_euler.c
+ M /branches/3.1/src/const_log2.c
+ M /branches/3.1/src/const_pi.c
+ M /branches/3.1/src/constant.c
+ M /branches/3.1/src/copysign.c
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/cosh.c
+ M /branches/3.1/src/cot.c
+ M /branches/3.1/src/coth.c
+ M /branches/3.1/src/csc.c
+ M /branches/3.1/src/csch.c
+ M /branches/3.1/src/d_div.c
+ M /branches/3.1/src/d_sub.c
+ M /branches/3.1/src/digamma.c
+ M /branches/3.1/src/dim.c
+ M /branches/3.1/src/div.c
+ M /branches/3.1/src/div_2exp.c
+ M /branches/3.1/src/div_2si.c
+ M /branches/3.1/src/div_2ui.c
+ M /branches/3.1/src/div_d.c
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/dump.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/erf.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/exceptions.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/exp10.c
+ M /branches/3.1/src/exp2.c
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/src/exp_2.c
+ M /branches/3.1/src/expm1.c
+ M /branches/3.1/src/extract.c
+ M /branches/3.1/src/factorial.c
+ M /branches/3.1/src/fits_intmax.c
+ M /branches/3.1/src/fits_s.h
+ M /branches/3.1/src/fits_sint.c
+ M /branches/3.1/src/fits_slong.c
+ M /branches/3.1/src/fits_sshort.c
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uint.c
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/src/fits_ulong.c
+ M /branches/3.1/src/fits_ushort.c
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/src/fms.c
+ M /branches/3.1/src/frac.c
+ M /branches/3.1/src/free_cache.c
+ M /branches/3.1/src/frexp.c
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/gammaonethird.c
+ M /branches/3.1/src/gen_inverse.h
+ M /branches/3.1/src/generic/mparam.h
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/src/get_exp.c
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_ld.c
+ M /branches/3.1/src/get_si.c
+ M /branches/3.1/src/get_sj.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/get_ui.c
+ M /branches/3.1/src/get_uj.c
+ M /branches/3.1/src/get_z.c
+ M /branches/3.1/src/get_z_exp.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/grandom.c
+ M /branches/3.1/src/hppa/mparam.h
+ M /branches/3.1/src/hypot.c
+ M /branches/3.1/src/ia64/mparam.h
+ M /branches/3.1/src/ieee_floats.h
+ M /branches/3.1/src/init.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/inits.c
+ M /branches/3.1/src/inits2.c
+ M /branches/3.1/src/inp_str.c
+ M /branches/3.1/src/int_ceil_log2.c
+ M /branches/3.1/src/isinf.c
+ M /branches/3.1/src/isinteger.c
+ M /branches/3.1/src/isnan.c
+ M /branches/3.1/src/isnum.c
+ M /branches/3.1/src/isqrt.c
+ M /branches/3.1/src/isregular.c
+ M /branches/3.1/src/iszero.c
+ M /branches/3.1/src/jn.c
+ M /branches/3.1/src/jyn_asympt.c
+ M /branches/3.1/src/li2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/log.c
+ M /branches/3.1/src/log10.c
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/src/log2.c
+ M /branches/3.1/src/logging.c
+ M /branches/3.1/src/min_prec.c
+ M /branches/3.1/src/minmax.c
+ M /branches/3.1/src/modf.c
+ M /branches/3.1/src/mp_clz_tab.c
+ M /branches/3.1/src/mparam_h.in
+ M /branches/3.1/src/mpf2mpfr.h
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr-intmax.h
+ M /branches/3.1/src/mpfr-longlong.h
+ M /branches/3.1/src/mpfr-thread.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/mpn_exp.c
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/mul_2exp.c
+ M /branches/3.1/src/mul_2si.c
+ M /branches/3.1/src/mul_2ui.c
+ M /branches/3.1/src/mul_d.c
+ M /branches/3.1/src/mul_ui.c
+ M /branches/3.1/src/mulders.c
+ M /branches/3.1/src/neg.c
+ M /branches/3.1/src/next.c
+ M /branches/3.1/src/out_raw.c
+ M /branches/3.1/src/out_str.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/pow_si.c
+ M /branches/3.1/src/pow_ui.c
+ M /branches/3.1/src/pow_z.c
+ M /branches/3.1/src/powerof2.c
+ M /branches/3.1/src/powerpc32/mparam.h
+ M /branches/3.1/src/powerpc64/mparam.h
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/print_rnd_mode.c
+ M /branches/3.1/src/printf.c
+ M /branches/3.1/src/rec_sqrt.c
+ M /branches/3.1/src/reldiff.c
+ M /branches/3.1/src/rem1.c
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/src/root.c
+ M /branches/3.1/src/round_near_x.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/scale2.c
+ M /branches/3.1/src/sec.c
+ M /branches/3.1/src/sech.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/set_d64.c
+ M /branches/3.1/src/set_dfl_prec.c
+ M /branches/3.1/src/set_exp.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_flt.c
+ M /branches/3.1/src/set_inf.c
+ M /branches/3.1/src/set_ld.c
+ M /branches/3.1/src/set_nan.c
+ M /branches/3.1/src/set_prc_raw.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/set_rnd.c
+ M /branches/3.1/src/set_si.c
+ M /branches/3.1/src/set_si_2exp.c
+ M /branches/3.1/src/set_sj.c
+ M /branches/3.1/src/set_str.c
+ M /branches/3.1/src/set_str_raw.c
+ M /branches/3.1/src/set_ui.c
+ M /branches/3.1/src/set_ui_2exp.c
+ M /branches/3.1/src/set_uj.c
+ M /branches/3.1/src/set_z.c
+ M /branches/3.1/src/set_z_exp.c
+ M /branches/3.1/src/set_zero.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/setmin.c
+ M /branches/3.1/src/setsign.c
+ M /branches/3.1/src/sgn.c
+ M /branches/3.1/src/si_op.c
+ M /branches/3.1/src/signbit.c
+ M /branches/3.1/src/sin.c
+ M /branches/3.1/src/sin_cos.c
+ M /branches/3.1/src/sinh.c
+ M /branches/3.1/src/sinh_cosh.c
+ M /branches/3.1/src/sparc64/mparam.h
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/sqrt.c
+ M /branches/3.1/src/sqrt_ui.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub.c
+ M /branches/3.1/src/sub1.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/sub_d.c
+ M /branches/3.1/src/sub_ui.c
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/src/sum.c
+ M /branches/3.1/src/swap.c
+ M /branches/3.1/src/tan.c
+ M /branches/3.1/src/tanh.c
+ M /branches/3.1/src/uceil_exp2.c
+ M /branches/3.1/src/uceil_log2.c
+ M /branches/3.1/src/ufloor_log2.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_pow.c
+ M /branches/3.1/src/ui_pow_ui.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/src/urandom.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/src/version.c
+ M /branches/3.1/src/volatile.c
+ M /branches/3.1/src/x86/core2/mparam.h
+ M /branches/3.1/src/x86/mparam.h
+ M /branches/3.1/src/x86_64/core2/mparam.h
+ M /branches/3.1/src/x86_64/pentium4/mparam.h
+ M /branches/3.1/src/yn.c
+ M /branches/3.1/src/zeta.c
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/cmp_str.c
+ M /branches/3.1/tests/data/digamma
+ M /branches/3.1/tests/data/li2
+ M /branches/3.1/tests/memory.c
+ M /branches/3.1/tests/mpf_compat.c
+ M /branches/3.1/tests/mpf_compat.h
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/mpfr_compat.c
+ M /branches/3.1/tests/random2.c
+ M /branches/3.1/tests/reuse.c
+ M /branches/3.1/tests/rnd_mode.c
+ M /branches/3.1/tests/tabs.c
+ M /branches/3.1/tests/tacos.c
+ M /branches/3.1/tests/tacosh.c
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tadd1sp.c
+ M /branches/3.1/tests/tadd_d.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tai.c
+ M /branches/3.1/tests/tasin.c
+ M /branches/3.1/tests/tasinh.c
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tatanh.c
+ M /branches/3.1/tests/taway.c
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tcan_round.c
+ M /branches/3.1/tests/tcbrt.c
+ M /branches/3.1/tests/tcheck.c
+ M /branches/3.1/tests/tcmp.c
+ M /branches/3.1/tests/tcmp2.c
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tcmp_ui.c
+ M /branches/3.1/tests/tcmpabs.c
+ M /branches/3.1/tests/tcomparisons.c
+ M /branches/3.1/tests/tconst_catalan.c
+ M /branches/3.1/tests/tconst_euler.c
+ M /branches/3.1/tests/tconst_log2.c
+ M /branches/3.1/tests/tconst_pi.c
+ M /branches/3.1/tests/tcopysign.c
+ M /branches/3.1/tests/tcos.c
+ M /branches/3.1/tests/tcosh.c
+ M /branches/3.1/tests/tcot.c
+ M /branches/3.1/tests/tcoth.c
+ M /branches/3.1/tests/tcsc.c
+ M /branches/3.1/tests/tcsch.c
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/td_sub.c
+ M /branches/3.1/tests/tdigamma.c
+ M /branches/3.1/tests/tdim.c
+ M /branches/3.1/tests/tdiv.c
+ M /branches/3.1/tests/tdiv_d.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/teint.c
+ M /branches/3.1/tests/teq.c
+ M /branches/3.1/tests/terf.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/texceptions.c
+ M /branches/3.1/tests/texp.c
+ M /branches/3.1/tests/texp10.c
+ M /branches/3.1/tests/texp2.c
+ M /branches/3.1/tests/texpm1.c
+ M /branches/3.1/tests/tfactorial.c
+ M /branches/3.1/tests/tfits.c
+ M /branches/3.1/tests/tfma.c
+ M /branches/3.1/tests/tfmod.c
+ M /branches/3.1/tests/tfms.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tfrac.c
+ M /branches/3.1/tests/tfrexp.c
+ M /branches/3.1/tests/tgamma.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tgeneric_ui.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/tget_d_2exp.c
+ M /branches/3.1/tests/tget_f.c
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tget_ld_2exp.c
+ M /branches/3.1/tests/tget_set_d64.c
+ M /branches/3.1/tests/tget_sj.c
+ M /branches/3.1/tests/tget_str.c
+ M /branches/3.1/tests/tget_z.c
+ M /branches/3.1/tests/tgmpop.c
+ M /branches/3.1/tests/tgrandom.c
+ M /branches/3.1/tests/thyperbolic.c
+ M /branches/3.1/tests/thypot.c
+ M /branches/3.1/tests/tinits.c
+ M /branches/3.1/tests/tinp_str.c
+ M /branches/3.1/tests/tinternals.c
+ M /branches/3.1/tests/tisnan.c
+ M /branches/3.1/tests/tisqrt.c
+ M /branches/3.1/tests/tj0.c
+ M /branches/3.1/tests/tj1.c
+ M /branches/3.1/tests/tjn.c
+ M /branches/3.1/tests/tl2b.c
+ M /branches/3.1/tests/tlgamma.c
+ M /branches/3.1/tests/tli2.c
+ M /branches/3.1/tests/tlngamma.c
+ M /branches/3.1/tests/tlog.c
+ M /branches/3.1/tests/tlog10.c
+ M /branches/3.1/tests/tlog1p.c
+ M /branches/3.1/tests/tlog2.c
+ M /branches/3.1/tests/tmin_prec.c
+ M /branches/3.1/tests/tminmax.c
+ M /branches/3.1/tests/tmodf.c
+ M /branches/3.1/tests/tmul.c
+ M /branches/3.1/tests/tmul_2exp.c
+ M /branches/3.1/tests/tmul_d.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tnext.c
+ M /branches/3.1/tests/tout_str.c
+ M /branches/3.1/tests/toutimpl.c
+ M /branches/3.1/tests/tpow.c
+ M /branches/3.1/tests/tpow3.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tpow_z.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/trec_sqrt.c
+ M /branches/3.1/tests/tremquo.c
+ M /branches/3.1/tests/trint.c
+ M /branches/3.1/tests/troot.c
+ M /branches/3.1/tests/tround_prec.c
+ M /branches/3.1/tests/tsec.c
+ M /branches/3.1/tests/tsech.c
+ M /branches/3.1/tests/tset.c
+ M /branches/3.1/tests/tset_d.c
+ M /branches/3.1/tests/tset_exp.c
+ M /branches/3.1/tests/tset_f.c
+ M /branches/3.1/tests/tset_ld.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tset_si.c
+ M /branches/3.1/tests/tset_sj.c
+ M /branches/3.1/tests/tset_str.c
+ M /branches/3.1/tests/tset_z.c
+ M /branches/3.1/tests/tset_z_exp.c
+ M /branches/3.1/tests/tsgn.c
+ M /branches/3.1/tests/tsi_op.c
+ M /branches/3.1/tests/tsin.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsinh.c
+ M /branches/3.1/tests/tsinh_cosh.c
+ M /branches/3.1/tests/tsprintf.c
+ M /branches/3.1/tests/tsqr.c
+ M /branches/3.1/tests/tsqrt.c
+ M /branches/3.1/tests/tsqrt_ui.c
+ M /branches/3.1/tests/tstckintc.c
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tstrtofr.c
+ M /branches/3.1/tests/tsub.c
+ M /branches/3.1/tests/tsub1sp.c
+ M /branches/3.1/tests/tsub_d.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tsubnormal.c
+ M /branches/3.1/tests/tsum.c
+ M /branches/3.1/tests/tswap.c
+ M /branches/3.1/tests/ttan.c
+ M /branches/3.1/tests/ttanh.c
+ M /branches/3.1/tests/ttrunc.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_pow.c
+ M /branches/3.1/tests/tui_sub.c
+ M /branches/3.1/tests/turandom.c
+ M /branches/3.1/tests/tvalist.c
+ M /branches/3.1/tests/tversion.c
+ M /branches/3.1/tests/ty0.c
+ M /branches/3.1/tests/ty1.c
+ M /branches/3.1/tests/tyn.c
+ M /branches/3.1/tests/tzeta.c
+ M /branches/3.1/tests/tzeta_ui.c
+ M /branches/3.1/tools/ck-copyright-notice
+ M /branches/3.1/tools/ck-mparam
+ M /branches/3.1/tools/ck-version-info
+ M /branches/3.1/tools/get_patches.sh
+ M /branches/3.1/tune/Makefile.am
+ M /branches/3.1/tune/bidimensional_sample.c
+ M /branches/3.1/tune/speed.c
+ M /branches/3.1/tune/tuneup.c
+
+Copyright notice update: added 2014 with
+ perl -pi -e 's/ (\d{4}-)?(2013)(?= Free Software)/
+ " ".($1||"$2-").($2+1)/e' **/*(^/)
+under zsh, reverting the ChangeLog file (the m4 and tools/mbench
+directories were not modified).
+Removed 2013 from the example in the doc/README.dev file.
+------------------------------------------------------------------------
+r8718 | vlefevre | 2013-11-28 18:19:35 +0000 (Thu, 28 Nov 2013) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tstckintc.c
+
+[tests/tstckintc.c] Correction and test improvements.
+(merged changesets r8264,8716 from the trunk)
+------------------------------------------------------------------------
+r8717 | vlefevre | 2013-11-28 18:15:18 +0000 (Thu, 28 Nov 2013) | 6 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr.h
+
+[src/mpfr.h] Fixed bug in the mpfr_custom_init_set macro (typo in
+variable name, which can yield incorrect behavior if the second
+argument is not a simple expression).
+Thanks to Andreas Enge for the bug report:
+ https://sympa.inria.fr/sympa/arc/mpfr/2013-11/msg00029.html
+(merged changeset r8715 from the trunk)
+------------------------------------------------------------------------
+r8710 | vlefevre | 2013-11-15 00:47:50 +0000 (Fri, 15 Nov 2013) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tsprintf.c
+
+[tests/tsprintf.c] Added a few tests.
+(merged changeset r8709 from the trunk)
+------------------------------------------------------------------------
+r8708 | vlefevre | 2013-11-15 00:37:30 +0000 (Fri, 15 Nov 2013) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/tests/tsprintf.c
+
+[src/vasprintf.c] Fixed bug reported by David Binderman, occurring when
+ outputting 0 with the '#' flag, a positive precision, and the 'g'/'G'
+ conversion specifier: there was one additional trailing 0.
+[tests/tsprintf.c] Corrected the corresponding test.
+(merged changesets r8705-8706 from the trunk)
+------------------------------------------------------------------------
+r8704 | vlefevre | 2013-11-06 15:15:12 +0000 (Wed, 06 Nov 2013) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/thypot.c
+
+[tests/thypot.c] Fix use of non explicitly initialized variable in NaN test.
+(merged changesets r8702-8703 from the trunk)
+------------------------------------------------------------------------
+r8691 | vlefevre | 2013-09-27 13:50:16 +0000 (Fri, 27 Sep 2013) | 8 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tset_ld.c
+
+Made changes to avoid test failures with:
+ clang -O2 -fsanitize=undefined -fno-sanitize-recover
+[src/mpfr-impl.h] With clang, disable division by zero using constants
+due to a bug in its sanitizer and because IEEE 754 division by zero is
+currently not properly supported.
+[tests/{tget_flt.c,tset_ld.c}] Avoid divisions by 0 if MPFR_ERRDIVZERO
+and avoid an overflow on double.
+(merged changesets r8685-8687,8690 from the trunk)
+------------------------------------------------------------------------
+r8684 | vlefevre | 2013-09-26 10:47:05 +0000 (Thu, 26 Sep 2013) | 7 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/tests/tfits.c
+
+[src/{fits_u.h,fits_uintmax.c}] Fixed the mpfr_fits_u*_p functions,
+ which incorrectly returned 0 ("doesn't fit") on negative arguments
+ when the rounding to an integer was 0. The fits_uintmax.c file now
+ uses fits_u.h for consistency.
+[tests/tfits.c] Added tests, in particular for small negative op
+ (triggering the above bug) and in non-RNDN rounding modes.
+(merged changesets r8494,8501-8503 from the trunk)
+------------------------------------------------------------------------
+r8683 | vlefevre | 2013-09-26 10:28:49 +0000 (Thu, 26 Sep 2013) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/exp_2.c
+
+[src/exp_2.c] Fixed undefined behavior (present in all MPFR versions)
+detected by "clang -fsanitize=undefined".
+(merged changeset r8604 from the trunk)
+------------------------------------------------------------------------
+r8545 | vlefevre | 2013-05-30 15:59:08 +0000 (Thu, 30 May 2013) | 2 lines
+Changed paths:
+ M /branches/3.1/tools/ck-copyright-notice
+
+[tools/ck-copyright-notice] Update for copyright year ranges.
+(merged changeset r8544 from the trunk)
+------------------------------------------------------------------------
+r8543 | vlefevre | 2013-05-30 15:55:09 +0000 (Thu, 30 May 2013) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r8541 | vlefevre | 2013-05-30 15:53:34 +0000 (Thu, 30 May 2013) | 2 lines
+Changed paths:
+ M /branches/3.1/BUGS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/Makefile.am
+ M /branches/3.1/NEWS
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/Makefile.am
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/abort_prec_max.c
+ M /branches/3.1/src/acos.c
+ M /branches/3.1/src/acosh.c
+ M /branches/3.1/src/add.c
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/ai.c
+ M /branches/3.1/src/amd/amdfam10/mparam.h
+ M /branches/3.1/src/amd/athlon/mparam.h
+ M /branches/3.1/src/amd/k8/mparam.h
+ M /branches/3.1/src/arm/mparam.h
+ M /branches/3.1/src/asin.c
+ M /branches/3.1/src/asinh.c
+ M /branches/3.1/src/atan.c
+ M /branches/3.1/src/atan2.c
+ M /branches/3.1/src/atanh.c
+ M /branches/3.1/src/bernoulli.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/cache.c
+ M /branches/3.1/src/cbrt.c
+ M /branches/3.1/src/check.c
+ M /branches/3.1/src/clear.c
+ M /branches/3.1/src/clears.c
+ M /branches/3.1/src/cmp.c
+ M /branches/3.1/src/cmp2.c
+ M /branches/3.1/src/cmp_abs.c
+ M /branches/3.1/src/cmp_d.c
+ M /branches/3.1/src/cmp_ld.c
+ M /branches/3.1/src/cmp_si.c
+ M /branches/3.1/src/cmp_ui.c
+ M /branches/3.1/src/comparisons.c
+ M /branches/3.1/src/const_catalan.c
+ M /branches/3.1/src/const_euler.c
+ M /branches/3.1/src/const_log2.c
+ M /branches/3.1/src/const_pi.c
+ M /branches/3.1/src/constant.c
+ M /branches/3.1/src/copysign.c
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/cosh.c
+ M /branches/3.1/src/cot.c
+ M /branches/3.1/src/coth.c
+ M /branches/3.1/src/csc.c
+ M /branches/3.1/src/csch.c
+ M /branches/3.1/src/d_div.c
+ M /branches/3.1/src/d_sub.c
+ M /branches/3.1/src/digamma.c
+ M /branches/3.1/src/dim.c
+ M /branches/3.1/src/div.c
+ M /branches/3.1/src/div_2exp.c
+ M /branches/3.1/src/div_2si.c
+ M /branches/3.1/src/div_2ui.c
+ M /branches/3.1/src/div_d.c
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/dump.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/erf.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/exceptions.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/exp10.c
+ M /branches/3.1/src/exp2.c
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/src/exp_2.c
+ M /branches/3.1/src/expm1.c
+ M /branches/3.1/src/extract.c
+ M /branches/3.1/src/factorial.c
+ M /branches/3.1/src/fits_intmax.c
+ M /branches/3.1/src/fits_s.h
+ M /branches/3.1/src/fits_sint.c
+ M /branches/3.1/src/fits_slong.c
+ M /branches/3.1/src/fits_sshort.c
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uint.c
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/src/fits_ulong.c
+ M /branches/3.1/src/fits_ushort.c
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/src/fms.c
+ M /branches/3.1/src/frac.c
+ M /branches/3.1/src/free_cache.c
+ M /branches/3.1/src/frexp.c
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/gammaonethird.c
+ M /branches/3.1/src/gen_inverse.h
+ M /branches/3.1/src/generic/mparam.h
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/src/get_exp.c
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_ld.c
+ M /branches/3.1/src/get_si.c
+ M /branches/3.1/src/get_sj.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/get_ui.c
+ M /branches/3.1/src/get_uj.c
+ M /branches/3.1/src/get_z.c
+ M /branches/3.1/src/get_z_exp.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/grandom.c
+ M /branches/3.1/src/hppa/mparam.h
+ M /branches/3.1/src/hypot.c
+ M /branches/3.1/src/ia64/mparam.h
+ M /branches/3.1/src/ieee_floats.h
+ M /branches/3.1/src/init.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/inits.c
+ M /branches/3.1/src/inits2.c
+ M /branches/3.1/src/inp_str.c
+ M /branches/3.1/src/int_ceil_log2.c
+ M /branches/3.1/src/isinf.c
+ M /branches/3.1/src/isinteger.c
+ M /branches/3.1/src/isnan.c
+ M /branches/3.1/src/isnum.c
+ M /branches/3.1/src/isqrt.c
+ M /branches/3.1/src/isregular.c
+ M /branches/3.1/src/iszero.c
+ M /branches/3.1/src/jn.c
+ M /branches/3.1/src/jyn_asympt.c
+ M /branches/3.1/src/li2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/log.c
+ M /branches/3.1/src/log10.c
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/src/log2.c
+ M /branches/3.1/src/logging.c
+ M /branches/3.1/src/min_prec.c
+ M /branches/3.1/src/minmax.c
+ M /branches/3.1/src/modf.c
+ M /branches/3.1/src/mp_clz_tab.c
+ M /branches/3.1/src/mparam_h.in
+ M /branches/3.1/src/mpf2mpfr.h
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr-intmax.h
+ M /branches/3.1/src/mpfr-thread.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/mpn_exp.c
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/mul_2exp.c
+ M /branches/3.1/src/mul_2si.c
+ M /branches/3.1/src/mul_2ui.c
+ M /branches/3.1/src/mul_d.c
+ M /branches/3.1/src/mul_ui.c
+ M /branches/3.1/src/mulders.c
+ M /branches/3.1/src/neg.c
+ M /branches/3.1/src/next.c
+ M /branches/3.1/src/out_raw.c
+ M /branches/3.1/src/out_str.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/pow_si.c
+ M /branches/3.1/src/pow_ui.c
+ M /branches/3.1/src/pow_z.c
+ M /branches/3.1/src/powerof2.c
+ M /branches/3.1/src/powerpc32/mparam.h
+ M /branches/3.1/src/powerpc64/mparam.h
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/print_rnd_mode.c
+ M /branches/3.1/src/printf.c
+ M /branches/3.1/src/rec_sqrt.c
+ M /branches/3.1/src/reldiff.c
+ M /branches/3.1/src/rem1.c
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/src/root.c
+ M /branches/3.1/src/round_near_x.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/scale2.c
+ M /branches/3.1/src/sec.c
+ M /branches/3.1/src/sech.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/set_d64.c
+ M /branches/3.1/src/set_dfl_prec.c
+ M /branches/3.1/src/set_exp.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_flt.c
+ M /branches/3.1/src/set_inf.c
+ M /branches/3.1/src/set_ld.c
+ M /branches/3.1/src/set_nan.c
+ M /branches/3.1/src/set_prc_raw.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/set_rnd.c
+ M /branches/3.1/src/set_si.c
+ M /branches/3.1/src/set_si_2exp.c
+ M /branches/3.1/src/set_sj.c
+ M /branches/3.1/src/set_str.c
+ M /branches/3.1/src/set_str_raw.c
+ M /branches/3.1/src/set_ui.c
+ M /branches/3.1/src/set_ui_2exp.c
+ M /branches/3.1/src/set_uj.c
+ M /branches/3.1/src/set_z.c
+ M /branches/3.1/src/set_z_exp.c
+ M /branches/3.1/src/set_zero.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/setmin.c
+ M /branches/3.1/src/setsign.c
+ M /branches/3.1/src/sgn.c
+ M /branches/3.1/src/si_op.c
+ M /branches/3.1/src/signbit.c
+ M /branches/3.1/src/sin.c
+ M /branches/3.1/src/sin_cos.c
+ M /branches/3.1/src/sinh.c
+ M /branches/3.1/src/sinh_cosh.c
+ M /branches/3.1/src/sparc64/mparam.h
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/sqrt.c
+ M /branches/3.1/src/sqrt_ui.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub.c
+ M /branches/3.1/src/sub1.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/sub_d.c
+ M /branches/3.1/src/sub_ui.c
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/src/sum.c
+ M /branches/3.1/src/swap.c
+ M /branches/3.1/src/tan.c
+ M /branches/3.1/src/tanh.c
+ M /branches/3.1/src/uceil_exp2.c
+ M /branches/3.1/src/uceil_log2.c
+ M /branches/3.1/src/ufloor_log2.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_pow.c
+ M /branches/3.1/src/ui_pow_ui.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/src/urandom.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/src/version.c
+ M /branches/3.1/src/volatile.c
+ M /branches/3.1/src/x86/core2/mparam.h
+ M /branches/3.1/src/x86/mparam.h
+ M /branches/3.1/src/x86_64/core2/mparam.h
+ M /branches/3.1/src/x86_64/pentium4/mparam.h
+ M /branches/3.1/src/yn.c
+ M /branches/3.1/src/zeta.c
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/cmp_str.c
+ M /branches/3.1/tests/data/digamma
+ M /branches/3.1/tests/data/li2
+ M /branches/3.1/tests/memory.c
+ M /branches/3.1/tests/mpf_compat.c
+ M /branches/3.1/tests/mpf_compat.h
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/mpfr_compat.c
+ M /branches/3.1/tests/random2.c
+ M /branches/3.1/tests/reuse.c
+ M /branches/3.1/tests/rnd_mode.c
+ M /branches/3.1/tests/tabs.c
+ M /branches/3.1/tests/tacos.c
+ M /branches/3.1/tests/tacosh.c
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tadd1sp.c
+ M /branches/3.1/tests/tadd_d.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tai.c
+ M /branches/3.1/tests/tasin.c
+ M /branches/3.1/tests/tasinh.c
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tatanh.c
+ M /branches/3.1/tests/taway.c
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tcan_round.c
+ M /branches/3.1/tests/tcbrt.c
+ M /branches/3.1/tests/tcheck.c
+ M /branches/3.1/tests/tcmp.c
+ M /branches/3.1/tests/tcmp2.c
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tcmp_ui.c
+ M /branches/3.1/tests/tcmpabs.c
+ M /branches/3.1/tests/tcomparisons.c
+ M /branches/3.1/tests/tconst_catalan.c
+ M /branches/3.1/tests/tconst_euler.c
+ M /branches/3.1/tests/tconst_log2.c
+ M /branches/3.1/tests/tconst_pi.c
+ M /branches/3.1/tests/tcopysign.c
+ M /branches/3.1/tests/tcos.c
+ M /branches/3.1/tests/tcosh.c
+ M /branches/3.1/tests/tcot.c
+ M /branches/3.1/tests/tcoth.c
+ M /branches/3.1/tests/tcsc.c
+ M /branches/3.1/tests/tcsch.c
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/td_sub.c
+ M /branches/3.1/tests/tdigamma.c
+ M /branches/3.1/tests/tdim.c
+ M /branches/3.1/tests/tdiv.c
+ M /branches/3.1/tests/tdiv_d.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/teint.c
+ M /branches/3.1/tests/teq.c
+ M /branches/3.1/tests/terf.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/texceptions.c
+ M /branches/3.1/tests/texp.c
+ M /branches/3.1/tests/texp10.c
+ M /branches/3.1/tests/texp2.c
+ M /branches/3.1/tests/texpm1.c
+ M /branches/3.1/tests/tfactorial.c
+ M /branches/3.1/tests/tfits.c
+ M /branches/3.1/tests/tfma.c
+ M /branches/3.1/tests/tfmod.c
+ M /branches/3.1/tests/tfms.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tfrac.c
+ M /branches/3.1/tests/tfrexp.c
+ M /branches/3.1/tests/tgamma.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tgeneric_ui.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/tget_d_2exp.c
+ M /branches/3.1/tests/tget_f.c
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tget_ld_2exp.c
+ M /branches/3.1/tests/tget_set_d64.c
+ M /branches/3.1/tests/tget_sj.c
+ M /branches/3.1/tests/tget_str.c
+ M /branches/3.1/tests/tget_z.c
+ M /branches/3.1/tests/tgmpop.c
+ M /branches/3.1/tests/tgrandom.c
+ M /branches/3.1/tests/thyperbolic.c
+ M /branches/3.1/tests/thypot.c
+ M /branches/3.1/tests/tinits.c
+ M /branches/3.1/tests/tinp_str.c
+ M /branches/3.1/tests/tinternals.c
+ M /branches/3.1/tests/tisnan.c
+ M /branches/3.1/tests/tisqrt.c
+ M /branches/3.1/tests/tj0.c
+ M /branches/3.1/tests/tj1.c
+ M /branches/3.1/tests/tjn.c
+ M /branches/3.1/tests/tl2b.c
+ M /branches/3.1/tests/tlgamma.c
+ M /branches/3.1/tests/tli2.c
+ M /branches/3.1/tests/tlngamma.c
+ M /branches/3.1/tests/tlog.c
+ M /branches/3.1/tests/tlog10.c
+ M /branches/3.1/tests/tlog1p.c
+ M /branches/3.1/tests/tlog2.c
+ M /branches/3.1/tests/tmin_prec.c
+ M /branches/3.1/tests/tminmax.c
+ M /branches/3.1/tests/tmodf.c
+ M /branches/3.1/tests/tmul.c
+ M /branches/3.1/tests/tmul_2exp.c
+ M /branches/3.1/tests/tmul_d.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tnext.c
+ M /branches/3.1/tests/tout_str.c
+ M /branches/3.1/tests/toutimpl.c
+ M /branches/3.1/tests/tpow.c
+ M /branches/3.1/tests/tpow3.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tpow_z.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/trec_sqrt.c
+ M /branches/3.1/tests/tremquo.c
+ M /branches/3.1/tests/trint.c
+ M /branches/3.1/tests/troot.c
+ M /branches/3.1/tests/tround_prec.c
+ M /branches/3.1/tests/tsec.c
+ M /branches/3.1/tests/tsech.c
+ M /branches/3.1/tests/tset.c
+ M /branches/3.1/tests/tset_d.c
+ M /branches/3.1/tests/tset_exp.c
+ M /branches/3.1/tests/tset_f.c
+ M /branches/3.1/tests/tset_ld.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tset_si.c
+ M /branches/3.1/tests/tset_sj.c
+ M /branches/3.1/tests/tset_str.c
+ M /branches/3.1/tests/tset_z.c
+ M /branches/3.1/tests/tset_z_exp.c
+ M /branches/3.1/tests/tsgn.c
+ M /branches/3.1/tests/tsi_op.c
+ M /branches/3.1/tests/tsin.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsinh.c
+ M /branches/3.1/tests/tsinh_cosh.c
+ M /branches/3.1/tests/tsprintf.c
+ M /branches/3.1/tests/tsqr.c
+ M /branches/3.1/tests/tsqrt.c
+ M /branches/3.1/tests/tsqrt_ui.c
+ M /branches/3.1/tests/tstckintc.c
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tstrtofr.c
+ M /branches/3.1/tests/tsub.c
+ M /branches/3.1/tests/tsub1sp.c
+ M /branches/3.1/tests/tsub_d.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tsubnormal.c
+ M /branches/3.1/tests/tsum.c
+ M /branches/3.1/tests/tswap.c
+ M /branches/3.1/tests/ttan.c
+ M /branches/3.1/tests/ttanh.c
+ M /branches/3.1/tests/ttrunc.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_pow.c
+ M /branches/3.1/tests/tui_sub.c
+ M /branches/3.1/tests/turandom.c
+ M /branches/3.1/tests/tvalist.c
+ M /branches/3.1/tests/tversion.c
+ M /branches/3.1/tests/ty0.c
+ M /branches/3.1/tests/ty1.c
+ M /branches/3.1/tests/tyn.c
+ M /branches/3.1/tests/tzeta.c
+ M /branches/3.1/tests/tzeta_ui.c
+ M /branches/3.1/tools/ck-copyright-notice
+ M /branches/3.1/tools/ck-mparam
+ M /branches/3.1/tools/ck-version-info
+ M /branches/3.1/tools/get_patches.sh
+ M /branches/3.1/tools/mbench/Makefile
+ M /branches/3.1/tools/mbench/generate.c
+ M /branches/3.1/tools/mbench/mfv5-arprec.cc
+ M /branches/3.1/tools/mbench/mfv5-cln.cc
+ M /branches/3.1/tools/mbench/mfv5-crlibm.cc
+ M /branches/3.1/tools/mbench/mfv5-libc.cc
+ M /branches/3.1/tools/mbench/mfv5-lidia.cc
+ M /branches/3.1/tools/mbench/mfv5-mpf.cc
+ M /branches/3.1/tools/mbench/mfv5-mpfr.cc
+ M /branches/3.1/tools/mbench/mfv5-ntl.cc
+ M /branches/3.1/tools/mbench/mfv5-pari.cc
+ M /branches/3.1/tools/mbench/mfv5-void.cc
+ M /branches/3.1/tools/mbench/mfv5.cc
+ M /branches/3.1/tools/mbench/mfv5.h
+ M /branches/3.1/tools/mbench/mpfr-gfx.c
+ M /branches/3.1/tools/mbench/mpfr-v4.c
+ M /branches/3.1/tools/mbench/mpfr-v6.c
+ M /branches/3.1/tools/mbench/timp.h
+ M /branches/3.1/tune/Makefile.am
+ M /branches/3.1/tune/bidimensional_sample.c
+ M /branches/3.1/tune/speed.c
+ M /branches/3.1/tune/tuneup.c
+
+Use copyright year ranges, following
+ http://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices
+------------------------------------------------------------------------
+r8538 | vlefevre | 2013-05-30 13:51:40 +0000 (Thu, 30 May 2013) | 1 line
+Changed paths:
+ M /branches/3.1/tests
+
+[tests] Added *.log and *.trs to svn:ignore property.
+------------------------------------------------------------------------
+r8535 | vlefevre | 2013-05-30 13:22:23 +0000 (Thu, 30 May 2013) | 1 line
+Changed paths:
+ M /branches/3.1
+
+Added test-driver (from Automake 1.12+) to svn:ignore property.
+------------------------------------------------------------------------
+r8486 | vlefevre | 2013-03-13 21:48:23 +0000 (Wed, 13 Mar 2013) | 1 line
+Changed paths:
+ M /branches/3.1/INSTALL
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.3-dev.
+------------------------------------------------------------------------
+r8484 | vlefevre | 2013-03-13 15:33:33 +0000 (Wed, 13 Mar 2013) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r8482 | vlefevre | 2013-03-13 15:29:32 +0000 (Wed, 13 Mar 2013) | 1 line
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.2.
+------------------------------------------------------------------------
+r8480 | vlefevre | 2013-03-13 01:00:16 +0000 (Wed, 13 Mar 2013) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] Corrected comment on clock_gettime.
+(merged changeset r8446 from the trunk)
+------------------------------------------------------------------------
+r8479 | zimmerma | 2013-03-12 09:37:20 +0000 (Tue, 12 Mar 2013) | 4 lines
+Changed paths:
+ M /branches/3.1/configure.ac
+ M /branches/3.1/tune/Makefile.am
+
+(merged changeset 8443-8445 from the trunk)
+Tuning: reverted changeset r8444 and applied patch by Patrick Pélissier
+for GMP 5.1.0 to link against librt conditionally.
+
+------------------------------------------------------------------------
+r8478 | vlefevre | 2013-03-12 02:20:01 +0000 (Tue, 12 Mar 2013) | 2 lines
+Changed paths:
+ M /branches/3.1/INSTALL
+
+[INSTALL] Added a paragraph about Cygwin and threading.
+(merged changeset r8477 from the trunk)
+------------------------------------------------------------------------
+r8476 | vlefevre | 2013-03-12 00:11:18 +0000 (Tue, 12 Mar 2013) | 3 lines
+Changed paths:
+ M /branches/3.1/INSTALL
+
+[INSTALL] Improved information on patches.
+(merged changeset r8475 from the trunk, after temporarily reverted
+to 3.2.0-dev with tools/update-version for the merge)
+------------------------------------------------------------------------
+r8471 | vlefevre | 2013-03-08 12:06:54 +0000 (Fri, 08 Mar 2013) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r8470 | vlefevre | 2013-03-08 11:59:32 +0000 (Fri, 08 Mar 2013) | 2 lines
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.2-rc1 and updated libmpfr_la_LDFLAGS in
+src/Makefile.am for the next release.
+------------------------------------------------------------------------
+r8468 | vlefevre | 2013-03-08 11:44:47 +0000 (Fri, 08 Mar 2013) | 1 line
+Changed paths:
+ M /branches/3.1/NEWS
+
+[NEWS] Update for GNU MPFR 3.1.2.
+------------------------------------------------------------------------
+r8466 | vlefevre | 2013-03-08 00:34:36 +0000 (Fri, 08 Mar 2013) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r8465 | vlefevre | 2013-03-08 00:33:22 +0000 (Fri, 08 Mar 2013) | 5 lines
+Changed paths:
+ M /branches/3.1/BUGS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/Makefile.am
+ M /branches/3.1/NEWS
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/Makefile.am
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/abort_prec_max.c
+ M /branches/3.1/src/acos.c
+ M /branches/3.1/src/acosh.c
+ M /branches/3.1/src/add.c
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/ai.c
+ M /branches/3.1/src/amd/amdfam10/mparam.h
+ M /branches/3.1/src/amd/athlon/mparam.h
+ M /branches/3.1/src/amd/k8/mparam.h
+ M /branches/3.1/src/arm/mparam.h
+ M /branches/3.1/src/asin.c
+ M /branches/3.1/src/asinh.c
+ M /branches/3.1/src/atan.c
+ M /branches/3.1/src/atan2.c
+ M /branches/3.1/src/atanh.c
+ M /branches/3.1/src/bernoulli.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/cache.c
+ M /branches/3.1/src/cbrt.c
+ M /branches/3.1/src/check.c
+ M /branches/3.1/src/clear.c
+ M /branches/3.1/src/clears.c
+ M /branches/3.1/src/cmp.c
+ M /branches/3.1/src/cmp2.c
+ M /branches/3.1/src/cmp_abs.c
+ M /branches/3.1/src/cmp_d.c
+ M /branches/3.1/src/cmp_ld.c
+ M /branches/3.1/src/cmp_si.c
+ M /branches/3.1/src/cmp_ui.c
+ M /branches/3.1/src/comparisons.c
+ M /branches/3.1/src/const_catalan.c
+ M /branches/3.1/src/const_euler.c
+ M /branches/3.1/src/const_log2.c
+ M /branches/3.1/src/const_pi.c
+ M /branches/3.1/src/constant.c
+ M /branches/3.1/src/copysign.c
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/cosh.c
+ M /branches/3.1/src/cot.c
+ M /branches/3.1/src/coth.c
+ M /branches/3.1/src/csc.c
+ M /branches/3.1/src/csch.c
+ M /branches/3.1/src/d_div.c
+ M /branches/3.1/src/d_sub.c
+ M /branches/3.1/src/digamma.c
+ M /branches/3.1/src/dim.c
+ M /branches/3.1/src/div.c
+ M /branches/3.1/src/div_2exp.c
+ M /branches/3.1/src/div_2si.c
+ M /branches/3.1/src/div_2ui.c
+ M /branches/3.1/src/div_d.c
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/dump.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/erf.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/exceptions.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/exp10.c
+ M /branches/3.1/src/exp2.c
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/src/exp_2.c
+ M /branches/3.1/src/expm1.c
+ M /branches/3.1/src/extract.c
+ M /branches/3.1/src/factorial.c
+ M /branches/3.1/src/fits_intmax.c
+ M /branches/3.1/src/fits_s.h
+ M /branches/3.1/src/fits_sint.c
+ M /branches/3.1/src/fits_slong.c
+ M /branches/3.1/src/fits_sshort.c
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uint.c
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/src/fits_ulong.c
+ M /branches/3.1/src/fits_ushort.c
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/src/fms.c
+ M /branches/3.1/src/frac.c
+ M /branches/3.1/src/free_cache.c
+ M /branches/3.1/src/frexp.c
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/gammaonethird.c
+ M /branches/3.1/src/gen_inverse.h
+ M /branches/3.1/src/generic/mparam.h
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/src/get_exp.c
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_ld.c
+ M /branches/3.1/src/get_si.c
+ M /branches/3.1/src/get_sj.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/get_ui.c
+ M /branches/3.1/src/get_uj.c
+ M /branches/3.1/src/get_z.c
+ M /branches/3.1/src/get_z_exp.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/grandom.c
+ M /branches/3.1/src/hppa/mparam.h
+ M /branches/3.1/src/hypot.c
+ M /branches/3.1/src/ia64/mparam.h
+ M /branches/3.1/src/ieee_floats.h
+ M /branches/3.1/src/init.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/inits.c
+ M /branches/3.1/src/inits2.c
+ M /branches/3.1/src/inp_str.c
+ M /branches/3.1/src/int_ceil_log2.c
+ M /branches/3.1/src/isinf.c
+ M /branches/3.1/src/isinteger.c
+ M /branches/3.1/src/isnan.c
+ M /branches/3.1/src/isnum.c
+ M /branches/3.1/src/isqrt.c
+ M /branches/3.1/src/isregular.c
+ M /branches/3.1/src/iszero.c
+ M /branches/3.1/src/jn.c
+ M /branches/3.1/src/jyn_asympt.c
+ M /branches/3.1/src/li2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/log.c
+ M /branches/3.1/src/log10.c
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/src/log2.c
+ M /branches/3.1/src/logging.c
+ M /branches/3.1/src/min_prec.c
+ M /branches/3.1/src/minmax.c
+ M /branches/3.1/src/modf.c
+ M /branches/3.1/src/mp_clz_tab.c
+ M /branches/3.1/src/mparam_h.in
+ M /branches/3.1/src/mpf2mpfr.h
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr-intmax.h
+ M /branches/3.1/src/mpfr-longlong.h
+ M /branches/3.1/src/mpfr-thread.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/mpn_exp.c
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/mul_2exp.c
+ M /branches/3.1/src/mul_2si.c
+ M /branches/3.1/src/mul_2ui.c
+ M /branches/3.1/src/mul_d.c
+ M /branches/3.1/src/mul_ui.c
+ M /branches/3.1/src/mulders.c
+ M /branches/3.1/src/neg.c
+ M /branches/3.1/src/next.c
+ M /branches/3.1/src/out_raw.c
+ M /branches/3.1/src/out_str.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/pow_si.c
+ M /branches/3.1/src/pow_ui.c
+ M /branches/3.1/src/pow_z.c
+ M /branches/3.1/src/powerof2.c
+ M /branches/3.1/src/powerpc32/mparam.h
+ M /branches/3.1/src/powerpc64/mparam.h
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/print_rnd_mode.c
+ M /branches/3.1/src/printf.c
+ M /branches/3.1/src/rec_sqrt.c
+ M /branches/3.1/src/reldiff.c
+ M /branches/3.1/src/rem1.c
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/src/root.c
+ M /branches/3.1/src/round_near_x.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/scale2.c
+ M /branches/3.1/src/sec.c
+ M /branches/3.1/src/sech.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/set_d64.c
+ M /branches/3.1/src/set_dfl_prec.c
+ M /branches/3.1/src/set_exp.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_flt.c
+ M /branches/3.1/src/set_inf.c
+ M /branches/3.1/src/set_ld.c
+ M /branches/3.1/src/set_nan.c
+ M /branches/3.1/src/set_prc_raw.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/set_rnd.c
+ M /branches/3.1/src/set_si.c
+ M /branches/3.1/src/set_si_2exp.c
+ M /branches/3.1/src/set_sj.c
+ M /branches/3.1/src/set_str.c
+ M /branches/3.1/src/set_str_raw.c
+ M /branches/3.1/src/set_ui.c
+ M /branches/3.1/src/set_ui_2exp.c
+ M /branches/3.1/src/set_uj.c
+ M /branches/3.1/src/set_z.c
+ M /branches/3.1/src/set_z_exp.c
+ M /branches/3.1/src/set_zero.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/setmin.c
+ M /branches/3.1/src/setsign.c
+ M /branches/3.1/src/sgn.c
+ M /branches/3.1/src/si_op.c
+ M /branches/3.1/src/signbit.c
+ M /branches/3.1/src/sin.c
+ M /branches/3.1/src/sin_cos.c
+ M /branches/3.1/src/sinh.c
+ M /branches/3.1/src/sinh_cosh.c
+ M /branches/3.1/src/sparc64/mparam.h
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/sqrt.c
+ M /branches/3.1/src/sqrt_ui.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub.c
+ M /branches/3.1/src/sub1.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/sub_d.c
+ M /branches/3.1/src/sub_ui.c
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/src/sum.c
+ M /branches/3.1/src/swap.c
+ M /branches/3.1/src/tan.c
+ M /branches/3.1/src/tanh.c
+ M /branches/3.1/src/uceil_exp2.c
+ M /branches/3.1/src/uceil_log2.c
+ M /branches/3.1/src/ufloor_log2.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_pow.c
+ M /branches/3.1/src/ui_pow_ui.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/src/urandom.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/src/version.c
+ M /branches/3.1/src/volatile.c
+ M /branches/3.1/src/x86/core2/mparam.h
+ M /branches/3.1/src/x86/mparam.h
+ M /branches/3.1/src/x86_64/core2/mparam.h
+ M /branches/3.1/src/x86_64/pentium4/mparam.h
+ M /branches/3.1/src/yn.c
+ M /branches/3.1/src/zeta.c
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/cmp_str.c
+ M /branches/3.1/tests/data/digamma
+ M /branches/3.1/tests/data/li2
+ M /branches/3.1/tests/memory.c
+ M /branches/3.1/tests/mpf_compat.c
+ M /branches/3.1/tests/mpf_compat.h
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/mpfr_compat.c
+ M /branches/3.1/tests/random2.c
+ M /branches/3.1/tests/reuse.c
+ M /branches/3.1/tests/rnd_mode.c
+ M /branches/3.1/tests/tabs.c
+ M /branches/3.1/tests/tacos.c
+ M /branches/3.1/tests/tacosh.c
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tadd1sp.c
+ M /branches/3.1/tests/tadd_d.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tai.c
+ M /branches/3.1/tests/tasin.c
+ M /branches/3.1/tests/tasinh.c
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tatanh.c
+ M /branches/3.1/tests/taway.c
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tcan_round.c
+ M /branches/3.1/tests/tcbrt.c
+ M /branches/3.1/tests/tcheck.c
+ M /branches/3.1/tests/tcmp.c
+ M /branches/3.1/tests/tcmp2.c
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tcmp_ui.c
+ M /branches/3.1/tests/tcmpabs.c
+ M /branches/3.1/tests/tcomparisons.c
+ M /branches/3.1/tests/tconst_catalan.c
+ M /branches/3.1/tests/tconst_euler.c
+ M /branches/3.1/tests/tconst_log2.c
+ M /branches/3.1/tests/tconst_pi.c
+ M /branches/3.1/tests/tcopysign.c
+ M /branches/3.1/tests/tcos.c
+ M /branches/3.1/tests/tcosh.c
+ M /branches/3.1/tests/tcot.c
+ M /branches/3.1/tests/tcoth.c
+ M /branches/3.1/tests/tcsc.c
+ M /branches/3.1/tests/tcsch.c
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/td_sub.c
+ M /branches/3.1/tests/tdigamma.c
+ M /branches/3.1/tests/tdim.c
+ M /branches/3.1/tests/tdiv.c
+ M /branches/3.1/tests/tdiv_d.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/teint.c
+ M /branches/3.1/tests/teq.c
+ M /branches/3.1/tests/terf.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/texceptions.c
+ M /branches/3.1/tests/texp.c
+ M /branches/3.1/tests/texp10.c
+ M /branches/3.1/tests/texp2.c
+ M /branches/3.1/tests/texpm1.c
+ M /branches/3.1/tests/tfactorial.c
+ M /branches/3.1/tests/tfits.c
+ M /branches/3.1/tests/tfma.c
+ M /branches/3.1/tests/tfmod.c
+ M /branches/3.1/tests/tfms.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tfrac.c
+ M /branches/3.1/tests/tfrexp.c
+ M /branches/3.1/tests/tgamma.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tgeneric_ui.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/tget_d_2exp.c
+ M /branches/3.1/tests/tget_f.c
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tget_ld_2exp.c
+ M /branches/3.1/tests/tget_set_d64.c
+ M /branches/3.1/tests/tget_sj.c
+ M /branches/3.1/tests/tget_str.c
+ M /branches/3.1/tests/tget_z.c
+ M /branches/3.1/tests/tgmpop.c
+ M /branches/3.1/tests/tgrandom.c
+ M /branches/3.1/tests/thyperbolic.c
+ M /branches/3.1/tests/thypot.c
+ M /branches/3.1/tests/tinits.c
+ M /branches/3.1/tests/tinp_str.c
+ M /branches/3.1/tests/tinternals.c
+ M /branches/3.1/tests/tisnan.c
+ M /branches/3.1/tests/tisqrt.c
+ M /branches/3.1/tests/tj0.c
+ M /branches/3.1/tests/tj1.c
+ M /branches/3.1/tests/tjn.c
+ M /branches/3.1/tests/tl2b.c
+ M /branches/3.1/tests/tlgamma.c
+ M /branches/3.1/tests/tli2.c
+ M /branches/3.1/tests/tlngamma.c
+ M /branches/3.1/tests/tlog.c
+ M /branches/3.1/tests/tlog10.c
+ M /branches/3.1/tests/tlog1p.c
+ M /branches/3.1/tests/tlog2.c
+ M /branches/3.1/tests/tmin_prec.c
+ M /branches/3.1/tests/tminmax.c
+ M /branches/3.1/tests/tmodf.c
+ M /branches/3.1/tests/tmul.c
+ M /branches/3.1/tests/tmul_2exp.c
+ M /branches/3.1/tests/tmul_d.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tnext.c
+ M /branches/3.1/tests/tout_str.c
+ M /branches/3.1/tests/toutimpl.c
+ M /branches/3.1/tests/tpow.c
+ M /branches/3.1/tests/tpow3.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tpow_z.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/trec_sqrt.c
+ M /branches/3.1/tests/tremquo.c
+ M /branches/3.1/tests/trint.c
+ M /branches/3.1/tests/troot.c
+ M /branches/3.1/tests/tround_prec.c
+ M /branches/3.1/tests/tsec.c
+ M /branches/3.1/tests/tsech.c
+ M /branches/3.1/tests/tset.c
+ M /branches/3.1/tests/tset_d.c
+ M /branches/3.1/tests/tset_exp.c
+ M /branches/3.1/tests/tset_f.c
+ M /branches/3.1/tests/tset_ld.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tset_si.c
+ M /branches/3.1/tests/tset_sj.c
+ M /branches/3.1/tests/tset_str.c
+ M /branches/3.1/tests/tset_z.c
+ M /branches/3.1/tests/tset_z_exp.c
+ M /branches/3.1/tests/tsgn.c
+ M /branches/3.1/tests/tsi_op.c
+ M /branches/3.1/tests/tsin.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsinh.c
+ M /branches/3.1/tests/tsinh_cosh.c
+ M /branches/3.1/tests/tsprintf.c
+ M /branches/3.1/tests/tsqr.c
+ M /branches/3.1/tests/tsqrt.c
+ M /branches/3.1/tests/tsqrt_ui.c
+ M /branches/3.1/tests/tstckintc.c
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tstrtofr.c
+ M /branches/3.1/tests/tsub.c
+ M /branches/3.1/tests/tsub1sp.c
+ M /branches/3.1/tests/tsub_d.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tsubnormal.c
+ M /branches/3.1/tests/tsum.c
+ M /branches/3.1/tests/tswap.c
+ M /branches/3.1/tests/ttan.c
+ M /branches/3.1/tests/ttanh.c
+ M /branches/3.1/tests/ttrunc.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_pow.c
+ M /branches/3.1/tests/tui_sub.c
+ M /branches/3.1/tests/turandom.c
+ M /branches/3.1/tests/tvalist.c
+ M /branches/3.1/tests/tversion.c
+ M /branches/3.1/tests/ty0.c
+ M /branches/3.1/tests/ty1.c
+ M /branches/3.1/tests/tyn.c
+ M /branches/3.1/tests/tzeta.c
+ M /branches/3.1/tests/tzeta_ui.c
+ M /branches/3.1/tools/ck-copyright-notice
+ M /branches/3.1/tools/ck-mparam
+ M /branches/3.1/tools/ck-version-info
+ M /branches/3.1/tools/get_patches.sh
+ M /branches/3.1/tune/Makefile.am
+ M /branches/3.1/tune/bidimensional_sample.c
+ M /branches/3.1/tune/speed.c
+ M /branches/3.1/tune/tuneup.c
+
+Copyright notice update: added 2013 with
+ perl -pi -e 's/2012 Free Software/2012, 2013 Free Software/' **/*(^/)
+under zsh, reverting the ChangeLog file (the m4 and tools/mbench
+directories were not modified).
+Removed 2012 from the example in the doc/README.dev file.
+------------------------------------------------------------------------
+r8464 | vlefevre | 2013-03-08 00:28:01 +0000 (Fri, 08 Mar 2013) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/examples/ReadMe
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+
+[examples] Replaced the old rounding mode macros (GMP_RNDN, etc.) by the
+new ones (MPFR_RNDN, etc.) in the *.c files; updated ReadMe file.
+(merged changeset r8461 from the trunk)
+------------------------------------------------------------------------
+r8463 | vlefevre | 2013-03-08 00:26:52 +0000 (Fri, 08 Mar 2013) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/doc/update-faq
+
+[doc] Slightly modified faq.xsl to avoid libxslt bug 377440, and
+moved the addition of special CSS comments for XML compatibility
+from update-faq to faq.xsl file. Removed the now useless
+s/GMP_RND/MPFR_RND/ rewriting in update-faq.
+(merged changesets r8458,8460 from the trunk)
+------------------------------------------------------------------------
+r8454 | vlefevre | 2013-02-22 12:11:37 +0000 (Fri, 22 Feb 2013) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tgeneric.c
+
+Compatibility with GMP 5.1.0 and later when gmp-impl.h is included,
+i.e. with --with-gmp-build (thanks to Rob for the fix); clean-up.
+(merged changeset r8439 from the trunk)
+------------------------------------------------------------------------
+r8399 | vlefevre | 2012-08-29 13:54:55 +0000 (Wed, 29 Aug 2012) | 8 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/tests/tstrtofr.c
+
+[src/strtofr.c] Fixed bug in mpfr_strtofr in case:
+ (1) the input string was used entirely
+ (2) the conversion was done by a division
+ (3) and the division was exact
+ In such a case the "reconstruction" of the ternary value was inexact.
+[tests/tstrtofr.c] Added various testcases (for this bug and for bugs
+ in intermediate revisions).
+(merged changesets r8371,8384,8389-8398 from the trunk)
+------------------------------------------------------------------------
+r8387 | vlefevre | 2012-08-28 15:06:27 +0000 (Tue, 28 Aug 2012) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/FAQ.html
+
+[doc] Updated FAQ.html (changeset r8386 from the trunk).
+------------------------------------------------------------------------
+r8380 | vlefevre | 2012-08-16 09:12:57 +0000 (Thu, 16 Aug 2012) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/tests/tget_set_d64.c
+
+[src/get_d64.c] mpfr_get_decimal64 was buggy in MPFR_RNDN on some
+ values x such that 0.5e-398 < |x| < 1e-398 (smallest subnormal):
+ it was returning 0 instead of +/- 1e-398.
+[tests/tget_set_d64.c] Added testcases.
+(merged changesets r8370,8379 from the trunk)
+------------------------------------------------------------------------
+r8378 | vlefevre | 2012-08-15 23:41:21 +0000 (Wed, 15 Aug 2012) | 7 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/tests/tget_set_d64.c
+
+[src/get_d64.c] Fixed get_decimal64_max by simplifying it completely,
+and changed get_decimal64_min in the same way.
+Thanks to Rob (Sisyphus) for the idea.
+[tests/tget_set_d64.c] Added some tests for large numbers and overflow
+tests (they cover the two bad tests fixed in r8373 and trigger the bug
+in get_decimal64_max fixed here).
+(merged changesets r8375-8377 from the trunk)
+------------------------------------------------------------------------
+r8373 | vlefevre | 2012-08-14 10:37:10 +0000 (Tue, 14 Aug 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/get_d64.c
+
+[src/get_d64.c] Fixed overflow cases.
+(merged changeset r8372 from the trunk)
+------------------------------------------------------------------------
+r8361 | vlefevre | 2012-07-26 14:21:40 +0000 (Thu, 26 Jul 2012) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+
+[configure.ac] Replaced "sed" by "$SED" and "grep" by "$EGREP".
+------------------------------------------------------------------------
+r8330 | vlefevre | 2012-07-05 10:44:31 +0000 (Thu, 05 Jul 2012) | 2 lines
+Changed paths:
+ M /branches/3.1/tools/coverage
+
+[tools/coverage] Added a comment about the non-reproducibility of the
+coverage results.
+------------------------------------------------------------------------
+r8318 | vlefevre | 2012-07-04 09:30:08 +0000 (Wed, 04 Jul 2012) | 1 line
+Changed paths:
+ M /branches/3.1/INSTALL
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.2-dev.
+------------------------------------------------------------------------
+r8309 | vlefevre | 2012-07-03 14:23:23 +0000 (Tue, 03 Jul 2012) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r8307 | vlefevre | 2012-07-03 14:19:10 +0000 (Tue, 03 Jul 2012) | 1 line
+Changed paths:
+ M /branches/3.1/NEWS
+
+[NEWS] Added test coverage for MPFR 3.1.1.
+------------------------------------------------------------------------
+r8306 | vlefevre | 2012-07-03 14:17:16 +0000 (Tue, 03 Jul 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tools/coverage
+
+[tools/coverage] Some changes from the trunk (r8263,8275,8277,8305),
+in particular detailed coverage.
+------------------------------------------------------------------------
+r8303 | vlefevre | 2012-07-03 13:52:02 +0000 (Tue, 03 Jul 2012) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r8301 | vlefevre | 2012-07-03 13:49:45 +0000 (Tue, 03 Jul 2012) | 1 line
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.1.
+------------------------------------------------------------------------
+r8300 | vlefevre | 2012-07-03 13:47:34 +0000 (Tue, 03 Jul 2012) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/tget_d.c
+
+[tests/tests.c] Improved an error message.
+[tests/{td_div.c,tget_d.c}] Disable tests with a division by 0 if
+ MPFR_ERRDIVZERO is defined.
+(merged changesets r8298-8299 from the trunk)
+------------------------------------------------------------------------
+r8290 | vlefevre | 2012-06-27 12:00:38 +0000 (Wed, 27 Jun 2012) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[mpfr.texi] added support by ERC grant of Andreas
+------------------------------------------------------------------------
+r8288 | vlefevre | 2012-06-27 09:15:26 +0000 (Wed, 27 Jun 2012) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Document MPFR_WANT_DECIMAL_FLOATS.
+------------------------------------------------------------------------
+r8284 | vlefevre | 2012-06-27 08:37:21 +0000 (Wed, 27 Jun 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tgrandom.c
+
+[tests/tgrandom.c] Replaced GMP_RNDN by MPFR_RNDN.
+(merged changeset r8283 from the trunk)
+------------------------------------------------------------------------
+r8282 | vlefevre | 2012-06-27 08:33:41 +0000 (Wed, 27 Jun 2012) | 1 line
+Changed paths:
+ M /branches/3.1/NEWS
+
+[NEWS] Update.
+------------------------------------------------------------------------
+r8281 | vlefevre | 2012-06-27 08:23:11 +0000 (Wed, 27 Jun 2012) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/tests/tgrandom.c
+
+[doc/mpfr.texi] Completed spec of mpfr_grandom.
+[tests/tgrandom.c] Improved a test and added a new one for
+ mpfr_grandom(x, NULL, ...).
+(merged changesets r8279-8280 from the trunk)
+------------------------------------------------------------------------
+r8278 | vlefevre | 2012-06-27 08:10:45 +0000 (Wed, 27 Jun 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/NEWS
+
+[NEWS] Update: test coverage.
+(merged changeset r8276 from the trunk)
+------------------------------------------------------------------------
+r8259 | vlefevre | 2012-06-26 15:02:18 +0000 (Tue, 26 Jun 2012) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r8257 | vlefevre | 2012-06-26 14:51:13 +0000 (Tue, 26 Jun 2012) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r8256 | vlefevre | 2012-06-26 14:50:17 +0000 (Tue, 26 Jun 2012) | 2 lines
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.1-rc1 and updated libmpfr_la_LDFLAGS in
+src/Makefile.am for the next release.
+------------------------------------------------------------------------
+r8255 | vlefevre | 2012-06-26 14:41:27 +0000 (Tue, 26 Jun 2012) | 1 line
+Changed paths:
+ M /branches/3.1/NEWS
+
+[NEWS] Update for GNU MPFR 3.1.1.
+------------------------------------------------------------------------
+r8254 | vlefevre | 2012-06-26 14:03:44 +0000 (Tue, 26 Jun 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tinternals.c
+
+[tests/tinternals.c] mpfr_set_prec_raw missing tests (thanks to Patrick).
+(merged changeset r8253 from the trunk)
+------------------------------------------------------------------------
+r8252 | vlefevre | 2012-06-26 13:57:32 +0000 (Tue, 26 Jun 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tset_si.c
+
+[tests/tset_si.c] Also test the mpfr_set_ui function (instead of macro).
+(merged changeset r8251 from the trunk)
+------------------------------------------------------------------------
+r8220 | vlefevre | 2012-06-21 23:03:44 +0000 (Thu, 21 Jun 2012) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tset_ld.c
+
+[tests/tset_ld.c] For _GMP_IEEE_FLOATS, use #if instead of #ifdef
+since mpfr-impl.h defines it to 0 if it was undefined.
+(merged changeset r8219 from the trunk)
+------------------------------------------------------------------------
+r8205 | vlefevre | 2012-05-09 00:07:18 +0000 (Wed, 09 May 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/configure.ac
+ M /branches/3.1/tests/Makefile.am
+
+Patch from Nitin A Kamble for automake 1.12
+(merged changeset r8204 from the trunk)
+------------------------------------------------------------------------
+r8202 | vlefevre | 2012-05-07 18:13:13 +0000 (Mon, 07 May 2012) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/AUTHORS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/doc/mpfr.texi
+
+[AUTHORS,INSTALL,doc/mpfr.texi] Updated the e-mail address of the
+MPFR mailing-list to match the List-* headers written by the new
+mailing-list server (the old one still works, but may lead to bad
+interaction with MUA's that attempt to honor the List-Post header
+when replying to the list(s)).
+------------------------------------------------------------------------
+r8200 | vlefevre | 2012-05-07 17:58:04 +0000 (Mon, 07 May 2012) | 6 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/tests/tgamma.c
+
+[src/lngamma.c] Added mpfr_explgamma internal function to handle
+ overflows/underflows (intermediate or not) in mpfr_gamma. Added
+ general overflow detection.
+[src/gamma.c] Added general underflow detection.
+[tests/tgamma.c] Added testcases for 32-bit and 64-bit machines.
+(merged changesets r8174,8179,8182-8183,8185-8189,8191-8199 from the trunk)
+------------------------------------------------------------------------
+r8184 | vlefevre | 2012-05-03 14:44:57 +0000 (Thu, 03 May 2012) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/gamma.c
+
+[src/gamma.c] Reverted changeset r8180, which seems incorrect.
+------------------------------------------------------------------------
+r8180 | vlefevre | 2012-05-03 13:46:22 +0000 (Thu, 03 May 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/gamma.c
+
+[gamma.c] tentative fix for the underflow problem
+(merged changesets r8174,8179 from the trunk)
+------------------------------------------------------------------------
+r8178 | vlefevre | 2012-05-03 13:26:40 +0000 (Thu, 03 May 2012) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r8176 | vlefevre | 2012-05-03 13:08:51 +0000 (Thu, 03 May 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/TODO
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsqr.c
+
+Merged changesets r8172-8173,8175 from the trunk to update URL's of
+mailing-list archives/messages.
+------------------------------------------------------------------------
+r8165 | vlefevre | 2012-04-27 12:39:54 +0000 (Fri, 27 Apr 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tgamma.c
+
+[tests/tgamma.c] Improved testcase test20100709.
+(merged changeset r8164 from the trunk)
+------------------------------------------------------------------------
+r8163 | vlefevre | 2012-04-27 12:29:02 +0000 (Fri, 27 Apr 2012) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tgamma.c
+
+[tests/tgamma.c] Updated testcase test20100709 for 64-bit machines,
+as this bug reappeared in r8160 (r8159 from the trunk).
+(merged changeset r8162 from the trunk)
+------------------------------------------------------------------------
+r8160 | vlefevre | 2012-04-27 01:08:44 +0000 (Fri, 27 Apr 2012) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/tests/tgamma.c
+
+[src/gamma.c] Fixed bug in the underflow detection code of mpfr_gamma,
+ found by Giridhar Tammana: some results may incorrectly be regarded
+ as underflow.
+[tests/tgamma.c] Added testcase.
+(merged changeset r8159 from the trunk)
+------------------------------------------------------------------------
+r8127 | vlefevre | 2012-03-26 12:25:58 +0000 (Mon, 26 Mar 2012) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/tests.c
+
+[tests/{Makefile.am,tests.c}] Fixed src_fopen to be able to run test
+programs directly (without "make check") when objdir != srcdir.
+(merged changesets r8122,8126 from the trunk)
+------------------------------------------------------------------------
+r8084 | vlefevre | 2012-03-09 12:03:59 +0000 (Fri, 09 Mar 2012) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Improved macros from the changeset r8080, in
+particular to avoid an error with the --enable-assert configure
+option and the -ansi -pedantic-errors gcc compiler flags.
+(merged changesets r7910,8082,8083 from the trunk)
+------------------------------------------------------------------------
+r8080 | vlefevre | 2012-03-08 14:11:02 +0000 (Thu, 08 Mar 2012) | 8 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/tests/tinits.c
+
+Avoid potential integer overflows and improve consistency. This should
+fix bug #13918 "Segfault with precision = MPFR_PREC_MAX on 32-bit".
+Note: this problem appeared in MPFR 3.0.0 when the precision type (now
+mpfr_prec_t) was changed to a signed integer.
+Added a large precision test in tests/tinits.c (enabled by setting
+MPFR_CHECK_LARGEMEM=1) to trigger the bug mentioned above on 32-bit
+machines (or when MPFR is built with -m32).
+(merged changesets r8025,8026,8029,8031,8077 from the trunk)
+------------------------------------------------------------------------
+r8069 | vlefevre | 2012-03-07 15:02:17 +0000 (Wed, 07 Mar 2012) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr.h
+
+[src/mpfr.h] Simple temporary fix following GMP's internal __gmp_const
+macro removal in <http://gmplib.org:8000/gmp/rev/d287cfaf6732> (and its
+replacement by const): if __gmp_const isn't define, let's define it to
+const.
+(merged changeset r8061 from the trunk)
+------------------------------------------------------------------------
+r8059 | vlefevre | 2012-03-03 03:00:29 +0000 (Sat, 03 Mar 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/NEWS
+
+[NEWS] Mention the mpfr_exp bug fix (from r6964 in exp_2.c).
+(merged changeset r8058 from the trunk)
+------------------------------------------------------------------------
+r8049 | vlefevre | 2012-02-24 13:45:11 +0000 (Fri, 24 Feb 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Use %.*Rg instead of %.*Rf for MPFR_LOG_VAR.
+(merged changeset r8048 from the trunk)
+------------------------------------------------------------------------
+r8047 | vlefevre | 2012-02-24 12:38:46 +0000 (Fri, 24 Feb 2012) | 6 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/mul_d.c
+
+Corrected a typo in MPFR_LOG_FUNC of add_d.c, add_ui.c and mul_d.c
+(mpfr_get_prec → mpfr_log_prec), fixing bug 13933.
+The consequence was random freezes (on the same binary) with dynamic
+linking (and just more memory with static linking to the MPFR library)
+when logging was used.
+(merged changeset r8043 from the trunk)
+------------------------------------------------------------------------
+r8045 | vlefevre | 2012-02-24 12:22:24 +0000 (Fri, 24 Feb 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/NEWS
+
+[NEWS] Mention an internal change in MPFR 3.1.0.
+(merged changeset r8044 from the trunk)
+------------------------------------------------------------------------
+r8017 | vlefevre | 2012-01-27 08:36:16 +0000 (Fri, 27 Jan 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mparam_h.in
+ M /branches/3.1/src/x86_64/core2/mparam.h
+
+Use the core2 tuning parameters for nocona as timings are very similar.
+[Merged r8013 through r8016 from the trunk]
+------------------------------------------------------------------------
+r8012 | vlefevre | 2012-01-23 01:28:48 +0000 (Mon, 23 Jan 2012) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mparam_h.in
+
+[mparam_h.in] swap tests for 32-bit and 64-bit powerpc, since on powerpc64
+ the parameters for 32-bit are used!
+(merged changeset r8010 from the trunk)
+------------------------------------------------------------------------
+r7999 | vlefevre | 2012-01-10 12:51:46 +0000 (Tue, 10 Jan 2012) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7997 | vlefevre | 2012-01-10 12:49:58 +0000 (Tue, 10 Jan 2012) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Mention the AriC project-team.
+------------------------------------------------------------------------
+r7995 | vlefevre | 2012-01-10 12:47:05 +0000 (Tue, 10 Jan 2012) | 3 lines
+Changed paths:
+ M /branches/3.1/BUGS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/NEWS
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/abort_prec_max.c
+ M /branches/3.1/src/acos.c
+ M /branches/3.1/src/acosh.c
+ M /branches/3.1/src/add.c
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/ai.c
+ M /branches/3.1/src/asin.c
+ M /branches/3.1/src/asinh.c
+ M /branches/3.1/src/atan.c
+ M /branches/3.1/src/atan2.c
+ M /branches/3.1/src/atanh.c
+ M /branches/3.1/src/bernoulli.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/cache.c
+ M /branches/3.1/src/cbrt.c
+ M /branches/3.1/src/check.c
+ M /branches/3.1/src/clear.c
+ M /branches/3.1/src/clears.c
+ M /branches/3.1/src/cmp.c
+ M /branches/3.1/src/cmp2.c
+ M /branches/3.1/src/cmp_abs.c
+ M /branches/3.1/src/cmp_d.c
+ M /branches/3.1/src/cmp_ld.c
+ M /branches/3.1/src/cmp_si.c
+ M /branches/3.1/src/cmp_ui.c
+ M /branches/3.1/src/comparisons.c
+ M /branches/3.1/src/const_catalan.c
+ M /branches/3.1/src/const_euler.c
+ M /branches/3.1/src/const_log2.c
+ M /branches/3.1/src/const_pi.c
+ M /branches/3.1/src/constant.c
+ M /branches/3.1/src/copysign.c
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/cosh.c
+ M /branches/3.1/src/cot.c
+ M /branches/3.1/src/coth.c
+ M /branches/3.1/src/csc.c
+ M /branches/3.1/src/csch.c
+ M /branches/3.1/src/d_div.c
+ M /branches/3.1/src/d_sub.c
+ M /branches/3.1/src/digamma.c
+ M /branches/3.1/src/dim.c
+ M /branches/3.1/src/div.c
+ M /branches/3.1/src/div_2exp.c
+ M /branches/3.1/src/div_2si.c
+ M /branches/3.1/src/div_2ui.c
+ M /branches/3.1/src/div_d.c
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/dump.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/erf.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/exceptions.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/exp10.c
+ M /branches/3.1/src/exp2.c
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/src/exp_2.c
+ M /branches/3.1/src/expm1.c
+ M /branches/3.1/src/extract.c
+ M /branches/3.1/src/factorial.c
+ M /branches/3.1/src/fits_intmax.c
+ M /branches/3.1/src/fits_s.h
+ M /branches/3.1/src/fits_sint.c
+ M /branches/3.1/src/fits_slong.c
+ M /branches/3.1/src/fits_sshort.c
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uint.c
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/src/fits_ulong.c
+ M /branches/3.1/src/fits_ushort.c
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/src/fms.c
+ M /branches/3.1/src/frac.c
+ M /branches/3.1/src/free_cache.c
+ M /branches/3.1/src/frexp.c
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/gammaonethird.c
+ M /branches/3.1/src/gen_inverse.h
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/src/get_exp.c
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_ld.c
+ M /branches/3.1/src/get_si.c
+ M /branches/3.1/src/get_sj.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/get_ui.c
+ M /branches/3.1/src/get_uj.c
+ M /branches/3.1/src/get_z.c
+ M /branches/3.1/src/get_z_exp.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/grandom.c
+ M /branches/3.1/src/hypot.c
+ M /branches/3.1/src/ieee_floats.h
+ M /branches/3.1/src/init.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/inits.c
+ M /branches/3.1/src/inits2.c
+ M /branches/3.1/src/inp_str.c
+ M /branches/3.1/src/int_ceil_log2.c
+ M /branches/3.1/src/isinf.c
+ M /branches/3.1/src/isinteger.c
+ M /branches/3.1/src/isnan.c
+ M /branches/3.1/src/isnum.c
+ M /branches/3.1/src/isqrt.c
+ M /branches/3.1/src/isregular.c
+ M /branches/3.1/src/iszero.c
+ M /branches/3.1/src/jn.c
+ M /branches/3.1/src/jyn_asympt.c
+ M /branches/3.1/src/li2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/log.c
+ M /branches/3.1/src/log10.c
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/src/log2.c
+ M /branches/3.1/src/logging.c
+ M /branches/3.1/src/min_prec.c
+ M /branches/3.1/src/minmax.c
+ M /branches/3.1/src/modf.c
+ M /branches/3.1/src/mpf2mpfr.h
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr-intmax.h
+ M /branches/3.1/src/mpfr-thread.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/mpn_exp.c
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/mul_2exp.c
+ M /branches/3.1/src/mul_2si.c
+ M /branches/3.1/src/mul_2ui.c
+ M /branches/3.1/src/mul_d.c
+ M /branches/3.1/src/mul_ui.c
+ M /branches/3.1/src/mulders.c
+ M /branches/3.1/src/neg.c
+ M /branches/3.1/src/next.c
+ M /branches/3.1/src/out_raw.c
+ M /branches/3.1/src/out_str.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/pow_si.c
+ M /branches/3.1/src/pow_ui.c
+ M /branches/3.1/src/pow_z.c
+ M /branches/3.1/src/powerof2.c
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/print_rnd_mode.c
+ M /branches/3.1/src/printf.c
+ M /branches/3.1/src/rec_sqrt.c
+ M /branches/3.1/src/reldiff.c
+ M /branches/3.1/src/rem1.c
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/src/root.c
+ M /branches/3.1/src/round_near_x.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/scale2.c
+ M /branches/3.1/src/sec.c
+ M /branches/3.1/src/sech.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/set_d64.c
+ M /branches/3.1/src/set_dfl_prec.c
+ M /branches/3.1/src/set_exp.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_flt.c
+ M /branches/3.1/src/set_inf.c
+ M /branches/3.1/src/set_ld.c
+ M /branches/3.1/src/set_nan.c
+ M /branches/3.1/src/set_prc_raw.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/set_rnd.c
+ M /branches/3.1/src/set_si.c
+ M /branches/3.1/src/set_si_2exp.c
+ M /branches/3.1/src/set_sj.c
+ M /branches/3.1/src/set_str.c
+ M /branches/3.1/src/set_str_raw.c
+ M /branches/3.1/src/set_ui.c
+ M /branches/3.1/src/set_ui_2exp.c
+ M /branches/3.1/src/set_uj.c
+ M /branches/3.1/src/set_z.c
+ M /branches/3.1/src/set_z_exp.c
+ M /branches/3.1/src/set_zero.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/setmin.c
+ M /branches/3.1/src/setsign.c
+ M /branches/3.1/src/sgn.c
+ M /branches/3.1/src/si_op.c
+ M /branches/3.1/src/signbit.c
+ M /branches/3.1/src/sin.c
+ M /branches/3.1/src/sin_cos.c
+ M /branches/3.1/src/sinh.c
+ M /branches/3.1/src/sinh_cosh.c
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/sqrt.c
+ M /branches/3.1/src/sqrt_ui.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub.c
+ M /branches/3.1/src/sub1.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/sub_d.c
+ M /branches/3.1/src/sub_ui.c
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/src/sum.c
+ M /branches/3.1/src/swap.c
+ M /branches/3.1/src/tan.c
+ M /branches/3.1/src/tanh.c
+ M /branches/3.1/src/uceil_exp2.c
+ M /branches/3.1/src/uceil_log2.c
+ M /branches/3.1/src/ufloor_log2.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_pow.c
+ M /branches/3.1/src/ui_pow_ui.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/src/urandom.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/src/version.c
+ M /branches/3.1/src/volatile.c
+ M /branches/3.1/src/yn.c
+ M /branches/3.1/src/zeta.c
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/cmp_str.c
+ M /branches/3.1/tests/data/digamma
+ M /branches/3.1/tests/data/li2
+ M /branches/3.1/tests/memory.c
+ M /branches/3.1/tests/mpf_compat.c
+ M /branches/3.1/tests/mpf_compat.h
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/mpfr_compat.c
+ M /branches/3.1/tests/random2.c
+ M /branches/3.1/tests/reuse.c
+ M /branches/3.1/tests/rnd_mode.c
+ M /branches/3.1/tests/tabs.c
+ M /branches/3.1/tests/tacos.c
+ M /branches/3.1/tests/tacosh.c
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tadd1sp.c
+ M /branches/3.1/tests/tadd_d.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tai.c
+ M /branches/3.1/tests/tasin.c
+ M /branches/3.1/tests/tasinh.c
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tatanh.c
+ M /branches/3.1/tests/taway.c
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tcan_round.c
+ M /branches/3.1/tests/tcbrt.c
+ M /branches/3.1/tests/tcheck.c
+ M /branches/3.1/tests/tcmp.c
+ M /branches/3.1/tests/tcmp2.c
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tcmp_ui.c
+ M /branches/3.1/tests/tcmpabs.c
+ M /branches/3.1/tests/tcomparisons.c
+ M /branches/3.1/tests/tconst_catalan.c
+ M /branches/3.1/tests/tconst_euler.c
+ M /branches/3.1/tests/tconst_log2.c
+ M /branches/3.1/tests/tconst_pi.c
+ M /branches/3.1/tests/tcopysign.c
+ M /branches/3.1/tests/tcos.c
+ M /branches/3.1/tests/tcosh.c
+ M /branches/3.1/tests/tcot.c
+ M /branches/3.1/tests/tcoth.c
+ M /branches/3.1/tests/tcsc.c
+ M /branches/3.1/tests/tcsch.c
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/td_sub.c
+ M /branches/3.1/tests/tdigamma.c
+ M /branches/3.1/tests/tdim.c
+ M /branches/3.1/tests/tdiv.c
+ M /branches/3.1/tests/tdiv_d.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/teint.c
+ M /branches/3.1/tests/teq.c
+ M /branches/3.1/tests/terf.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/texceptions.c
+ M /branches/3.1/tests/texp.c
+ M /branches/3.1/tests/texp10.c
+ M /branches/3.1/tests/texp2.c
+ M /branches/3.1/tests/texpm1.c
+ M /branches/3.1/tests/tfactorial.c
+ M /branches/3.1/tests/tfits.c
+ M /branches/3.1/tests/tfma.c
+ M /branches/3.1/tests/tfmod.c
+ M /branches/3.1/tests/tfms.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tfrac.c
+ M /branches/3.1/tests/tfrexp.c
+ M /branches/3.1/tests/tgamma.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tgeneric_ui.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/tget_d_2exp.c
+ M /branches/3.1/tests/tget_f.c
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tget_ld_2exp.c
+ M /branches/3.1/tests/tget_set_d64.c
+ M /branches/3.1/tests/tget_sj.c
+ M /branches/3.1/tests/tget_str.c
+ M /branches/3.1/tests/tget_z.c
+ M /branches/3.1/tests/tgmpop.c
+ M /branches/3.1/tests/tgrandom.c
+ M /branches/3.1/tests/thyperbolic.c
+ M /branches/3.1/tests/thypot.c
+ M /branches/3.1/tests/tinits.c
+ M /branches/3.1/tests/tinp_str.c
+ M /branches/3.1/tests/tinternals.c
+ M /branches/3.1/tests/tisnan.c
+ M /branches/3.1/tests/tisqrt.c
+ M /branches/3.1/tests/tj0.c
+ M /branches/3.1/tests/tj1.c
+ M /branches/3.1/tests/tjn.c
+ M /branches/3.1/tests/tl2b.c
+ M /branches/3.1/tests/tlgamma.c
+ M /branches/3.1/tests/tli2.c
+ M /branches/3.1/tests/tlngamma.c
+ M /branches/3.1/tests/tlog.c
+ M /branches/3.1/tests/tlog10.c
+ M /branches/3.1/tests/tlog1p.c
+ M /branches/3.1/tests/tlog2.c
+ M /branches/3.1/tests/tmin_prec.c
+ M /branches/3.1/tests/tminmax.c
+ M /branches/3.1/tests/tmodf.c
+ M /branches/3.1/tests/tmul.c
+ M /branches/3.1/tests/tmul_2exp.c
+ M /branches/3.1/tests/tmul_d.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tnext.c
+ M /branches/3.1/tests/tout_str.c
+ M /branches/3.1/tests/toutimpl.c
+ M /branches/3.1/tests/tpow.c
+ M /branches/3.1/tests/tpow3.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tpow_z.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/trec_sqrt.c
+ M /branches/3.1/tests/tremquo.c
+ M /branches/3.1/tests/trint.c
+ M /branches/3.1/tests/troot.c
+ M /branches/3.1/tests/tround_prec.c
+ M /branches/3.1/tests/tsec.c
+ M /branches/3.1/tests/tsech.c
+ M /branches/3.1/tests/tset.c
+ M /branches/3.1/tests/tset_d.c
+ M /branches/3.1/tests/tset_exp.c
+ M /branches/3.1/tests/tset_f.c
+ M /branches/3.1/tests/tset_ld.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tset_si.c
+ M /branches/3.1/tests/tset_sj.c
+ M /branches/3.1/tests/tset_str.c
+ M /branches/3.1/tests/tset_z.c
+ M /branches/3.1/tests/tset_z_exp.c
+ M /branches/3.1/tests/tsgn.c
+ M /branches/3.1/tests/tsi_op.c
+ M /branches/3.1/tests/tsin.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsinh.c
+ M /branches/3.1/tests/tsinh_cosh.c
+ M /branches/3.1/tests/tsprintf.c
+ M /branches/3.1/tests/tsqr.c
+ M /branches/3.1/tests/tsqrt.c
+ M /branches/3.1/tests/tsqrt_ui.c
+ M /branches/3.1/tests/tstckintc.c
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tstrtofr.c
+ M /branches/3.1/tests/tsub.c
+ M /branches/3.1/tests/tsub1sp.c
+ M /branches/3.1/tests/tsub_d.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tsubnormal.c
+ M /branches/3.1/tests/tsum.c
+ M /branches/3.1/tests/tswap.c
+ M /branches/3.1/tests/ttan.c
+ M /branches/3.1/tests/ttanh.c
+ M /branches/3.1/tests/ttrunc.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_pow.c
+ M /branches/3.1/tests/tui_sub.c
+ M /branches/3.1/tests/turandom.c
+ M /branches/3.1/tests/tvalist.c
+ M /branches/3.1/tests/tversion.c
+ M /branches/3.1/tests/ty0.c
+ M /branches/3.1/tests/ty1.c
+ M /branches/3.1/tests/tyn.c
+ M /branches/3.1/tests/tzeta.c
+ M /branches/3.1/tests/tzeta_ui.c
+ M /branches/3.1/tools/get_patches.sh
+ M /branches/3.1/tune/bidimensional_sample.c
+ M /branches/3.1/tune/speed.c
+ M /branches/3.1/tune/tuneup.c
+
+Changed Arenaire to AriC with:
+ perl -pi -e 's/Contributed by the Arenaire/Contributed by the AriC/' **/*(^/)
+under zsh, reverting the ChangeLog file.
+------------------------------------------------------------------------
+r7992 | vlefevre | 2012-01-10 12:30:53 +0000 (Tue, 10 Jan 2012) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/faq.xsl
+
+[doc] In faq.xsl, remove only the top-level comments from the HTML file.
+Updated FAQ.html with update-faq.
+------------------------------------------------------------------------
+r7987 | vlefevre | 2012-01-10 11:54:24 +0000 (Tue, 10 Jan 2012) | 5 lines
+Changed paths:
+ M /branches/3.1/BUGS
+ M /branches/3.1/INSTALL
+ M /branches/3.1/Makefile.am
+ M /branches/3.1/NEWS
+ M /branches/3.1/README
+ M /branches/3.1/TODO
+ M /branches/3.1/acinclude.m4
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/FAQ.html
+ M /branches/3.1/doc/Makefile.am
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/faq.xsl
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/examples/divworst.c
+ M /branches/3.1/examples/rndo-add.c
+ M /branches/3.1/examples/sample.c
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/Makefile.am
+ M /branches/3.1/src/abort_prec_max.c
+ M /branches/3.1/src/acos.c
+ M /branches/3.1/src/acosh.c
+ M /branches/3.1/src/add.c
+ M /branches/3.1/src/add1.c
+ M /branches/3.1/src/add1sp.c
+ M /branches/3.1/src/add_d.c
+ M /branches/3.1/src/add_ui.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/ai.c
+ M /branches/3.1/src/amd/amdfam10/mparam.h
+ M /branches/3.1/src/amd/athlon/mparam.h
+ M /branches/3.1/src/amd/k8/mparam.h
+ M /branches/3.1/src/arm/mparam.h
+ M /branches/3.1/src/asin.c
+ M /branches/3.1/src/asinh.c
+ M /branches/3.1/src/atan.c
+ M /branches/3.1/src/atan2.c
+ M /branches/3.1/src/atanh.c
+ M /branches/3.1/src/bernoulli.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/cache.c
+ M /branches/3.1/src/cbrt.c
+ M /branches/3.1/src/check.c
+ M /branches/3.1/src/clear.c
+ M /branches/3.1/src/clears.c
+ M /branches/3.1/src/cmp.c
+ M /branches/3.1/src/cmp2.c
+ M /branches/3.1/src/cmp_abs.c
+ M /branches/3.1/src/cmp_d.c
+ M /branches/3.1/src/cmp_ld.c
+ M /branches/3.1/src/cmp_si.c
+ M /branches/3.1/src/cmp_ui.c
+ M /branches/3.1/src/comparisons.c
+ M /branches/3.1/src/const_catalan.c
+ M /branches/3.1/src/const_euler.c
+ M /branches/3.1/src/const_log2.c
+ M /branches/3.1/src/const_pi.c
+ M /branches/3.1/src/constant.c
+ M /branches/3.1/src/copysign.c
+ M /branches/3.1/src/cos.c
+ M /branches/3.1/src/cosh.c
+ M /branches/3.1/src/cot.c
+ M /branches/3.1/src/coth.c
+ M /branches/3.1/src/csc.c
+ M /branches/3.1/src/csch.c
+ M /branches/3.1/src/d_div.c
+ M /branches/3.1/src/d_sub.c
+ M /branches/3.1/src/digamma.c
+ M /branches/3.1/src/dim.c
+ M /branches/3.1/src/div.c
+ M /branches/3.1/src/div_2exp.c
+ M /branches/3.1/src/div_2si.c
+ M /branches/3.1/src/div_2ui.c
+ M /branches/3.1/src/div_d.c
+ M /branches/3.1/src/div_ui.c
+ M /branches/3.1/src/dump.c
+ M /branches/3.1/src/eint.c
+ M /branches/3.1/src/eq.c
+ M /branches/3.1/src/erf.c
+ M /branches/3.1/src/erfc.c
+ M /branches/3.1/src/exceptions.c
+ M /branches/3.1/src/exp.c
+ M /branches/3.1/src/exp10.c
+ M /branches/3.1/src/exp2.c
+ M /branches/3.1/src/exp3.c
+ M /branches/3.1/src/exp_2.c
+ M /branches/3.1/src/expm1.c
+ M /branches/3.1/src/extract.c
+ M /branches/3.1/src/factorial.c
+ M /branches/3.1/src/fits_intmax.c
+ M /branches/3.1/src/fits_s.h
+ M /branches/3.1/src/fits_sint.c
+ M /branches/3.1/src/fits_slong.c
+ M /branches/3.1/src/fits_sshort.c
+ M /branches/3.1/src/fits_u.h
+ M /branches/3.1/src/fits_uint.c
+ M /branches/3.1/src/fits_uintmax.c
+ M /branches/3.1/src/fits_ulong.c
+ M /branches/3.1/src/fits_ushort.c
+ M /branches/3.1/src/fma.c
+ M /branches/3.1/src/fms.c
+ M /branches/3.1/src/frac.c
+ M /branches/3.1/src/free_cache.c
+ M /branches/3.1/src/frexp.c
+ M /branches/3.1/src/gamma.c
+ M /branches/3.1/src/gammaonethird.c
+ M /branches/3.1/src/gen_inverse.h
+ M /branches/3.1/src/generic/mparam.h
+ M /branches/3.1/src/get_d.c
+ M /branches/3.1/src/get_d64.c
+ M /branches/3.1/src/get_exp.c
+ M /branches/3.1/src/get_f.c
+ M /branches/3.1/src/get_flt.c
+ M /branches/3.1/src/get_ld.c
+ M /branches/3.1/src/get_si.c
+ M /branches/3.1/src/get_sj.c
+ M /branches/3.1/src/get_str.c
+ M /branches/3.1/src/get_ui.c
+ M /branches/3.1/src/get_uj.c
+ M /branches/3.1/src/get_z.c
+ M /branches/3.1/src/get_z_exp.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/grandom.c
+ M /branches/3.1/src/hppa/mparam.h
+ M /branches/3.1/src/hypot.c
+ M /branches/3.1/src/ia64/mparam.h
+ M /branches/3.1/src/ieee_floats.h
+ M /branches/3.1/src/init.c
+ M /branches/3.1/src/init2.c
+ M /branches/3.1/src/inits.c
+ M /branches/3.1/src/inits2.c
+ M /branches/3.1/src/inp_str.c
+ M /branches/3.1/src/int_ceil_log2.c
+ M /branches/3.1/src/isinf.c
+ M /branches/3.1/src/isinteger.c
+ M /branches/3.1/src/isnan.c
+ M /branches/3.1/src/isnum.c
+ M /branches/3.1/src/isqrt.c
+ M /branches/3.1/src/isregular.c
+ M /branches/3.1/src/iszero.c
+ M /branches/3.1/src/jn.c
+ M /branches/3.1/src/jyn_asympt.c
+ M /branches/3.1/src/li2.c
+ M /branches/3.1/src/lngamma.c
+ M /branches/3.1/src/log.c
+ M /branches/3.1/src/log10.c
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/src/log2.c
+ M /branches/3.1/src/logging.c
+ M /branches/3.1/src/min_prec.c
+ M /branches/3.1/src/minmax.c
+ M /branches/3.1/src/modf.c
+ M /branches/3.1/src/mp_clz_tab.c
+ M /branches/3.1/src/mparam_h.in
+ M /branches/3.1/src/mpf2mpfr.h
+ M /branches/3.1/src/mpfr-gmp.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr-intmax.h
+ M /branches/3.1/src/mpfr-longlong.h
+ M /branches/3.1/src/mpfr-thread.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/mpn_exp.c
+ M /branches/3.1/src/mul.c
+ M /branches/3.1/src/mul_2exp.c
+ M /branches/3.1/src/mul_2si.c
+ M /branches/3.1/src/mul_2ui.c
+ M /branches/3.1/src/mul_d.c
+ M /branches/3.1/src/mul_ui.c
+ M /branches/3.1/src/mulders.c
+ M /branches/3.1/src/neg.c
+ M /branches/3.1/src/next.c
+ M /branches/3.1/src/out_raw.c
+ M /branches/3.1/src/out_str.c
+ M /branches/3.1/src/pow.c
+ M /branches/3.1/src/pow_si.c
+ M /branches/3.1/src/pow_ui.c
+ M /branches/3.1/src/pow_z.c
+ M /branches/3.1/src/powerof2.c
+ M /branches/3.1/src/powerpc32/mparam.h
+ M /branches/3.1/src/powerpc64/mparam.h
+ M /branches/3.1/src/print_raw.c
+ M /branches/3.1/src/print_rnd_mode.c
+ M /branches/3.1/src/printf.c
+ M /branches/3.1/src/rec_sqrt.c
+ M /branches/3.1/src/reldiff.c
+ M /branches/3.1/src/rem1.c
+ M /branches/3.1/src/rint.c
+ M /branches/3.1/src/root.c
+ M /branches/3.1/src/round_near_x.c
+ M /branches/3.1/src/round_p.c
+ M /branches/3.1/src/round_prec.c
+ M /branches/3.1/src/round_raw_generic.c
+ M /branches/3.1/src/scale2.c
+ M /branches/3.1/src/sec.c
+ M /branches/3.1/src/sech.c
+ M /branches/3.1/src/set.c
+ M /branches/3.1/src/set_d.c
+ M /branches/3.1/src/set_d64.c
+ M /branches/3.1/src/set_dfl_prec.c
+ M /branches/3.1/src/set_exp.c
+ M /branches/3.1/src/set_f.c
+ M /branches/3.1/src/set_flt.c
+ M /branches/3.1/src/set_inf.c
+ M /branches/3.1/src/set_ld.c
+ M /branches/3.1/src/set_nan.c
+ M /branches/3.1/src/set_prc_raw.c
+ M /branches/3.1/src/set_prec.c
+ M /branches/3.1/src/set_q.c
+ M /branches/3.1/src/set_rnd.c
+ M /branches/3.1/src/set_si.c
+ M /branches/3.1/src/set_si_2exp.c
+ M /branches/3.1/src/set_sj.c
+ M /branches/3.1/src/set_str.c
+ M /branches/3.1/src/set_str_raw.c
+ M /branches/3.1/src/set_ui.c
+ M /branches/3.1/src/set_ui_2exp.c
+ M /branches/3.1/src/set_uj.c
+ M /branches/3.1/src/set_z.c
+ M /branches/3.1/src/set_z_exp.c
+ M /branches/3.1/src/set_zero.c
+ M /branches/3.1/src/setmax.c
+ M /branches/3.1/src/setmin.c
+ M /branches/3.1/src/setsign.c
+ M /branches/3.1/src/sgn.c
+ M /branches/3.1/src/si_op.c
+ M /branches/3.1/src/signbit.c
+ M /branches/3.1/src/sin.c
+ M /branches/3.1/src/sin_cos.c
+ M /branches/3.1/src/sinh.c
+ M /branches/3.1/src/sinh_cosh.c
+ M /branches/3.1/src/sparc64/mparam.h
+ M /branches/3.1/src/sqr.c
+ M /branches/3.1/src/sqrt.c
+ M /branches/3.1/src/sqrt_ui.c
+ M /branches/3.1/src/stack_interface.c
+ M /branches/3.1/src/strtofr.c
+ M /branches/3.1/src/sub.c
+ M /branches/3.1/src/sub1.c
+ M /branches/3.1/src/sub1sp.c
+ M /branches/3.1/src/sub_d.c
+ M /branches/3.1/src/sub_ui.c
+ M /branches/3.1/src/subnormal.c
+ M /branches/3.1/src/sum.c
+ M /branches/3.1/src/swap.c
+ M /branches/3.1/src/tan.c
+ M /branches/3.1/src/tanh.c
+ M /branches/3.1/src/uceil_exp2.c
+ M /branches/3.1/src/uceil_log2.c
+ M /branches/3.1/src/ufloor_log2.c
+ M /branches/3.1/src/ui_div.c
+ M /branches/3.1/src/ui_pow.c
+ M /branches/3.1/src/ui_pow_ui.c
+ M /branches/3.1/src/ui_sub.c
+ M /branches/3.1/src/urandom.c
+ M /branches/3.1/src/urandomb.c
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/src/version.c
+ M /branches/3.1/src/volatile.c
+ M /branches/3.1/src/x86/core2/mparam.h
+ M /branches/3.1/src/x86/mparam.h
+ M /branches/3.1/src/x86_64/core2/mparam.h
+ M /branches/3.1/src/x86_64/pentium4/mparam.h
+ M /branches/3.1/src/yn.c
+ M /branches/3.1/src/zeta.c
+ M /branches/3.1/src/zeta_ui.c
+ M /branches/3.1/tests/Makefile.am
+ M /branches/3.1/tests/cmp_str.c
+ M /branches/3.1/tests/data/digamma
+ M /branches/3.1/tests/data/li2
+ M /branches/3.1/tests/memory.c
+ M /branches/3.1/tests/mpf_compat.c
+ M /branches/3.1/tests/mpf_compat.h
+ M /branches/3.1/tests/mpfr-test.h
+ M /branches/3.1/tests/mpfr_compat.c
+ M /branches/3.1/tests/random2.c
+ M /branches/3.1/tests/reuse.c
+ M /branches/3.1/tests/rnd_mode.c
+ M /branches/3.1/tests/tabs.c
+ M /branches/3.1/tests/tacos.c
+ M /branches/3.1/tests/tacosh.c
+ M /branches/3.1/tests/tadd.c
+ M /branches/3.1/tests/tadd1sp.c
+ M /branches/3.1/tests/tadd_d.c
+ M /branches/3.1/tests/tadd_ui.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tai.c
+ M /branches/3.1/tests/tasin.c
+ M /branches/3.1/tests/tasinh.c
+ M /branches/3.1/tests/tatan.c
+ M /branches/3.1/tests/tatanh.c
+ M /branches/3.1/tests/taway.c
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tcan_round.c
+ M /branches/3.1/tests/tcbrt.c
+ M /branches/3.1/tests/tcheck.c
+ M /branches/3.1/tests/tcmp.c
+ M /branches/3.1/tests/tcmp2.c
+ M /branches/3.1/tests/tcmp_d.c
+ M /branches/3.1/tests/tcmp_ld.c
+ M /branches/3.1/tests/tcmp_ui.c
+ M /branches/3.1/tests/tcmpabs.c
+ M /branches/3.1/tests/tcomparisons.c
+ M /branches/3.1/tests/tconst_catalan.c
+ M /branches/3.1/tests/tconst_euler.c
+ M /branches/3.1/tests/tconst_log2.c
+ M /branches/3.1/tests/tconst_pi.c
+ M /branches/3.1/tests/tcopysign.c
+ M /branches/3.1/tests/tcos.c
+ M /branches/3.1/tests/tcosh.c
+ M /branches/3.1/tests/tcot.c
+ M /branches/3.1/tests/tcoth.c
+ M /branches/3.1/tests/tcsc.c
+ M /branches/3.1/tests/tcsch.c
+ M /branches/3.1/tests/td_div.c
+ M /branches/3.1/tests/td_sub.c
+ M /branches/3.1/tests/tdigamma.c
+ M /branches/3.1/tests/tdim.c
+ M /branches/3.1/tests/tdiv.c
+ M /branches/3.1/tests/tdiv_d.c
+ M /branches/3.1/tests/tdiv_ui.c
+ M /branches/3.1/tests/teint.c
+ M /branches/3.1/tests/teq.c
+ M /branches/3.1/tests/terf.c
+ M /branches/3.1/tests/tests.c
+ M /branches/3.1/tests/texceptions.c
+ M /branches/3.1/tests/texp.c
+ M /branches/3.1/tests/texp10.c
+ M /branches/3.1/tests/texp2.c
+ M /branches/3.1/tests/texpm1.c
+ M /branches/3.1/tests/tfactorial.c
+ M /branches/3.1/tests/tfits.c
+ M /branches/3.1/tests/tfma.c
+ M /branches/3.1/tests/tfmod.c
+ M /branches/3.1/tests/tfms.c
+ M /branches/3.1/tests/tfprintf.c
+ M /branches/3.1/tests/tfrac.c
+ M /branches/3.1/tests/tfrexp.c
+ M /branches/3.1/tests/tgamma.c
+ M /branches/3.1/tests/tgeneric.c
+ M /branches/3.1/tests/tgeneric_ui.c
+ M /branches/3.1/tests/tget_d.c
+ M /branches/3.1/tests/tget_d_2exp.c
+ M /branches/3.1/tests/tget_f.c
+ M /branches/3.1/tests/tget_flt.c
+ M /branches/3.1/tests/tget_ld_2exp.c
+ M /branches/3.1/tests/tget_set_d64.c
+ M /branches/3.1/tests/tget_sj.c
+ M /branches/3.1/tests/tget_str.c
+ M /branches/3.1/tests/tget_z.c
+ M /branches/3.1/tests/tgmpop.c
+ M /branches/3.1/tests/tgrandom.c
+ M /branches/3.1/tests/thyperbolic.c
+ M /branches/3.1/tests/thypot.c
+ M /branches/3.1/tests/tinits.c
+ M /branches/3.1/tests/tinp_str.c
+ M /branches/3.1/tests/tinternals.c
+ M /branches/3.1/tests/tisnan.c
+ M /branches/3.1/tests/tisqrt.c
+ M /branches/3.1/tests/tj0.c
+ M /branches/3.1/tests/tj1.c
+ M /branches/3.1/tests/tjn.c
+ M /branches/3.1/tests/tl2b.c
+ M /branches/3.1/tests/tlgamma.c
+ M /branches/3.1/tests/tli2.c
+ M /branches/3.1/tests/tlngamma.c
+ M /branches/3.1/tests/tlog.c
+ M /branches/3.1/tests/tlog10.c
+ M /branches/3.1/tests/tlog1p.c
+ M /branches/3.1/tests/tlog2.c
+ M /branches/3.1/tests/tmin_prec.c
+ M /branches/3.1/tests/tminmax.c
+ M /branches/3.1/tests/tmodf.c
+ M /branches/3.1/tests/tmul.c
+ M /branches/3.1/tests/tmul_2exp.c
+ M /branches/3.1/tests/tmul_d.c
+ M /branches/3.1/tests/tmul_ui.c
+ M /branches/3.1/tests/tnext.c
+ M /branches/3.1/tests/tout_str.c
+ M /branches/3.1/tests/toutimpl.c
+ M /branches/3.1/tests/tpow.c
+ M /branches/3.1/tests/tpow3.c
+ M /branches/3.1/tests/tpow_all.c
+ M /branches/3.1/tests/tpow_z.c
+ M /branches/3.1/tests/tprintf.c
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/trec_sqrt.c
+ M /branches/3.1/tests/tremquo.c
+ M /branches/3.1/tests/trint.c
+ M /branches/3.1/tests/troot.c
+ M /branches/3.1/tests/tround_prec.c
+ M /branches/3.1/tests/tsec.c
+ M /branches/3.1/tests/tsech.c
+ M /branches/3.1/tests/tset.c
+ M /branches/3.1/tests/tset_d.c
+ M /branches/3.1/tests/tset_exp.c
+ M /branches/3.1/tests/tset_f.c
+ M /branches/3.1/tests/tset_ld.c
+ M /branches/3.1/tests/tset_q.c
+ M /branches/3.1/tests/tset_si.c
+ M /branches/3.1/tests/tset_sj.c
+ M /branches/3.1/tests/tset_str.c
+ M /branches/3.1/tests/tset_z.c
+ M /branches/3.1/tests/tset_z_exp.c
+ M /branches/3.1/tests/tsgn.c
+ M /branches/3.1/tests/tsi_op.c
+ M /branches/3.1/tests/tsin.c
+ M /branches/3.1/tests/tsin_cos.c
+ M /branches/3.1/tests/tsinh.c
+ M /branches/3.1/tests/tsinh_cosh.c
+ M /branches/3.1/tests/tsprintf.c
+ M /branches/3.1/tests/tsqr.c
+ M /branches/3.1/tests/tsqrt.c
+ M /branches/3.1/tests/tsqrt_ui.c
+ M /branches/3.1/tests/tstckintc.c
+ M /branches/3.1/tests/tstdint.c
+ M /branches/3.1/tests/tstrtofr.c
+ M /branches/3.1/tests/tsub.c
+ M /branches/3.1/tests/tsub1sp.c
+ M /branches/3.1/tests/tsub_d.c
+ M /branches/3.1/tests/tsub_ui.c
+ M /branches/3.1/tests/tsubnormal.c
+ M /branches/3.1/tests/tsum.c
+ M /branches/3.1/tests/tswap.c
+ M /branches/3.1/tests/ttan.c
+ M /branches/3.1/tests/ttanh.c
+ M /branches/3.1/tests/ttrunc.c
+ M /branches/3.1/tests/tui_div.c
+ M /branches/3.1/tests/tui_pow.c
+ M /branches/3.1/tests/tui_sub.c
+ M /branches/3.1/tests/turandom.c
+ M /branches/3.1/tests/tvalist.c
+ M /branches/3.1/tests/tversion.c
+ M /branches/3.1/tests/ty0.c
+ M /branches/3.1/tests/ty1.c
+ M /branches/3.1/tests/tyn.c
+ M /branches/3.1/tests/tzeta.c
+ M /branches/3.1/tests/tzeta_ui.c
+ M /branches/3.1/tools/ck-copyright-notice
+ M /branches/3.1/tools/ck-mparam
+ M /branches/3.1/tools/ck-version-info
+ M /branches/3.1/tools/get_patches.sh
+ M /branches/3.1/tune/Makefile.am
+ M /branches/3.1/tune/bidimensional_sample.c
+ M /branches/3.1/tune/speed.c
+ M /branches/3.1/tune/tuneup.c
+
+Copyright notice update: added 2012 with
+ perl -pi -e 's/2011 Free Software/2011, 2012 Free Software/' **/*(^/)
+under zsh, reverting the ChangeLog file (the m4 and tools/mbench
+directories were not modified).
+Removed 2011 from the example in the doc/README.dev file.
+------------------------------------------------------------------------
+r7980 | vlefevre | 2011-12-09 13:43:03 +0000 (Fri, 09 Dec 2011) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/INSTALL
+ M /branches/3.1/configure.ac
+
+Merged changesets r7976-7978 from the trunk:
+[INSTALL] Added information about system/compiler bugs related to TLS
+ or optimizations.
+[configure.ac] Mention --disable-thread-safe.
+------------------------------------------------------------------------
+r7972 | vlefevre | 2011-11-28 12:20:46 +0000 (Mon, 28 Nov 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/turandom.c
+
+[tests/turandom.c] Removed an obsolete comment.
+------------------------------------------------------------------------
+r7969 | vlefevre | 2011-11-28 11:36:10 +0000 (Mon, 28 Nov 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7968 | vlefevre | 2011-11-28 11:34:34 +0000 (Mon, 28 Nov 2011) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/tests/trandom.c
+ M /branches/3.1/tests/turandom.c
+
+Merged changesets r7965-7966 from the trunk:
+[doc/mpfr.texi] Mentioned the difference between GMP 4.1 and 4.2 about
+the changes of mpfr_urandom and mpfr_urandomb in MPFR 3.1.
+[tests/trandom.c,tests/turandom.c] Fixed compatibility with GMP 4.1.x
+(since the default PRNG has changed between GMP 4.1 and 4.2).
+------------------------------------------------------------------------
+r7945 | vlefevre | 2011-11-03 16:11:08 +0000 (Thu, 03 Nov 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/vasprintf.c
+
+[src/vasprintf.c] Corrected a comment.
+------------------------------------------------------------------------
+r7942 | vlefevre | 2011-11-03 14:49:58 +0000 (Thu, 03 Nov 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/tests/tsprintf.c
+
+[tests/tsprintf.c] Coding style.
+------------------------------------------------------------------------
+r7940 | vlefevre | 2011-11-03 14:10:49 +0000 (Thu, 03 Nov 2011) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/vasprintf.c
+ M /branches/3.1/tests/tsprintf.c
+
+[src/vasprintf.c] Fixed bug reported by Pavel Holoborodko.
+[tests/tsprintf.c] Added testcases.
+(Merged changesets r7931 (except src/mpn_exp.c) and r7933-7936.)
+------------------------------------------------------------------------
+r7921 | vlefevre | 2011-10-14 10:18:30 +0000 (Fri, 14 Oct 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/INSTALL
+ M /branches/3.1/tests/Makefile.am
+
+[tests/Makefile.am] Added -L$(top_builddir)/src/.libs to AM_LDFLAGS.
+[INSTALL] Removed the notes on HP-UX (obsolete after the above change).
+------------------------------------------------------------------------
+r7919 | vlefevre | 2011-10-13 11:30:54 +0000 (Thu, 13 Oct 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/INSTALL
+
+[INSTALL] Corrected notes for HP-UX.
+------------------------------------------------------------------------
+r7917 | vlefevre | 2011-10-13 11:20:23 +0000 (Thu, 13 Oct 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/INSTALL
+
+[INSTALL] Added notes for HP-UX after a bug report. See discussion:
+https://sympa.inria.fr/sympa/arc/mpfr/2011-10/msg00042.html
+------------------------------------------------------------------------
+r7908 | vlefevre | 2011-10-04 11:14:48 +0000 (Tue, 04 Oct 2011) | 3 lines
+Changed paths:
+ M /branches/3.1/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Fixed a bug in the MPFR_UNLIKELY macro for GCC
+(found under Mac OS X / PowerPC with the mode32 GMP ABI, and MPFR
+built with --enable-assert=full).
+------------------------------------------------------------------------
+r7907 | vlefevre | 2011-10-04 10:04:11 +0000 (Tue, 04 Oct 2011) | 1 line
+Changed paths:
+ M /branches/3.1/INSTALL
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.1-dev.
+------------------------------------------------------------------------
+r7897 | vlefevre | 2011-10-03 08:16:03 +0000 (Mon, 03 Oct 2011) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r7896 | vlefevre | 2011-10-03 08:10:45 +0000 (Mon, 03 Oct 2011) | 1 line
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.0.
+------------------------------------------------------------------------
+r7895 | vlefevre | 2011-10-03 08:09:19 +0000 (Mon, 03 Oct 2011) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7893 | vlefevre | 2011-09-29 22:25:41 +0000 (Thu, 29 Sep 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] added reference and comment for eint
+(Merged changeset r7892 from the trunk.)
+------------------------------------------------------------------------
+r7890 | vlefevre | 2011-09-25 00:17:05 +0000 (Sun, 25 Sep 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Rephrased mpfr_frexp description.
+(Merged changeset r7889 from the trunk.)
+------------------------------------------------------------------------
+r7887 | vlefevre | 2011-09-24 10:01:07 +0000 (Sat, 24 Sep 2011) | 5 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/NEWS
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/log1p.c
+ M /branches/3.1/tests/tagm.c
+ M /branches/3.1/tests/tgeneric.c
+
+Renamed "division-by-zero" to "divide-by-zero" (term used by the
+ISO C99 standard, the IEEE 754-2008 standard using divideByZero,
+and the old IEEE 754-1985 standard using both "divide by zero"
+and "division by zero").
+(Merged changeset r7886 from the trunk.)
+------------------------------------------------------------------------
+r7885 | vlefevre | 2011-09-24 09:40:03 +0000 (Sat, 24 Sep 2011) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/tests/tgmpop.c
+
+[tests/tgmpop.c] Improved division-by-zero tests.
+[src/gmp_op.c] Forgot to update the flags in some functions.
+(Merged changesets r7882 and r7883 from the trunk.)
+------------------------------------------------------------------------
+r7884 | vlefevre | 2011-09-24 09:39:02 +0000 (Sat, 24 Sep 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/faq.xsl
+
+[doc/faq.xsl] Added a comment about the MPFR logo.
+(Merged changeset r7881 from the trunk.)
+------------------------------------------------------------------------
+r7880 | vlefevre | 2011-09-22 10:38:10 +0000 (Thu, 22 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Improved mpfr_frexp description.
+------------------------------------------------------------------------
+r7878 | vlefevre | 2011-09-22 10:09:40 +0000 (Thu, 22 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Corrected typo in the mpfr_frexp description.
+------------------------------------------------------------------------
+r7874 | vlefevre | 2011-09-20 08:50:37 +0000 (Tue, 20 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r7872 | vlefevre | 2011-09-20 07:37:01 +0000 (Tue, 20 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.0-rc2.
+------------------------------------------------------------------------
+r7871 | vlefevre | 2011-09-20 07:35:18 +0000 (Tue, 20 Sep 2011) | 18 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/NEWS
+ M /branches/3.1/TODO
+ M /branches/3.1/doc/README.dev
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/examples/version.c
+ M /branches/3.1/src/agm.c
+ M /branches/3.1/src/buildopt.c
+ M /branches/3.1/src/gmp_op.c
+ M /branches/3.1/src/mpfr-gmp.h
+ M /branches/3.1/src/mpfr-impl.h
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/tests/tbuildopt.c
+ M /branches/3.1/tests/tgmpop.c
+
+Merged r7857 through r7870 from the trunk:
+ * [src/mpfr-gmp.h] Fixed a prototype (mpfr_limb_ptr isn't available
+ yet) and added missing prototype for __gmpn_sbpi1_divappr_q.
+ * [src/mpfr-impl.h] Define new macros MPFR_EXT_EMIN and MPFR_EXT_EMAX.
+ * [src/agm.c] Replaced __gmpfr_emin and __gmpfr_emax by MPFR_EXT_EMIN
+ and MPFR_EXT_EMAX respectively (this should be a bit faster with TLS
+ and also is a workaround to a bug occurring with TLS and GCC 4.3.2
+ on a Linux/Sparc machine, gcc54.fsffrance.org).
+ * [tests/tgmpop.c] Check for erange flag in mpfr_cmp_[f,q,z].
+ * [src/gmp_op.c] Handle the special cases in mpfr_cmp_q and mpfr_cmp_f
+ (fixing the problem with the erange flag in particular).
+ * [src/buildopt.c,src/mpfr.h,tests/tbuildopt.c,doc/mpfr.texi,NEWS]
+ Added mpfr_buildopt_gmpinternals_p function.
+ * [examples/version.c] Output mpfr_buildopt_gmpinternals_p() and
+ mpfr_buildopt_tune_case() values with MPFR 3.1 or later.
+ * [doc/README.dev] Updated "To make a release". Document how to
+ specify the minimum exponent or the maximum exponent.
+ * [TODO] Added an item about the minimum and maximum exponents.
+------------------------------------------------------------------------
+r7857 | vlefevre | 2011-09-19 08:22:17 +0000 (Mon, 19 Sep 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Correction: "5 exception types" → "6 exception types"
+(thanks to Case Vanhorsen for the report).
+------------------------------------------------------------------------
+r7854 | vlefevre | 2011-09-17 11:58:18 +0000 (Sat, 17 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r7853 | vlefevre | 2011-09-14 21:38:49 +0000 (Wed, 14 Sep 2011) | 4 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Define LONGLONG_STANDALONE before including
+mpfr-longlong.h so that udiv_qrnnd_preinv is defined (this is
+useful at least on IA64 when compiling without gmp-impl.h).
+Thanks to Patrick Pélissier for the fix.
+------------------------------------------------------------------------
+r7851 | vlefevre | 2011-09-11 09:21:52 +0000 (Sun, 11 Sep 2011) | 3 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/NEWS
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated "API Compatibility" section. Documented
+ function mpfr_buildopt_tune_case. Minor consistency changes.
+[NEWS] Function mpfr_buildopt_tune_case is new in MPFR 3.1.
+------------------------------------------------------------------------
+r7844 | vlefevre | 2011-09-11 07:49:03 +0000 (Sun, 11 Sep 2011) | 2 lines
+Changed paths:
+ M /branches/3.1
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] MPFR_RNDA was introduced in MPFR 3.0.0 and should
+no longer be considered experimental.
+------------------------------------------------------------------------
+r7842 | vlefevre | 2011-09-10 21:25:45 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -rHEAD:0 -v" (in UTF-8 locales).
+------------------------------------------------------------------------
+r7841 | vlefevre | 2011-09-10 21:24:05 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7840 | vlefevre | 2011-09-10 21:23:08 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /branches/3.1/INSTALL
+ M /branches/3.1/VERSION
+ M /branches/3.1/configure.ac
+ M /branches/3.1/doc/mpfr.texi
+ M /branches/3.1/src/mpfr.h
+ M /branches/3.1/src/version.c
+
+Updated version to 3.1.0-rc1.
+------------------------------------------------------------------------
+r7839 | vlefevre | 2011-09-10 21:21:59 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ A /branches/3.1 (from /trunk:7838)
+
+Recreated 3.1 branch from the trunk.
+------------------------------------------------------------------------
+r7836 | vlefevre | 2011-09-10 21:15:45 +0000 (Sat, 10 Sep 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/trec_sqrt.c
+
+[tests/trec_sqrt.c] Fixed bug introduced in r7711 (build failure
+with a C++ compiler).
+------------------------------------------------------------------------
+r7835 | vlefevre | 2011-09-10 20:13:19 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /trunk
+ M /trunk/NEWS
+ M /trunk/doc/mpfr.texi
+
+Removed now useless svn:mergeinfo properties.
+------------------------------------------------------------------------
+r7832 | vlefevre | 2011-09-10 20:04:07 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+[TODO] Replaced "configure.in" by "configure.ac".
+------------------------------------------------------------------------
+r7831 | vlefevre | 2011-09-10 20:02:56 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Removed obsolete paragraph about AM_MAINTAINER_MODE.
+------------------------------------------------------------------------
+r7826 | vlefevre | 2011-09-10 19:08:42 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Correction after r7825.
+------------------------------------------------------------------------
+r7825 | vlefevre | 2011-09-10 19:07:39 +0000 (Sat, 10 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Run tools/ck-mparam.
+------------------------------------------------------------------------
+r7824 | vlefevre | 2011-09-10 19:04:57 +0000 (Sat, 10 Sep 2011) | 2 lines
+Changed paths:
+ A /trunk/tools/ck-mparam
+
+Added tools/ck-mparam sh script to check the mparam.h files
+(gcc is needed).
+------------------------------------------------------------------------
+r7823 | zimmerma | 2011-09-10 07:15:46 +0000 (Sat, 10 Sep 2011) | 2 lines
+Changed paths:
+ M /trunk/src/amd/k8/mparam.h
+
+[src/amd/k8/mparam.h] removed spurious end of comment
+
+------------------------------------------------------------------------
+r7821 | vlefevre | 2011-09-09 17:19:39 +0000 (Fri, 09 Sep 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] For the valgrind example, use the same arguments
+as in gnulib's valgrind-tests.m4 file.
+------------------------------------------------------------------------
+r7818 | vlefevre | 2011-09-09 13:48:33 +0000 (Fri, 09 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update with "LC_ALL=en_US.UTF8 TZ=UTC svn log -rHEAD:0 -v".
+------------------------------------------------------------------------
+r7817 | vlefevre | 2011-09-09 13:32:55 +0000 (Fri, 09 Sep 2011) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/tools/ck-copyright-notice
+
+[Makefile.am] Added tools/ck-copyright-notice to EXTRA_DIST as it is
+ used in dist-hook.
+[tools/ck-copyright-notice] Added copyright notice (since this file is
+ distributed in the tarballs). Note: the first year is 2008 as a part
+ of the code comes from r5370 in mpfrlint.
+------------------------------------------------------------------------
+r7816 | vlefevre | 2011-09-09 11:40:33 +0000 (Fri, 09 Sep 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/ck-copyright-notice
+
+[tools/ck-copyright-notice] Skip src/mpfr-longlong.h as this file
+(which comes from GMP) has a specific copyright notice.
+------------------------------------------------------------------------
+r7815 | vlefevre | 2011-09-09 11:37:01 +0000 (Fri, 09 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/src/mp_clz_tab.c
+
+[src/mp_clz_tab.c] Updated the copyright notice.
+------------------------------------------------------------------------
+r7814 | vlefevre | 2011-09-09 11:31:07 +0000 (Fri, 09 Sep 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/ck-copyright-notice
+
+[tools/ck-copyright-notice] Check that the first copyright year for
+the mparam.h files is 2005.
+------------------------------------------------------------------------
+r7813 | vlefevre | 2011-09-09 11:26:02 +0000 (Fri, 09 Sep 2011) | 2 lines
+Changed paths:
+ M /trunk/src/amd/amdfam10/mparam.h
+ M /trunk/src/amd/athlon/mparam.h
+ M /trunk/src/amd/k8/mparam.h
+ M /trunk/src/arm/mparam.h
+ M /trunk/src/generic/mparam.h
+ M /trunk/src/hppa/mparam.h
+ M /trunk/src/ia64/mparam.h
+ M /trunk/src/powerpc32/mparam.h
+ M /trunk/src/powerpc64/mparam.h
+ M /trunk/src/sparc64/mparam.h
+ M /trunk/src/x86/core2/mparam.h
+ M /trunk/src/x86/mparam.h
+ M /trunk/src/x86_64/core2/mparam.h
+ M /trunk/src/x86_64/pentium4/mparam.h
+
+Added copyright notice to the mparam.h files (with the same years
+as in the template).
+------------------------------------------------------------------------
+r7812 | vlefevre | 2011-09-09 11:20:25 +0000 (Fri, 09 Sep 2011) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/tools/ck-copyright-notice
+ M /trunk/tools/mpfrlint
+
+Added tools/ck-copyright-notice sh script from mpfrlint (updated) to
+check that copyright notices exist and appear to be correct. Updated
+tools/mpfrlint to run tools/ck-copyright-notice instead of its old
+test. In Makefile.am, run tools/ck-copyright-notice in dist-hook for
+"make dist".
+------------------------------------------------------------------------
+r7811 | vlefevre | 2011-09-09 10:57:23 +0000 (Fri, 09 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] More files under src and tests directories.
+------------------------------------------------------------------------
+r7809 | vlefevre | 2011-09-08 09:13:50 +0000 (Thu, 08 Sep 2011) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Update for MPFR 3.1.x.
+------------------------------------------------------------------------
+r7808 | vlefevre | 2011-09-08 09:07:08 +0000 (Thu, 08 Sep 2011) | 7 lines
+Changed paths:
+ M /trunk/doc/README.dev
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am]
+ * Added "AM_LDFLAGS = -no-install" to prevent libtool from generating
+ wrapper scripts for the tests (according to discussions and tests,
+ there should be no negative effects); useful for gdb and valgrind.
+ * Added $(VALGRIND) to TESTS_ENVIRONMENT in order to easily run the
+ tests under valgrind with: VALGRIND="valgrind -q" make check
+[doc/README.dev] Update for gdb and valgrind.
+------------------------------------------------------------------------
+r7807 | vlefevre | 2011-08-31 08:55:56 +0000 (Wed, 31 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Improved the specification of mpfr_get_f.
+------------------------------------------------------------------------
+r7805 | zimmerma | 2011-08-30 12:01:16 +0000 (Tue, 30 Aug 2011) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] added comment about minimal GMP version
+
+------------------------------------------------------------------------
+r7804 | zimmerma | 2011-08-30 08:23:16 +0000 (Tue, 30 Aug 2011) | 3 lines
+Changed paths:
+ M /trunk/src/add.c
+
+dummy change to check if GMP_CHECK_RANDOMIZE is now used in the Hydra
+builds on http://hydra.nixos.org/jobset/gnu/mpfr-trunk
+
+------------------------------------------------------------------------
+r7803 | vlefevre | 2011-08-19 10:03:19 +0000 (Fri, 19 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Added some references to the ternary definition.
+------------------------------------------------------------------------
+r7802 | zimmerma | 2011-08-19 09:01:58 +0000 (Fri, 19 Aug 2011) | 3 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] improved the documentation of mpfr_set_str, as suggested by
+ Vincent Lefevre
+
+------------------------------------------------------------------------
+r7801 | vlefevre | 2011-08-19 08:45:07 +0000 (Fri, 19 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Added "Ternary value" to the concept index.
+------------------------------------------------------------------------
+r7800 | vlefevre | 2011-08-15 12:34:40 +0000 (Mon, 15 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added information on how to update the FAQ.
+------------------------------------------------------------------------
+r7798 | vlefevre | 2011-08-15 11:55:59 +0000 (Mon, 15 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/FAQ.html
+
+[doc] Updated FAQ.html with update-faq.
+------------------------------------------------------------------------
+r7796 | vlefevre | 2011-08-12 11:39:06 +0000 (Fri, 12 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tune/tuneup.c] Untabified.
+------------------------------------------------------------------------
+r7795 | vlefevre | 2011-08-12 11:35:51 +0000 (Fri, 12 Aug 2011) | 3 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] Replaced MPFR_ASSERTD by MPFR_ASSERTN on constant
+expressions (this is a temporary change, as they should later be
+replaced by static assertions).
+------------------------------------------------------------------------
+r7794 | vlefevre | 2011-08-12 11:33:09 +0000 (Fri, 12 Aug 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] Replaced mp_ptr and mp_srcptr (internal to GMP) by
+mpfr_limb_ptr and mpfr_limb_srcptr.
+------------------------------------------------------------------------
+r7793 | vlefevre | 2011-08-12 11:25:25 +0000 (Fri, 12 Aug 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-gmp.h
+
+[src/mpfr-gmp.h] Avoid potential identifier collision by using an
+underscore for variable names declared in the invert_pi1 macro.
+------------------------------------------------------------------------
+r7792 | vlefevre | 2011-08-12 11:18:12 +0000 (Fri, 12 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-gmp.h
+
+[src/mpfr-gmp.h] Untabified.
+------------------------------------------------------------------------
+r7791 | vlefevre | 2011-08-12 11:14:38 +0000 (Fri, 12 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7790 | zimmerma | 2011-08-06 13:30:28 +0000 (Sat, 06 Aug 2011) | 2 lines
+Changed paths:
+ M /trunk/src/amd/k8/mparam.h
+
+[k8/mparam.h] added comment
+
+------------------------------------------------------------------------
+r7789 | zimmerma | 2011-08-06 12:01:58 +0000 (Sat, 06 Aug 2011) | 3 lines
+Changed paths:
+ M /trunk/src/amd/amdfam10/mparam.h
+ M /trunk/src/x86/mparam.h
+
+[x86/mparam.h] new tuning contributed by Jim Cloos
+[amd/amdfam10/mparam.h] added GMP version
+
+------------------------------------------------------------------------
+r7788 | zimmerma | 2011-08-06 11:52:12 +0000 (Sat, 06 Aug 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mulders.c
+
+[mpfr-gmp.h] use mpfr_pi1_t instead of gmp_pi1_t to avoid using GMP's namespace
+
+------------------------------------------------------------------------
+r7787 | zimmerma | 2011-08-05 14:22:26 +0000 (Fri, 05 Aug 2011) | 5 lines
+Changed paths:
+ M /trunk/configure.ac
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mulders.c
+ M /trunk/tune/tuneup.c
+
+[src/mulders.c] use mpn_sbpi1_divappr_q if available and WANT_GMP_INTERNALS
+ is defined
+[src/mpfr-gmp.h] defined macros needed for mpfr_divhigh_n_basecase
+[configure.ac] check for mpn_sbpi1_divappr_q
+
+------------------------------------------------------------------------
+r7786 | vlefevre | 2011-08-05 13:17:23 +0000 (Fri, 05 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.ac
+ M /trunk/doc/mpfr.texi
+ M /trunk/src/mpfr.h
+ M /trunk/src/version.c
+
+Updated version to 3.2.0-dev.
+------------------------------------------------------------------------
+r7784 | zimmerma | 2011-08-05 12:56:08 +0000 (Fri, 05 Aug 2011) | 2 lines
+Changed paths:
+ A /trunk/src/amd/amdfam10
+ A /trunk/src/amd/amdfam10/mparam.h
+
+[amdfam10/mparam.h] tuning parameters contributed by Jim Cloos
+
+------------------------------------------------------------------------
+r7783 | zimmerma | 2011-08-05 03:08:42 +0000 (Fri, 05 Aug 2011) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/src/Makefile.am
+ M /trunk/src/mulders.c
+ M /trunk/tune/tuneup.c
+
+[mulders.c] added a basecase code for Mulders' short division
+[tuneup.c] added corresponding tuning code
+[TODO] added an item
+
+------------------------------------------------------------------------
+r7782 | vlefevre | 2011-08-04 14:36:42 +0000 (Thu, 04 Aug 2011) | 4 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] In the INTMAX_MAX test, no longer hardcode the
+"#include <stdint.h>" (for instance, this doesn't work under
+Solaris 9: INTMAX_MAX is defined only via <inttypes.h>), but
+include "mpfr-intmax.h" instead (needs a temporary CPPFLAGS).
+------------------------------------------------------------------------
+r7781 | vlefevre | 2011-08-01 14:39:08 +0000 (Mon, 01 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Much faster formatted output (mpfr_printf, etc.) with %Rg and similar.
+------------------------------------------------------------------------
+r7780 | vlefevre | 2011-08-01 13:56:27 +0000 (Mon, 01 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added copyright notice in case the file is distributed.
+------------------------------------------------------------------------
+r7779 | vlefevre | 2011-08-01 13:50:17 +0000 (Mon, 01 Aug 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added information on how to run the MPFR test suite
+under valgrind.
+------------------------------------------------------------------------
+r7778 | vlefevre | 2011-08-01 12:36:04 +0000 (Mon, 01 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/src/div.c
+ M /trunk/src/rec_sqrt.c
+ M /trunk/tests/trec_sqrt.c
+
+Untabified and removed trailing spaces.
+------------------------------------------------------------------------
+r7777 | vlefevre | 2011-08-01 12:13:50 +0000 (Mon, 01 Aug 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tversion.c
+
+[tests/tversion.c] Improved output information.
+------------------------------------------------------------------------
+r7776 | zimmerma | 2011-07-31 19:44:32 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/hppa/mparam.h
+
+[hppa/mparam.h] updated for new Mulders' division
+
+------------------------------------------------------------------------
+r7775 | zimmerma | 2011-07-31 19:40:23 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/sparc64/mparam.h
+
+[sparc64/mparam.h] updated for new Mulders' division
+
+------------------------------------------------------------------------
+r7774 | zimmerma | 2011-07-31 15:43:40 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/powerpc64/mparam.h
+
+[powerpc64/mparam.h] updated for new Mulders' division
+
+------------------------------------------------------------------------
+r7773 | zimmerma | 2011-07-31 15:08:43 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/ia64/mparam.h
+
+[ia64/mparam.h] updated for new Mulders' division
+
+------------------------------------------------------------------------
+r7772 | zimmerma | 2011-07-31 12:43:03 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/amd/k8/mparam.h
+
+[amd/k8/mparam.h] updated for new Mulders' division
+
+------------------------------------------------------------------------
+r7771 | zimmerma | 2011-07-31 12:39:57 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/x86/core2/mparam.h
+
+[x86/core2/mparam.h] updated thresholds for new Mulders' division
+
+------------------------------------------------------------------------
+r7770 | zimmerma | 2011-07-31 10:54:38 +0000 (Sun, 31 Jul 2011) | 5 lines
+Changed paths:
+ M /trunk/src/mparam_h.in
+ M /trunk/tests/tversion.c
+
+[mparam_h.in] changed the detection of 64-bit Core 2, and added
+ MPFR_TUNE_CASE for default case
+[tversion.c] print GMP version (header and library), and file for tuning
+ parameters
+
+------------------------------------------------------------------------
+r7769 | zimmerma | 2011-07-31 10:29:31 +0000 (Sun, 31 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/x86_64/core2/mparam.h
+
+[x86_64/core2/mparam.h] updated for Mulders' division
+
+------------------------------------------------------------------------
+r7768 | zimmerma | 2011-07-31 08:59:53 +0000 (Sun, 31 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/src/div.c
+ M /trunk/src/generic/mparam.h
+ M /trunk/tune/tuneup.c
+
+Added tuning for MPFR_DIV_THRESHOLD, and default value.
+It now remains to do the tuning on the architectures in mparam_in.h.
+
+------------------------------------------------------------------------
+r7767 | zimmerma | 2011-07-29 20:46:45 +0000 (Fri, 29 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] added speed improvement in mpfr_div
+
+------------------------------------------------------------------------
+r7765 | zimmerma | 2011-07-29 20:15:02 +0000 (Fri, 29 Jul 2011) | 39 lines
+Changed paths:
+ M /trunk/src/div.c
+ M /trunk/src/mulders.c
+
+[mulders.c] fixed bug in mpfr_divhigh_n (this routine was not used yet)
+[div.c] now use Mulders' short product for large division. It remains to
+ do the automatic tuning of MPFR_DIV_THRESHOLD. The speedup is nice,
+ for example on my Core 2 Duo laptop we got with MPFR 3.0.0:
+
+[zimmerma@coing tests]$ ./timings-mpfr 1000
+Using MPFR-3.0.0 with GMP-5.0.2
+[precision is 3322 bits]
+x*y took 0.004543 ms (262143 eval in 1191 ms)
+x*x took 0.003616 ms (524287 eval in 1896 ms)
+x/y took 0.009087 ms (131071 eval in 1191 ms)
+sqrt(x) took 0.007004 ms (262143 eval in 1836 ms)
+exp(x) took 0.293040 ms (4095 eval in 1200 ms)
+log(x) took 0.253724 ms (4095 eval in 1039 ms)
+sin(x) took 0.306960 ms (4095 eval in 1257 ms)
+cos(x) took 0.290842 ms (4095 eval in 1191 ms)
+arccos(x) took 0.590620 ms (2047 eval in 1209 ms)
+arctan(x) took 0.560332 ms (2047 eval in 1147 ms)
+
+and now we get:
+
+[zimmerma@coing tests]$ ./timings-mpfr 1000
+Using MPFR-3.1.0-dev with GMP-5.0.2
+[precision is 3322 bits]
+x*y took 0.004444 ms (262143 eval in 1165 ms)
+x*x took 0.002686 ms (524287 eval in 1408 ms)
+x/y took 0.006989 ms (262143 eval in 1832 ms)
+sqrt(x) took 0.007084 ms (262143 eval in 1857 ms)
+exp(x) took 0.292063 ms (4095 eval in 1196 ms)
+log(x) took 0.246886 ms (4095 eval in 1011 ms)
+sin(x) took 0.259096 ms (4095 eval in 1061 ms)
+cos(x) took 0.244933 ms (4095 eval in 1003 ms)
+arccos(x) took 0.556424 ms (2047 eval in 1139 ms)
+arctan(x) took 0.526624 ms (2047 eval in 1078 ms)
+
+We see that other routines also benefit from the speedup in mpfr_sqr and
+mpfr_div (log, sin, cos, arccos, arctan).
+
+
+------------------------------------------------------------------------
+r7764 | zimmerma | 2011-07-29 15:21:09 +0000 (Fri, 29 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/doc/algorithms.bib
+ M /trunk/doc/algorithms.tex
+
+[algorithms.tex] added algorithm for division with Mulders' short product
+ (can anybody check the algorithm is ok?)
+
+------------------------------------------------------------------------
+r7763 | vlefevre | 2011-07-29 12:48:21 +0000 (Fri, 29 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/src/vasprintf.c
+
+[src/vasprintf.c] Added a comment.
+------------------------------------------------------------------------
+r7762 | vlefevre | 2011-07-29 12:24:18 +0000 (Fri, 29 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/get_str.c
+
+[src/get_str.c] Added a comment about the use of mpfr_ceil_mul
+(exported and declared in mpfr-impl.h since r7760).
+------------------------------------------------------------------------
+r7761 | thevenyp | 2011-07-28 23:01:52 +0000 (Thu, 28 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/src/vasprintf.c
+ M /trunk/tests/tsprintf.c
+
+Avoid expensive calls to mpfr_get_prec() using mpfr_ceil_mul() instead.
+------------------------------------------------------------------------
+r7760 | thevenyp | 2011-07-28 22:59:01 +0000 (Thu, 28 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/src/get_str.c
+ M /trunk/src/mpfr-impl.h
+
+Make ceil_mul() public as mpfr_ceil_mul() in mpfr-impl.h
+------------------------------------------------------------------------
+r7759 | vlefevre | 2011-07-28 18:50:21 +0000 (Thu, 28 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] MPFR coding conventions for r7752.
+------------------------------------------------------------------------
+r7758 | zimmerma | 2011-07-28 17:17:24 +0000 (Thu, 28 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/src/amd/k8/mparam.h
+ M /trunk/src/arm/mparam.h
+ M /trunk/src/hppa/mparam.h
+ M /trunk/src/ia64/mparam.h
+ M /trunk/src/mulders.c
+ M /trunk/src/powerpc32/mparam.h
+ M /trunk/src/powerpc64/mparam.h
+ M /trunk/src/sparc64/mparam.h
+ M /trunk/src/x86/core2/mparam.h
+ M /trunk/src/x86/mparam.h
+ M /trunk/src/x86_64/core2/mparam.h
+ M /trunk/src/x86_64/pentium4/mparam.h
+
+modified the default tuning parameters so they are within the bounds of the
+ARITH-20 paper "Short Division of Long Integers"
+
+------------------------------------------------------------------------
+r7757 | zimmerma | 2011-07-28 16:38:55 +0000 (Thu, 28 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] declare mpfr_mullow_n as non-static since it might be useful
+ elsewhere
+
+------------------------------------------------------------------------
+r7756 | zimmerma | 2011-07-28 16:36:50 +0000 (Thu, 28 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] fix tuning bounds of short product and division according to the
+ ARITH-20 paper
+
+------------------------------------------------------------------------
+r7755 | zimmerma | 2011-07-28 16:36:01 +0000 (Thu, 28 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] detect long double format in m68k
+
+------------------------------------------------------------------------
+r7754 | zimmerma | 2011-07-28 16:35:25 +0000 (Thu, 28 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tget_flt.c] added test to check FLT_MAX + FLT_MAX gives INFP
+ (to early detect compiler bugs)
+
+------------------------------------------------------------------------
+r7753 | zimmerma | 2011-07-28 16:30:38 +0000 (Thu, 28 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/nightly-test
+
+[nightly-test] changed -pedantic-errors into -pedantic
+
+------------------------------------------------------------------------
+r7752 | zimmerma | 2011-07-28 16:29:51 +0000 (Thu, 28 Jul 2011) | 4 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[mulders.c] added some code for short division (FoldDiv, not used),
+ added comments and fixed bounds in accordance with the
+ ARITH-20 paper
+
+------------------------------------------------------------------------
+r7751 | thevenyp | 2011-07-28 16:16:36 +0000 (Thu, 28 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/src/vasprintf.c
+
+Use a buffer in order to avoid a double call to mpfr_get_str.
+------------------------------------------------------------------------
+r7750 | vlefevre | 2011-07-26 13:12:46 +0000 (Tue, 26 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/src/log.c
+
+[src/log.c] Replaced TMP_* by MPFR_GROUP_* (patch by Patrick).
+------------------------------------------------------------------------
+r7749 | vlefevre | 2011-07-22 10:24:38 +0000 (Fri, 22 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Added a comment about TLS variable initialization.
+------------------------------------------------------------------------
+r7748 | vlefevre | 2011-07-22 10:15:04 +0000 (Fri, 22 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Added information about TLS variable initialization.
+------------------------------------------------------------------------
+r7747 | vlefevre | 2011-07-22 10:09:28 +0000 (Fri, 22 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Split Chapter "MPFR Basics" into nodes as it is now
+quite large (thus references to particular sections are now possible).
+------------------------------------------------------------------------
+r7744 | zimmerma | 2011-07-18 19:03:25 +0000 (Mon, 18 Jul 2011) | 7 lines
+Changed paths:
+ M /trunk/src/vasprintf.c
+
+[vasprintf.c] simplified and improved round_to_10_power(), also contributed
+ a negative number of lines of code :-)
+ Still not optimal, since round_to_10_power() is still called
+ twice for printing say pi with mpfr_printf ("%Rg\n", x), once
+ from partition_number(), once from regular_fg(), and thus
+ mpfr_get_str is called at least 3 times!
+
+------------------------------------------------------------------------
+r7743 | zimmerma | 2011-07-18 12:21:29 +0000 (Mon, 18 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] improve error message when libgmp is not found
+
+------------------------------------------------------------------------
+r7742 | zimmerma | 2011-07-18 11:24:40 +0000 (Mon, 18 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[mpfr.texi] added note about threads for mpfr_set_default_prec and
+ mpfr_get_default_prec
+
+------------------------------------------------------------------------
+r7740 | vlefevre | 2011-07-06 15:57:22 +0000 (Wed, 06 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7738 | vlefevre | 2011-07-06 13:47:35 +0000 (Wed, 06 Jul 2011) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/doc/mpfr.texi
+
+[NEWS, doc/mpfr.texi] mpfr_min_prec was a new function in MPFR 3.0.0.
+------------------------------------------------------------------------
+r7736 | vlefevre | 2011-07-01 15:17:47 +0000 (Fri, 01 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tests/tget_flt.c] Replaced FLT_MAX + FLT_MAX by (float) DBL_POS_INF,
+which should trigger fewer compiler bugs. See:
+ https://sympa.inria.fr/sympa/arc/mpfr/2011-07/msg00002.html
+------------------------------------------------------------------------
+r7734 | vlefevre | 2011-07-01 08:07:35 +0000 (Fri, 01 Jul 2011) | 2 lines
+Changed paths:
+ M /trunk/src/ieee_floats.h
+
+[src/ieee_floats.h] Added a comment about the NaN format when
+_GMP_IEEE_FLOATS is defined.
+------------------------------------------------------------------------
+r7733 | zimmerma | 2011-07-01 08:04:50 +0000 (Fri, 01 Jul 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tget_flt.c] check for compiler bug
+ (https://sympa.inria.fr/sympa/arc/mpfr/2011-07/msg00000.html)
+
+------------------------------------------------------------------------
+r7731 | vlefevre | 2011-06-30 00:17:40 +0000 (Thu, 30 Jun 2011) | 3 lines
+Changed paths:
+ M /trunk/AUTHORS
+ M /trunk/BUGS
+ M /trunk/COPYING
+ M /trunk/COPYING.LESSER
+ M /trunk/ChangeLog
+ M /trunk/INSTALL
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/PATCHES
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/VERSION
+ M /trunk/acinclude.m4
+ M /trunk/configure.ac
+ M /trunk/doc/FAQ.html
+ M /trunk/doc/README.dev
+ M /trunk/doc/algorithms.bib
+ M /trunk/doc/algorithms.tex
+ M /trunk/doc/faq.xsl
+ M /trunk/doc/fdl.texi
+ M /trunk/doc/mpfr.texi
+ M /trunk/doc/update-faq
+ M /trunk/examples/divworst.c
+ M /trunk/examples/rndo-add.c
+ M /trunk/examples/sample.c
+ M /trunk/examples/version.c
+ M /trunk/other/cputime.h
+ M /trunk/other/div-short.c
+ M /trunk/src/Makefile.am
+ M /trunk/src/abort_prec_max.c
+ M /trunk/src/acos.c
+ M /trunk/src/acosh.c
+ M /trunk/src/add.c
+ M /trunk/src/add1.c
+ M /trunk/src/add1sp.c
+ M /trunk/src/add_d.c
+ M /trunk/src/add_ui.c
+ M /trunk/src/agm.c
+ M /trunk/src/ai.c
+ M /trunk/src/asin.c
+ M /trunk/src/asinh.c
+ M /trunk/src/atan.c
+ M /trunk/src/atan2.c
+ M /trunk/src/atanh.c
+ M /trunk/src/bernoulli.c
+ M /trunk/src/buildopt.c
+ M /trunk/src/cache.c
+ M /trunk/src/cbrt.c
+ M /trunk/src/check.c
+ M /trunk/src/clear.c
+ M /trunk/src/clears.c
+ M /trunk/src/cmp.c
+ M /trunk/src/cmp2.c
+ M /trunk/src/cmp_abs.c
+ M /trunk/src/cmp_d.c
+ M /trunk/src/cmp_ld.c
+ M /trunk/src/cmp_si.c
+ M /trunk/src/cmp_ui.c
+ M /trunk/src/comparisons.c
+ M /trunk/src/const_catalan.c
+ M /trunk/src/const_euler.c
+ M /trunk/src/const_log2.c
+ M /trunk/src/const_pi.c
+ M /trunk/src/constant.c
+ M /trunk/src/copysign.c
+ M /trunk/src/cos.c
+ M /trunk/src/cosh.c
+ M /trunk/src/cot.c
+ M /trunk/src/coth.c
+ M /trunk/src/csc.c
+ M /trunk/src/csch.c
+ M /trunk/src/d_div.c
+ M /trunk/src/d_sub.c
+ M /trunk/src/digamma.c
+ M /trunk/src/dim.c
+ M /trunk/src/div.c
+ M /trunk/src/div_2exp.c
+ M /trunk/src/div_2si.c
+ M /trunk/src/div_2ui.c
+ M /trunk/src/div_d.c
+ M /trunk/src/div_ui.c
+ M /trunk/src/dump.c
+ M /trunk/src/eint.c
+ M /trunk/src/eq.c
+ M /trunk/src/erf.c
+ M /trunk/src/erfc.c
+ M /trunk/src/exceptions.c
+ M /trunk/src/exp.c
+ M /trunk/src/exp10.c
+ M /trunk/src/exp2.c
+ M /trunk/src/exp3.c
+ M /trunk/src/exp_2.c
+ M /trunk/src/expm1.c
+ M /trunk/src/extract.c
+ M /trunk/src/factorial.c
+ M /trunk/src/fits_intmax.c
+ M /trunk/src/fits_s.h
+ M /trunk/src/fits_sint.c
+ M /trunk/src/fits_slong.c
+ M /trunk/src/fits_sshort.c
+ M /trunk/src/fits_u.h
+ M /trunk/src/fits_uint.c
+ M /trunk/src/fits_uintmax.c
+ M /trunk/src/fits_ulong.c
+ M /trunk/src/fits_ushort.c
+ M /trunk/src/fma.c
+ M /trunk/src/fms.c
+ M /trunk/src/frac.c
+ M /trunk/src/free_cache.c
+ M /trunk/src/gamma.c
+ M /trunk/src/gammaonethird.c
+ M /trunk/src/gen_inverse.h
+ M /trunk/src/get_d.c
+ M /trunk/src/get_d64.c
+ M /trunk/src/get_exp.c
+ M /trunk/src/get_f.c
+ M /trunk/src/get_flt.c
+ M /trunk/src/get_ld.c
+ M /trunk/src/get_si.c
+ M /trunk/src/get_sj.c
+ M /trunk/src/get_str.c
+ M /trunk/src/get_ui.c
+ M /trunk/src/get_uj.c
+ M /trunk/src/get_z.c
+ M /trunk/src/get_z_exp.c
+ M /trunk/src/gmp_op.c
+ M /trunk/src/hypot.c
+ M /trunk/src/ieee_floats.h
+ M /trunk/src/init.c
+ M /trunk/src/init2.c
+ M /trunk/src/inits.c
+ M /trunk/src/inits2.c
+ M /trunk/src/inp_str.c
+ M /trunk/src/int_ceil_log2.c
+ M /trunk/src/isinf.c
+ M /trunk/src/isinteger.c
+ M /trunk/src/isnan.c
+ M /trunk/src/isnum.c
+ M /trunk/src/isqrt.c
+ M /trunk/src/isregular.c
+ M /trunk/src/iszero.c
+ M /trunk/src/jn.c
+ M /trunk/src/jyn_asympt.c
+ M /trunk/src/li2.c
+ M /trunk/src/lngamma.c
+ M /trunk/src/log.c
+ M /trunk/src/log10.c
+ M /trunk/src/log1p.c
+ M /trunk/src/log2.c
+ M /trunk/src/logging.c
+ M /trunk/src/min_prec.c
+ M /trunk/src/minmax.c
+ M /trunk/src/modf.c
+ M /trunk/src/mp_clz_tab.c
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mpf2mpfr.h
+ M /trunk/src/mpfr-gmp.c
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mpfr-longlong.h
+ M /trunk/src/mpfr-thread.h
+ M /trunk/src/mpfr.h
+ M /trunk/src/mpn_exp.c
+ M /trunk/src/mul.c
+ M /trunk/src/mul_2exp.c
+ M /trunk/src/mul_2si.c
+ M /trunk/src/mul_2ui.c
+ M /trunk/src/mul_d.c
+ M /trunk/src/mul_ui.c
+ M /trunk/src/mulders.c
+ M /trunk/src/neg.c
+ M /trunk/src/next.c
+ M /trunk/src/out_str.c
+ M /trunk/src/pow.c
+ M /trunk/src/pow_si.c
+ M /trunk/src/pow_ui.c
+ M /trunk/src/pow_z.c
+ M /trunk/src/powerof2.c
+ M /trunk/src/print_raw.c
+ M /trunk/src/print_rnd_mode.c
+ M /trunk/src/printf.c
+ M /trunk/src/rec_sqrt.c
+ M /trunk/src/reldiff.c
+ M /trunk/src/rem1.c
+ M /trunk/src/rint.c
+ M /trunk/src/root.c
+ M /trunk/src/round_near_x.c
+ M /trunk/src/round_p.c
+ M /trunk/src/round_prec.c
+ M /trunk/src/round_raw_generic.c
+ M /trunk/src/scale2.c
+ M /trunk/src/sec.c
+ M /trunk/src/sech.c
+ M /trunk/src/set.c
+ M /trunk/src/set_d.c
+ M /trunk/src/set_d64.c
+ M /trunk/src/set_dfl_prec.c
+ M /trunk/src/set_exp.c
+ M /trunk/src/set_f.c
+ M /trunk/src/set_flt.c
+ M /trunk/src/set_inf.c
+ M /trunk/src/set_ld.c
+ M /trunk/src/set_nan.c
+ M /trunk/src/set_prc_raw.c
+ M /trunk/src/set_prec.c
+ M /trunk/src/set_q.c
+ M /trunk/src/set_rnd.c
+ M /trunk/src/set_si.c
+ M /trunk/src/set_si_2exp.c
+ M /trunk/src/set_sj.c
+ M /trunk/src/set_str.c
+ M /trunk/src/set_str_raw.c
+ M /trunk/src/set_ui.c
+ M /trunk/src/set_ui_2exp.c
+ M /trunk/src/set_uj.c
+ M /trunk/src/set_z.c
+ M /trunk/src/set_z_exp.c
+ M /trunk/src/set_zero.c
+ M /trunk/src/setmax.c
+ M /trunk/src/setmin.c
+ M /trunk/src/setsign.c
+ M /trunk/src/sgn.c
+ M /trunk/src/si_op.c
+ M /trunk/src/signbit.c
+ M /trunk/src/sin.c
+ M /trunk/src/sin_cos.c
+ M /trunk/src/sinh.c
+ M /trunk/src/sinh_cosh.c
+ M /trunk/src/sqr.c
+ M /trunk/src/sqrt.c
+ M /trunk/src/sqrt_ui.c
+ M /trunk/src/stack_interface.c
+ M /trunk/src/strtofr.c
+ M /trunk/src/sub.c
+ M /trunk/src/sub1.c
+ M /trunk/src/sub1sp.c
+ M /trunk/src/sub_d.c
+ M /trunk/src/sub_ui.c
+ M /trunk/src/subnormal.c
+ M /trunk/src/sum.c
+ M /trunk/src/swap.c
+ M /trunk/src/tan.c
+ M /trunk/src/tanh.c
+ M /trunk/src/uceil_exp2.c
+ M /trunk/src/uceil_log2.c
+ M /trunk/src/ufloor_log2.c
+ M /trunk/src/ui_div.c
+ M /trunk/src/ui_pow.c
+ M /trunk/src/ui_pow_ui.c
+ M /trunk/src/ui_sub.c
+ M /trunk/src/urandom.c
+ M /trunk/src/urandomb.c
+ M /trunk/src/vasprintf.c
+ M /trunk/src/version.c
+ M /trunk/src/volatile.c
+ M /trunk/src/yn.c
+ M /trunk/src/zeta.c
+ M /trunk/src/zeta_ui.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/RRTest.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/inp_str.data
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/random2.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tai.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdigamma.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmin_prec.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tset_z_exp.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstdint.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/turandom.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tools/check_inits_clears
+ M /trunk/tools/ck-version-info
+ M /trunk/tools/coverage
+ M /trunk/tools/get_patches.sh
+ M /trunk/tools/mbench/generate.c
+ M /trunk/tools/mbench/mfv5.h
+ M /trunk/tools/mbench/mpfr-gfx.c
+ M /trunk/tools/mbench/mpfr-v4.c
+ M /trunk/tools/mbench/mpfr-v6.c
+ M /trunk/tools/mbench/timp.h
+ M /trunk/tools/update-patchv
+ M /trunk/tools/update-version
+ M /trunk/tune/speed.c
+ M /trunk/tune/tuneup.c
+
+Removed all the svn:eol-style properties (they were set to "native"),
+and in doc/README.dev, explained why svn:eol-style native should not
+be used.
+------------------------------------------------------------------------
+r7729 | vlefevre | 2011-06-28 22:55:59 +0000 (Tue, 28 Jun 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/ck-version-info
+
+[tools/ck-version-info] Check DLL version in LIBMPFR_LDFLAGS line from
+configure.ac (patch by Stefan Graff, with minor changes).
+------------------------------------------------------------------------
+r7726 | vlefevre | 2011-06-26 09:44:11 +0000 (Sun, 26 Jun 2011) | 5 lines
+Changed paths:
+ M /trunk/tools/ck-version-info
+
+[tools/ck-version-info] 2 corrections:
+ * update due to the change of the libmpfr_la_LDFLAGS line in r7724;
+ * to support the CRLF end-of-line sometimes used under MS-Windows
+ (perl should normally take care of that, but Windows software is
+ not always consistent).
+------------------------------------------------------------------------
+r7725 | vlefevre | 2011-06-26 09:30:05 +0000 (Sun, 26 Jun 2011) | 4 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Due to the "@unnumbered Function and Type Index",
+replaced the other "Function Index" by "Function and Type Index"
+(note: the function index and the type index are merged thanks to
+the "@synindex tp fn" line at the beginning of mpfr.texi).
+------------------------------------------------------------------------
+r7724 | vlefevre | 2011-06-25 16:08:39 +0000 (Sat, 25 Jun 2011) | 4 lines
+Changed paths:
+ M /trunk/configure.ac
+ M /trunk/src/Makefile.am
+
+Ported patch r7723 (changes suggested by Stefan Graff to be able
+to build Windows DLLs with GCC 4.6[*]) to the trunk, not tested
+(something more may be needed due to the source reorganization).
+[*] https://sympa.inria.fr/sympa/arc/mpfr/2011-06/msg00013.html
+------------------------------------------------------------------------
+r7722 | vlefevre | 2011-06-21 20:45:27 +0000 (Tue, 21 Jun 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7721 | vlefevre | 2011-06-21 20:41:51 +0000 (Tue, 21 Jun 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Corrected a note about mpfr_set_*, due to the addition
+of mpfr_set_decimal64.
+------------------------------------------------------------------------
+r7720 | vlefevre | 2011-06-20 14:38:24 +0000 (Mon, 20 Jun 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Removed comment added in r7181, as it is no longer
+necessary since r7182 (new option --enable-gmp-internals).
+------------------------------------------------------------------------
+r7719 | vlefevre | 2011-06-20 14:36:28 +0000 (Mon, 20 Jun 2011) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Updated comment concerning __gmpn_rootrem (mention
+WANT_GMP_INTERNALS).
+------------------------------------------------------------------------
+r7718 | vlefevre | 2011-06-20 14:10:04 +0000 (Mon, 20 Jun 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added a note about logging and timeout.
+------------------------------------------------------------------------
+r7717 | vlefevre | 2011-06-20 13:59:31 +0000 (Mon, 20 Jun 2011) | 1 line
+Changed paths:
+ M /trunk/src/atan2.c
+ M /trunk/src/pow.c
+
+[src] Conversion into UTF-8 (only comments were concerned).
+------------------------------------------------------------------------
+r7716 | vlefevre | 2011-06-20 13:57:40 +0000 (Mon, 20 Jun 2011) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+[TODO] Conversion into UTF-8.
+------------------------------------------------------------------------
+r7715 | vlefevre | 2011-06-20 13:56:51 +0000 (Mon, 20 Jun 2011) | 2 lines
+Changed paths:
+ M /trunk/src/pow.c
+
+[src/pow.c] Made the code more robust concerning the scaling (a bug was
+very unlikely, though), and updated the comments (partial proof).
+------------------------------------------------------------------------
+r7714 | vlefevre | 2011-06-01 01:32:26 +0000 (Wed, 01 Jun 2011) | 1 line
+Changed paths:
+ M /trunk/examples/version.c
+
+[examples/version.c] Output MPFR features and size of MPFR types.
+------------------------------------------------------------------------
+r7711 | zimmerma | 2011-05-22 19:13:25 +0000 (Sun, 22 May 2011) | 3 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+ M /trunk/tests/trec_sqrt.c
+
+[src/rec_sqrt.c] continued review; I can now prove that cu=0 in all cases
+[tests/trec_sqrt.c] added tests for corner cases
+
+------------------------------------------------------------------------
+r7710 | zimmerma | 2011-05-20 05:51:22 +0000 (Fri, 20 May 2011) | 2 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[rec_sqrt.c] more review of codes, following comments from Vincent
+
+------------------------------------------------------------------------
+r7709 | zimmerma | 2011-05-19 08:37:24 +0000 (Thu, 19 May 2011) | 2 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[rec_sqrt.c] removed tabs
+
+------------------------------------------------------------------------
+r7708 | zimmerma | 2011-05-19 06:44:00 +0000 (Thu, 19 May 2011) | 4 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[rec_sqrt.c] review and small change of changeset 7651: most probably cu=0
+ when th=0 (and maybe cu=0 always, I cannot find an example where
+ cu <> 0) but considering the case th=0 is more natural.
+
+------------------------------------------------------------------------
+r7707 | vlefevre | 2011-05-18 15:02:52 +0000 (Wed, 18 May 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] List the contributors in the alphabetic order, like
+the main authors.
+------------------------------------------------------------------------
+r7706 | vlefevre | 2011-05-18 14:52:18 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/AUTHORS
+ M /trunk/doc/mpfr.texi
+
+Made AUTHORS and doc/mpfr.texi consistent.
+------------------------------------------------------------------------
+r7705 | vlefevre | 2011-05-18 14:44:37 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/AUTHORS
+ M /trunk/src/acos.c
+ M /trunk/src/asin.c
+ M /trunk/src/atan.c
+ M /trunk/src/atan2.c
+ M /trunk/src/erf.c
+ M /trunk/src/get_str.c
+ M /trunk/src/mpn_exp.c
+ M /trunk/src/round_near_x.c
+ M /trunk/src/zeta.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tdigamma.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tzeta.c
+
+Updated AUTHORS file and copyright notices (for more consistency).
+------------------------------------------------------------------------
+r7704 | vlefevre | 2011-05-18 14:26:30 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+[tests/thyperbolic.c] Fixed copyright notice.
+------------------------------------------------------------------------
+r7703 | vlefevre | 2011-05-18 14:25:11 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/inp_str.c
+
+[src/inp_str.c] Improved comment.
+------------------------------------------------------------------------
+r7702 | vlefevre | 2011-05-18 14:18:41 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/fits_s.h
+
+[src/fits_s.h] Improved comment.
+------------------------------------------------------------------------
+r7701 | vlefevre | 2011-05-18 14:09:54 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7700 | vlefevre | 2011-05-18 14:09:05 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Avoid a warning from mpfrlint.
+------------------------------------------------------------------------
+r7699 | vlefevre | 2011-05-18 13:09:33 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Consistency change in the copyright notice.
+------------------------------------------------------------------------
+r7698 | vlefevre | 2011-05-18 11:09:30 +0000 (Wed, 18 May 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tsqr.c
+
+[tests/tsqr.c] Added a note in the check_mpn_sqr error message.
+------------------------------------------------------------------------
+r7697 | vlefevre | 2011-05-18 10:59:48 +0000 (Wed, 18 May 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqr.c
+
+[tests/tsqr.c] Added a test of mpn_sqr concerning a bug seen
+with GCC 4.5.2 and GMP 5.0.1 on m68k (m68000 target).
+------------------------------------------------------------------------
+r7696 | vlefevre | 2011-05-17 14:25:37 +0000 (Tue, 17 May 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added a note about a texinfo bug.
+------------------------------------------------------------------------
+r7695 | vlefevre | 2011-05-13 15:58:57 +0000 (Fri, 13 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/Makefile.am
+ M /trunk/src/fits_intmax.c
+ M /trunk/src/fits_uintmax.c
+ M /trunk/src/get_sj.c
+ M /trunk/src/get_uj.c
+ M /trunk/src/mpfr-impl.h
+ A /trunk/src/mpfr-intmax.h
+ M /trunk/src/set_sj.c
+ M /trunk/src/set_uj.c
+ M /trunk/src/vasprintf.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tset_sj.c
+
+Added mpfr-intmax.h header.
+------------------------------------------------------------------------
+r7694 | vlefevre | 2011-05-13 15:19:50 +0000 (Fri, 13 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mpfr.h
+ M /trunk/tests/tstdint.c
+ M /trunk/tests/tvalist.c
+
+Started to support mpfr_exp_t defined as intmax_t (_MPFR_EXP_FORMAT==4).
+------------------------------------------------------------------------
+r7693 | vlefevre | 2011-05-13 11:52:28 +0000 (Fri, 13 May 2011) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Added that the mpfr.h header can be included several times,
+while still supporting optional functions.
+------------------------------------------------------------------------
+r7692 | vlefevre | 2011-05-13 11:48:13 +0000 (Fri, 13 May 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Document what to do if mpfr.h can be included
+multiple times (fixes MPFR bug #9653).
+------------------------------------------------------------------------
+r7690 | vlefevre | 2011-05-12 15:29:24 +0000 (Thu, 12 May 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added a note to run tests with -D_MPFR_PREC_FORMAT=2.
+------------------------------------------------------------------------
+r7689 | vlefevre | 2011-05-12 14:10:39 +0000 (Thu, 12 May 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Exponent properties: corrected comments and removed
+obsolete mp_exp_unsigned_t definition (was internal only).
+------------------------------------------------------------------------
+r7688 | vlefevre | 2011-05-12 13:57:02 +0000 (Thu, 12 May 2011) | 4 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mpfr.h
+ M /trunk/src/vasprintf.c
+
+[src/{mpfr.h,mpfr-impl.h,vasprintf.c}] Clean-up and improvement
+of definitions related to mpfr_exp_t. MPFR can now be built with
+-D_MPFR_PREC_FORMAT=2 to have mpfr_prec_t and mpfr_exp_t defined
+as an int.
+------------------------------------------------------------------------
+r7687 | vlefevre | 2011-05-12 12:40:39 +0000 (Thu, 12 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Fixed spaces in a comment.
+------------------------------------------------------------------------
+r7686 | vlefevre | 2011-05-12 12:36:13 +0000 (Thu, 12 May 2011) | 3 lines
+Changed paths:
+ M /trunk
+ M /trunk/src/add1sp.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/turandom.c
+
+Fixed printf's calls: support the case where mpfr_prec_t is not a long
+(or unsigned long).
+[merged changeset r7643 from the exp-int branch]
+------------------------------------------------------------------------
+r7685 | vlefevre | 2011-05-12 12:30:41 +0000 (Thu, 12 May 2011) | 5 lines
+Changed paths:
+ M /trunk
+ M /trunk/src/strtofr.c
+
+[src/strtofr.c] Support the case where mpfr_exp_t < long; mpfr_exp_t is
+currently defined as mp_exp_t, which comes from GMP, and GMP currently
+defines mp_exp_t as a long, except on Cray (never tested for MPFR). But
+this may change in the future (possibly as an option)...
+[merged changeset r7642 from the exp-int branch]
+------------------------------------------------------------------------
+r7684 | vlefevre | 2011-05-12 12:21:49 +0000 (Thu, 12 May 2011) | 2 lines
+Changed paths:
+ M /trunk
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Added missing parentheses in MPFR_SADD_OVERFLOW
+(fortunately the current MPFR code was not affected).
+------------------------------------------------------------------------
+r7683 | vlefevre | 2011-05-12 12:18:38 +0000 (Thu, 12 May 2011) | 1 line
+Changed paths:
+ M /trunk
+ M /trunk/tests/tpow_z.c
+
+[tests/tpow_z.c] More details for a test in case of failure.
+------------------------------------------------------------------------
+r7682 | vlefevre | 2011-05-12 12:16:01 +0000 (Thu, 12 May 2011) | 5 lines
+Changed paths:
+ M /trunk
+ M /trunk/src/sub1.c
+
+[src/sub1.c] Fixed several bugs: integer overflows and potential
+out-of-bound pointers. They might be visible on particular platforms,
+with a particular configuration (e.g. 64-bit limbs and 32-bit exponent
+type) or particular compiler options (to check such overflows).
+[merged changesets r7637-7638 from the exp-int branch]
+------------------------------------------------------------------------
+r7679 | vlefevre | 2011-05-11 13:50:01 +0000 (Wed, 11 May 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tsin.c
+
+[tests/tsin.c] Added a test (it failed before the fix in r7308).
+------------------------------------------------------------------------
+r7678 | vlefevre | 2011-05-11 00:07:05 +0000 (Wed, 11 May 2011) | 10 lines
+Changed paths:
+ M /trunk/src/const_log2.c
+ M /trunk/src/const_pi.c
+ M /trunk/src/free_cache.c
+ M /trunk/src/mpfr-impl.h
+
+Fixed constants pi and log(2) computation when logging is used: When
+MPFR is built with logging support, these two constants are used by
+the logging functions (via mpfr_fprintf, then mpfr_log, for the base
+conversion). Since the mpfr_cache function isn't re-entrant when
+working on the same cache, we need to define two caches for each
+constant. Otherwise the constants could be incorrect; for instance,
+"MPFR_LOG_ALL=1 ./tconst_pi" was failing.
+Note: the bug was introduced with the new logging system from r7575
+for MPFR 3.1.0, based on mpfr_fprintf instead of mpfr_out_str (which
+doesn't depend on mpfr_log).
+------------------------------------------------------------------------
+r7676 | vlefevre | 2011-05-09 12:03:20 +0000 (Mon, 09 May 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+[tests/tests.c] Replaced atoi by strtoul to read the seed from
+GMP_CHECK_RANDOMIZE, as it is an unsigned long.
+------------------------------------------------------------------------
+r7674 | vlefevre | 2011-05-09 11:17:43 +0000 (Mon, 09 May 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+[tests/texp.c] Fixed the test comparing mpfr_exp_2 and mpfr_exp_3:
+filter out 0, as it is handled correctly only by mpfr_exp.
+------------------------------------------------------------------------
+r7672 | vlefevre | 2011-05-06 13:30:28 +0000 (Fri, 06 May 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Completed the note to run tests under gdb.
+------------------------------------------------------------------------
+r7671 | vlefevre | 2011-05-06 12:50:43 +0000 (Fri, 06 May 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added a note to run tests under gdb.
+------------------------------------------------------------------------
+r7670 | zimmerma | 2011-05-06 12:31:24 +0000 (Fri, 06 May 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/README.dev
+
+[README.dev] added hint for logging
+
+------------------------------------------------------------------------
+r7667 | vlefevre | 2011-05-04 23:46:17 +0000 (Wed, 04 May 2011) | 6 lines
+Changed paths:
+ M /trunk/src/atan.c
+
+[src/atan.c] Fixed bug in mpfr_atan: mpfr_check_range was called on the
+unrounded result (no longer allocated) instead of the rounded result.
+Consequence of this bug: possible incorrect or invalid result and/or
+incorrect flags if either the unrounded result or rounded result is not
+in the current exponent range. Or possibly worse if the memory used by
+the unrounded result is modified before the return of the function.
+------------------------------------------------------------------------
+r7666 | vlefevre | 2011-05-04 23:25:24 +0000 (Wed, 04 May 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tatan.c
+
+[tests/tatan.c] Corrected a comment.
+------------------------------------------------------------------------
+r7665 | vlefevre | 2011-05-04 23:20:18 +0000 (Wed, 04 May 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+[tests/tatan.c] Added a testcase showing a failure of mpfr_atan
+in a reduced exponent range.
+------------------------------------------------------------------------
+r7664 | vlefevre | 2011-05-04 22:04:17 +0000 (Wed, 04 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/const_pi.c
+
+[src/const_pi.c] Removed useless assignment.
+------------------------------------------------------------------------
+r7663 | zimmerma | 2011-05-04 21:58:12 +0000 (Wed, 04 May 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[mpfr-impl.h] fixed typo
+
+------------------------------------------------------------------------
+r7661 | vlefevre | 2011-05-03 17:26:31 +0000 (Tue, 03 May 2011) | 5 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mul.c
+
+[src/mpfr-impl.h] In MPFR_RNDRAW_GEN, do not try to compute the
+ sticky bit when not necessary (directed mode with rb = 1).
+[src/mul.c] FIXME comment: with the change in MPFR_RNDRAW_GEN,
+ uninitialized data are no longer read; there's still something
+ wrong, at least with the code documentation, though.
+------------------------------------------------------------------------
+r7660 | vlefevre | 2011-05-03 13:59:19 +0000 (Tue, 03 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mul.c
+
+[src/mul.c] Updated the FIXME comment.
+------------------------------------------------------------------------
+r7659 | vlefevre | 2011-05-03 13:51:52 +0000 (Tue, 03 May 2011) | 6 lines
+Changed paths:
+ M /trunk/src/mul.c
+ M /trunk/tests/tmul.c
+
+Bug in mpfr_mul: a call mpfr_mulhigh_n(pointers..., n) where n is some
+size is done, but the mpfr_mul code assumes a result whose size can be
+arbitrarily larger, thus may depend on uninitialised data.
+ * [src/mul.c] Added a FIXME comment.
+ * [tests/tmul.c] Added a corresponding test. The result is not checked
+ but valgrind complains of the use of uninitialised value(s).
+------------------------------------------------------------------------
+r7658 | vlefevre | 2011-05-03 13:17:04 +0000 (Tue, 03 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] MPFR_RNDRAW_GEN: added other missing parentheses.
+------------------------------------------------------------------------
+r7657 | vlefevre | 2011-05-03 13:14:25 +0000 (Tue, 03 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] MPFR_RNDRAW_GEN: added missing parentheses.
+------------------------------------------------------------------------
+r7656 | vlefevre | 2011-05-03 12:38:50 +0000 (Tue, 03 May 2011) | 3 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Logging: do not take into account the Ziv loops due
+to logging (i.e. used by the MPFR functions called by the mpfr_fprintf
+in LOG_PRINT).
+------------------------------------------------------------------------
+r7655 | vlefevre | 2011-05-03 12:23:23 +0000 (Tue, 03 May 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Avoid recursive logging for MPFR_ZIV_* macros too,
+and fixed type for the output of the precision.
+------------------------------------------------------------------------
+r7654 | vlefevre | 2011-05-03 11:11:47 +0000 (Tue, 03 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Avoid recursive logging (not wanted and freezes MPFR).
+------------------------------------------------------------------------
+r7652 | vlefevre | 2011-05-03 07:34:04 +0000 (Tue, 03 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Improved the comment added in r7651.
+------------------------------------------------------------------------
+r7651 | vlefevre | 2011-05-02 13:46:38 +0000 (Mon, 02 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Fixed the buffer overflow (bug 12553).
+------------------------------------------------------------------------
+r7650 | vlefevre | 2011-05-02 13:26:29 +0000 (Mon, 02 May 2011) | 4 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Added an assertion to avoid a buffer overflow
+(mpn_add_1 and mpn_sub_1 don't support size = 0). It sometimes
+fails, and this is the following bug:
+https://gforge.inria.fr/tracker/index.php?func=detail&aid=12553&group_id=136&atid=619
+------------------------------------------------------------------------
+r7649 | vlefevre | 2011-05-02 13:01:30 +0000 (Mon, 02 May 2011) | 2 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Added a comment about a buffer overflow. Bug report:
+https://gforge.inria.fr/tracker/index.php?func=detail&aid=12553&group_id=136&atid=619
+------------------------------------------------------------------------
+r7648 | vlefevre | 2011-05-02 10:49:33 +0000 (Mon, 02 May 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tvalist.c
+
+[tests/tvalist.c] Make sure that fct is used (avoid a warning).
+------------------------------------------------------------------------
+r7647 | vlefevre | 2011-05-02 10:36:08 +0000 (Mon, 02 May 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+[tests/tsin_cos.c] status_f and status were not read (compared) in
+coverage_01032011, yielding a warning.
+------------------------------------------------------------------------
+r7646 | vlefevre | 2011-05-02 10:34:06 +0000 (Mon, 02 May 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Avoid a spurious warning with some use of MPFR_BLOCK.
+------------------------------------------------------------------------
+r7645 | vlefevre | 2011-05-02 10:13:17 +0000 (Mon, 02 May 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added command to test with valgrind.
+------------------------------------------------------------------------
+r7644 | vlefevre | 2011-05-01 01:45:29 +0000 (Sun, 01 May 2011) | 6 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.ac
+
+Added "make dist" support for -dev MPFR versions by distributing the
+tests/data files in the tarball for such MPFR versions ("make check"
+fails if some data file couldn't be read for such versions).
+ * configure.ac: add a Makefile variable DATAFILES, which contains the
+ list of the tests/data files if the MPFR version ends with "-dev".
+ * Makefile.am: add $(DATAFILES) to EXTRA_DIST.
+------------------------------------------------------------------------
+r7640 | vlefevre | 2011-04-29 11:33:48 +0000 (Fri, 29 Apr 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/trint.c
+
+[tests/trint.c] Removed a useless pointer cast (in general, such casts
+are either useless or incorrect, as breaking aliasing rules).
+------------------------------------------------------------------------
+r7636 | vlefevre | 2011-04-28 12:54:20 +0000 (Thu, 28 Apr 2011) | 1 line
+Changed paths:
+ M /trunk/src/cmp2.c
+
+[src/cmp2.c] Added an assertion.
+------------------------------------------------------------------------
+r7634 | vlefevre | 2011-04-18 14:53:03 +0000 (Mon, 18 Apr 2011) | 5 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Correction of problems triggering the warning
+ "warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body"
+with autoconf 2.68:
+* Fixed missing quoting in an AC_RUN_IFELSE.
+* Added an AC_LANG_SOURCE in another AC_RUN_IFELSE.
+------------------------------------------------------------------------
+r7633 | vlefevre | 2011-04-18 12:11:10 +0000 (Mon, 18 Apr 2011) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] s/can not/cannot/
+------------------------------------------------------------------------
+r7632 | vlefevre | 2011-04-18 12:09:25 +0000 (Mon, 18 Apr 2011) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Added comment about the warning:
+ warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
+------------------------------------------------------------------------
+r7631 | vlefevre | 2011-04-15 12:35:11 +0000 (Fri, 15 Apr 2011) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Use conventional quotes.
+------------------------------------------------------------------------
+r7630 | vlefevre | 2011-04-15 12:15:16 +0000 (Fri, 15 Apr 2011) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Added a comment.
+------------------------------------------------------------------------
+r7625 | vlefevre | 2011-04-12 08:17:39 +0000 (Tue, 12 Apr 2011) | 3 lines
+Changed paths:
+ M /trunk/src/asin.c
+ M /trunk/tests/tasin.c
+
+[src/asin.c] Fixed bug in mpfr_asin for x = 1 or -1 in extremely reduced
+ exponent range (when pi is not representable, but pi/2 is).
+[tests/tasin.c] Added testcase.
+------------------------------------------------------------------------
+r7624 | vlefevre | 2011-04-08 15:32:40 +0000 (Fri, 08 Apr 2011) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] Removed "allow generic tests to run with a restricted
+exponent range" (this was done in r7470).
+------------------------------------------------------------------------
+r7623 | zimmerma | 2011-04-08 13:18:37 +0000 (Fri, 08 Apr 2011) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added item
+
+------------------------------------------------------------------------
+r7621 | vlefevre | 2011-04-05 08:47:39 +0000 (Tue, 05 Apr 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7620 | vlefevre | 2011-04-05 08:45:37 +0000 (Tue, 05 Apr 2011) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/doc/mpfr.texi
+
+[INSTALL,doc/mpfr.texi] Say that mpfr@loria.fr is the MPFR mailing-list.
+------------------------------------------------------------------------
+r7611 | vlefevre | 2011-04-01 14:28:45 +0000 (Fri, 01 Apr 2011) | 4 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Removed the -Wno-format GCC option, which was added
+when logging was used, as it is no longer needed after the changes
+done in r7575,7578 (mpfr_fprintf is now used for logging instead of
+fprintf with the Glibc register_printf_function extension).
+------------------------------------------------------------------------
+r7607 | vlefevre | 2011-03-29 11:49:11 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/reuse.c
+
+[tests/reuse.c] Added a comment.
+------------------------------------------------------------------------
+r7606 | vlefevre | 2011-03-29 11:45:40 +0000 (Tue, 29 Mar 2011) | 4 lines
+Changed paths:
+ M /trunk/src/pow.c
+
+[src/pow.c] Fixed a bug in mpfr_pow_general when an argument is reused
+(e.g. mpfr_pow(x,x,y,rnd) or mpfr_pow(y,x,y,rnd)) and the result is
+negative, thus when x is negative and y is a huge odd integer ("huge"
+because not-too-large integers are currently handled by mpfr_pow_z).
+------------------------------------------------------------------------
+r7605 | vlefevre | 2011-03-29 11:36:49 +0000 (Tue, 29 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+[tests/reuse.c] Added a mpfr_pow(x,x,y,rnd) test showing a failure
+when x is negative and y is a huge odd integer.
+------------------------------------------------------------------------
+r7604 | vlefevre | 2011-03-29 11:10:29 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/subnormal.c
+
+[src/subnormal.c] Improved a comment.
+------------------------------------------------------------------------
+r7603 | vlefevre | 2011-03-29 11:01:33 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/reuse.c
+
+[tests/reuse.c] Test also negative numbers.
+------------------------------------------------------------------------
+r7602 | vlefevre | 2011-03-29 10:52:35 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/reuse.c
+
+[tests/reuse.c] GNU coding style.
+------------------------------------------------------------------------
+r7601 | vlefevre | 2011-03-29 10:27:45 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/mul.c
+
+[src/mul.c] Updated a comment.
+------------------------------------------------------------------------
+r7600 | vlefevre | 2011-03-29 10:20:58 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/powerof2.c
+
+[src/powerof2.c] Updated comment.
+------------------------------------------------------------------------
+r7599 | vlefevre | 2011-03-29 09:30:11 +0000 (Tue, 29 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/powerof2.c
+
+[src/powerof2.c] More detailed comment.
+------------------------------------------------------------------------
+r7595 | zimmerma | 2011-03-21 10:52:35 +0000 (Mon, 21 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/cfarm.sh
+
+[cfarm.sh] complete tests with mpfr-3.0.1-rc1
+
+------------------------------------------------------------------------
+r7592 | vlefevre | 2011-03-21 02:43:09 +0000 (Mon, 21 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/pow_z.c
+
+[src/pow_z.c] Fixed bug bug20110320, that occurs in extremely reduced
+exponent range (more precisely, if 1 is out of range, i.e. emin > 1).
+------------------------------------------------------------------------
+r7591 | vlefevre | 2011-03-21 02:32:07 +0000 (Mon, 21 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+[tests/tpow.c] Added testcase bug20110320.
+------------------------------------------------------------------------
+r7590 | vlefevre | 2011-03-21 02:13:16 +0000 (Mon, 21 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Added debug information.
+------------------------------------------------------------------------
+r7589 | zimmerma | 2011-03-20 19:24:24 +0000 (Sun, 20 Mar 2011) | 2 lines
+Changed paths:
+ A /trunk/tools/cfarm.sh
+
+[cfarm.sh] shell script to test MPFR on the GCC Compile Farm
+
+------------------------------------------------------------------------
+r7587 | zimmerma | 2011-03-18 12:30:22 +0000 (Fri, 18 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/digamma.c
+
+[digamma.c] fixed compiler warning (ISO C90 forbids mixed declarations and code)
+
+------------------------------------------------------------------------
+r7581 | vlefevre | 2011-03-17 15:44:58 +0000 (Thu, 17 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Added a note about the fix in the mpfr_subnormalize
+implementation, in case users would think the old behavior
+was chosen on purpose.
+------------------------------------------------------------------------
+r7578 | vlefevre | 2011-03-17 09:30:32 +0000 (Thu, 17 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/div_ui.c
+
+Completed r7575 (Get rid of deprecated register_printf_function
+function in logging system): there was a remaining old MPFR_LOG_FUNC
+in "src/div_ui.c". Now, the MPFR source no longer contains '%#R'.
+------------------------------------------------------------------------
+r7577 | vlefevre | 2011-03-17 08:45:21 +0000 (Thu, 17 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/mul_2si.c
+
+[src/mul_2si.c] Removed trailing whitespace.
+------------------------------------------------------------------------
+r7576 | vlefevre | 2011-03-17 08:43:54 +0000 (Thu, 17 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Fixed variable name from r7575.
+------------------------------------------------------------------------
+r7575 | thevenyp | 2011-03-17 06:30:11 +0000 (Thu, 17 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+ M /trunk/src/acos.c
+ M /trunk/src/acosh.c
+ M /trunk/src/add.c
+ M /trunk/src/add_d.c
+ M /trunk/src/add_ui.c
+ M /trunk/src/agm.c
+ M /trunk/src/ai.c
+ M /trunk/src/asin.c
+ M /trunk/src/asinh.c
+ M /trunk/src/atan.c
+ M /trunk/src/atan2.c
+ M /trunk/src/atanh.c
+ M /trunk/src/cbrt.c
+ M /trunk/src/const_catalan.c
+ M /trunk/src/const_log2.c
+ M /trunk/src/const_pi.c
+ M /trunk/src/cos.c
+ M /trunk/src/cosh.c
+ M /trunk/src/d_div.c
+ M /trunk/src/d_sub.c
+ M /trunk/src/digamma.c
+ M /trunk/src/div.c
+ M /trunk/src/div_2si.c
+ M /trunk/src/div_2ui.c
+ M /trunk/src/div_d.c
+ M /trunk/src/div_ui.c
+ M /trunk/src/eint.c
+ M /trunk/src/erf.c
+ M /trunk/src/erfc.c
+ M /trunk/src/exp.c
+ M /trunk/src/exp2.c
+ M /trunk/src/exp3.c
+ M /trunk/src/exp_2.c
+ M /trunk/src/expm1.c
+ M /trunk/src/fma.c
+ M /trunk/src/fms.c
+ M /trunk/src/gamma.c
+ M /trunk/src/hypot.c
+ M /trunk/src/jn.c
+ M /trunk/src/li2.c
+ M /trunk/src/lngamma.c
+ M /trunk/src/log.c
+ M /trunk/src/log10.c
+ M /trunk/src/log1p.c
+ M /trunk/src/log2.c
+ M /trunk/src/logging.c
+ M /trunk/src/modf.c
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mul.c
+ M /trunk/src/mul_2si.c
+ M /trunk/src/mul_2ui.c
+ M /trunk/src/mul_d.c
+ M /trunk/src/pow.c
+ M /trunk/src/pow_si.c
+ M /trunk/src/pow_ui.c
+ M /trunk/src/pow_z.c
+ M /trunk/src/rec_sqrt.c
+ M /trunk/src/root.c
+ M /trunk/src/sin.c
+ M /trunk/src/sin_cos.c
+ M /trunk/src/sinh.c
+ M /trunk/src/sinh_cosh.c
+ M /trunk/src/sqr.c
+ M /trunk/src/sqrt.c
+ M /trunk/src/sub.c
+ M /trunk/src/sub_d.c
+ M /trunk/src/sub_ui.c
+ M /trunk/src/tan.c
+ M /trunk/src/tanh.c
+ M /trunk/src/ui_div.c
+ M /trunk/src/ui_sub.c
+ M /trunk/src/yn.c
+ M /trunk/src/zeta.c
+
+Get rid of deprecated register_printf_function function in logging system.
+------------------------------------------------------------------------
+r7573 | vlefevre | 2011-03-15 15:15:22 +0000 (Tue, 15 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/erfc.c
+
+[src/erfc.c] Fixed a problem (incorrect flags or possible crash) in
+extremely reduced exponent range. Support the case where mpfr_prec_t
+is larger than a long.
+------------------------------------------------------------------------
+r7572 | vlefevre | 2011-03-15 15:10:40 +0000 (Tue, 15 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+[tests/terf.c] Added some tests of the flags (no failure in them,
+thanks to the mpfr_cmp_si (x, -27282) in erfc.c, for 1b).
+------------------------------------------------------------------------
+r7571 | vlefevre | 2011-03-15 11:23:25 +0000 (Tue, 15 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] In failure messages, output the name of the
+tested function. This is useful for programs that have generic
+tests for several functions, such as terf.
+------------------------------------------------------------------------
+r7570 | vlefevre | 2011-03-15 10:01:59 +0000 (Tue, 15 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+[tests/terf.c] Added a testcase showing a failure due to bad flags
+in a reduced exponent range.
+------------------------------------------------------------------------
+r7568 | vlefevre | 2011-03-14 09:44:21 +0000 (Mon, 14 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/terf.c
+
+[tests/terf.c] Changed mp_exp_t (r7564) to mpfr_exp_t.
+------------------------------------------------------------------------
+r7567 | vlefevre | 2011-03-11 15:45:48 +0000 (Fri, 11 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/erfc.c
+
+[src/erfc.c] Added an assertion for future platforms (e.g. with 128-bit
+exponent type).
+------------------------------------------------------------------------
+r7566 | vlefevre | 2011-03-11 15:37:07 +0000 (Fri, 11 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/erfc.c
+
+[src/erfc.c] Fixed r7564 (comparison must really be signed).
+------------------------------------------------------------------------
+r7565 | vlefevre | 2011-03-11 15:23:59 +0000 (Fri, 11 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/terf.c
+
+[tests/terf.c] Fixed test added in r7564 for 32-bit machines.
+------------------------------------------------------------------------
+r7564 | zimmerma | 2011-03-11 15:09:06 +0000 (Fri, 11 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/erfc.c
+ M /trunk/tests/terf.c
+
+[erfc.c] fixed bug found by Pascal Molin: when we increase the exponent range
+ on 64-bit machines, erfc() wrongly underflows for x >= 27282
+
+------------------------------------------------------------------------
+r7561 | vlefevre | 2011-03-10 14:48:28 +0000 (Thu, 10 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Fixed the MPFR_FAST_COMPUTE_IF_SMALL_INPUT test for n == 1
+in underflow cases.
+------------------------------------------------------------------------
+r7560 | vlefevre | 2011-03-10 13:46:23 +0000 (Thu, 10 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] No need for mpfr_clear_flags (already done in MPFR_BLOCK).
+------------------------------------------------------------------------
+r7559 | vlefevre | 2011-03-10 13:44:47 +0000 (Thu, 10 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Check that no intermediate underflow or overflow occurs.
+------------------------------------------------------------------------
+r7558 | vlefevre | 2011-03-10 13:30:33 +0000 (Thu, 10 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/algorithms.tex
+
+[doc/algorithms.tex] For the Bessel function, say that the algorithm
+assumes that no underflows/overflows occur.
+------------------------------------------------------------------------
+r7556 | vlefevre | 2011-03-09 15:54:42 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/gamma.c
+
+[src/gamma.c] More robust code (for the change in r7551).
+------------------------------------------------------------------------
+r7555 | vlefevre | 2011-03-09 15:52:33 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tsin_cos.c
+
+Removed trailing spaces.
+------------------------------------------------------------------------
+r7553 | vlefevre | 2011-03-09 15:38:58 +0000 (Wed, 09 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Added feature for MPFR_SUSPICIOUS_OVERFLOW to avoid
+spurious failures by defining TGENERIC_SO_TEST to some well-chosen test.
+------------------------------------------------------------------------
+r7552 | vlefevre | 2011-03-09 15:35:17 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Added a comment about MPFR_SUSPICIOUS_OVERFLOW.
+------------------------------------------------------------------------
+r7551 | vlefevre | 2011-03-09 15:30:46 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/gamma.c
+
+[src/gamma.c] Fixed the special code for tiny values.
+------------------------------------------------------------------------
+r7550 | vlefevre | 2011-03-09 15:29:44 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Corrected a test and added other tests for tiny x > 0.
+------------------------------------------------------------------------
+r7549 | vlefevre | 2011-03-09 14:57:05 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Updated a comment.
+------------------------------------------------------------------------
+r7548 | vlefevre | 2011-03-09 14:07:54 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Restore emax.
+------------------------------------------------------------------------
+r7547 | vlefevre | 2011-03-09 14:03:40 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Do not initialize x twice.
+------------------------------------------------------------------------
+r7546 | vlefevre | 2011-03-09 13:44:02 +0000 (Wed, 09 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Do not run the same test twice if emin = MPFR_EMIN_MIN.
+------------------------------------------------------------------------
+r7545 | vlefevre | 2011-03-09 13:41:51 +0000 (Wed, 09 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Added tests for tiny values, showing bugs in special
+code for such values. Run tgamma with at least an argument to get all
+the failures.
+------------------------------------------------------------------------
+r7542 | vlefevre | 2011-03-07 15:17:24 +0000 (Mon, 07 Mar 2011) | 8 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Fixed mpfr_jn_k0() internal function:
+ * The prototype was incorrect: one needs "unsigned long" for n
+ (actually absn), in case absn is equal to - LONG_MIN.
+ * The formula and the code were incorrect for n = 0, due to the
+ division by n; it was yielding k0 = ULONG_MAX. The case n = 0
+ is now handled separately.
+ * Small optimization: division by log(2) -> multiplication by
+ 1/log(2).
+------------------------------------------------------------------------
+r7541 | vlefevre | 2011-03-07 14:07:47 +0000 (Mon, 07 Mar 2011) | 4 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Avoid integer overflow in the computation of the initial
+working precision. This makes several tests fail, but logging shows
+that previous non-failure was due to undefined behavior due to huge
+k0 computed by mpfr_jn_k0.
+------------------------------------------------------------------------
+r7539 | vlefevre | 2011-03-07 13:03:30 +0000 (Mon, 07 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Added a comment for mpfrlint.
+------------------------------------------------------------------------
+r7538 | vlefevre | 2011-03-07 13:01:36 +0000 (Mon, 07 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Change of r7515: any mpfr_clear_* can be mentioned.
+------------------------------------------------------------------------
+r7537 | vlefevre | 2011-03-07 11:08:08 +0000 (Mon, 07 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Added comments and fixed a bug.
+------------------------------------------------------------------------
+r7536 | vlefevre | 2011-03-07 10:57:44 +0000 (Mon, 07 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Detect incorrect error analysis (that may have been the goal
+of the assertion corrected in r7534, but this wasn't documented). Added
+a FIXME comment.
+------------------------------------------------------------------------
+r7534 | vlefevre | 2011-03-07 10:40:24 +0000 (Mon, 07 Mar 2011) | 5 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Fixed incorrect assertion. It could occur only
+in precision >= 2^(1+s/2), where s is the bitsize of a
+"long", e.g. p >= 2^17 = 131072 on most 32-bit machines and
+p >= 2^33 = 8,589,934,592 on most 64-bit machines. Only some
+arguments are affected (|z| between around 2^(s/2) and p/2).
+------------------------------------------------------------------------
+r7533 | vlefevre | 2011-03-07 10:13:34 +0000 (Mon, 07 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] Added a comment.
+------------------------------------------------------------------------
+r7532 | vlefevre | 2011-03-07 10:07:44 +0000 (Mon, 07 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Corrected a typo.
+------------------------------------------------------------------------
+r7530 | vlefevre | 2011-03-06 10:03:21 +0000 (Sun, 06 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Improved underflow detection. Still not complete, though.
+------------------------------------------------------------------------
+r7529 | vlefevre | 2011-03-06 09:51:13 +0000 (Sun, 06 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Comments: English usage.
+------------------------------------------------------------------------
+r7528 | vlefevre | 2011-03-05 00:19:31 +0000 (Sat, 05 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/trint.c
+
+[tests/trint.c] mantissa -> significand (standard and correct term).
+------------------------------------------------------------------------
+r7527 | vlefevre | 2011-03-05 00:17:45 +0000 (Sat, 05 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/trint.c
+
+[tests/trint.c] Do not use snprintf (C99).
+------------------------------------------------------------------------
+r7526 | vlefevre | 2011-03-04 23:20:51 +0000 (Fri, 04 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Added a test to check that the snprintf function (C99)
+is not used.
+------------------------------------------------------------------------
+r7525 | demengeo | 2011-03-04 17:57:53 +0000 (Fri, 04 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/trint.c
+
+Previous extented coverage test in trint.c now self generate tests in and compare values
+------------------------------------------------------------------------
+r7524 | demengeo | 2011-03-04 14:14:13 +0000 (Fri, 04 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/trint.c
+
+Extend test coverage of mpfr_rint to 100%
+------------------------------------------------------------------------
+r7523 | zimmerma | 2011-03-03 19:27:37 +0000 (Thu, 03 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/add1sp.c
+
+[src/add1sp.c] same as previous commits
+
+------------------------------------------------------------------------
+r7522 | zimmerma | 2011-03-03 19:26:07 +0000 (Thu, 03 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/sub1sp.c
+
+[src/sub1sp.c] ibidem (see previous commit log)
+
+------------------------------------------------------------------------
+r7521 | zimmerma | 2011-03-03 19:24:25 +0000 (Thu, 03 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/add1.c
+
+[add1.c] ibidem (see previous commit log)
+
+------------------------------------------------------------------------
+r7520 | vlefevre | 2011-03-03 18:54:10 +0000 (Thu, 03 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/add.c
+ M /trunk/src/sub.c
+
+[src/add.c,src/sub.c] Split assertions for C90 compilers, to avoid
+too long strings generated by #expr. Problem seen with:
+ gcc -ansi -pedantic-errors
+------------------------------------------------------------------------
+r7518 | vlefevre | 2011-03-03 16:18:16 +0000 (Thu, 03 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/yn.c
+
+[src/yn.c] Minor change.
+------------------------------------------------------------------------
+r7517 | vlefevre | 2011-03-03 16:17:36 +0000 (Thu, 03 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/yn.c
+
+[src/yn.c] Extend the exponent range (code not checked concerning
+internal exceptions, such as overflows, underflows and divby0).
+------------------------------------------------------------------------
+r7516 | vlefevre | 2011-03-03 15:41:28 +0000 (Thu, 03 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Added comments (for mpfrlint, in particular).
+------------------------------------------------------------------------
+r7515 | vlefevre | 2011-03-03 15:40:58 +0000 (Thu, 03 Mar 2011) | 4 lines
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] The use of mpfr_overflow_p, etc. is allowed if
+mpfr_clear_flags is mentioned (useful for checking purpose at the
+end of a function, but this needs an explicit mpfr_clear_flags;
+otherwise MPFR_BLOCK should still be used).
+------------------------------------------------------------------------
+r7514 | vlefevre | 2011-03-03 15:29:10 +0000 (Thu, 03 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Completed scaling to avoid intermediate overflow/underflow.
+------------------------------------------------------------------------
+r7513 | vlefevre | 2011-03-03 12:09:34 +0000 (Thu, 03 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Bug fix in error computation: in Ziv's iteration, err kept
+its value from the previous iteration instead of being reset to 0.
+Consequence: a possible loss of performance in rare cases.
+------------------------------------------------------------------------
+r7512 | vlefevre | 2011-03-03 11:30:29 +0000 (Thu, 03 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/cmp2.c
+
+[src/cmp2.c] Removed a useless assertion and updated comments.
+------------------------------------------------------------------------
+r7511 | vlefevre | 2011-03-02 14:05:39 +0000 (Wed, 02 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Added a FIXME comment.
+------------------------------------------------------------------------
+r7510 | vlefevre | 2011-03-02 13:58:05 +0000 (Wed, 02 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Updated exception checking (more informative).
+------------------------------------------------------------------------
+r7509 | vlefevre | 2011-03-02 13:54:18 +0000 (Wed, 02 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Check internal exceptions: the error analysis may be
+incorrect in case of exception.
+------------------------------------------------------------------------
+r7508 | vlefevre | 2011-03-02 13:41:36 +0000 (Wed, 02 Mar 2011) | 2 lines
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Implemented scaling to avoid intermediate overflow/underflow
+(but the tagm test still fails, due to a rounding error this time).
+------------------------------------------------------------------------
+r7507 | vlefevre | 2011-03-02 10:03:40 +0000 (Wed, 02 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tagm.c
+
+[tests/tagm.c] Added tests triggering intermediate underflow/overflow.
+------------------------------------------------------------------------
+r7506 | vlefevre | 2011-03-02 09:15:24 +0000 (Wed, 02 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tagm.c
+
+[tests/tagm.c] Also test the ternary value and the flags.
+------------------------------------------------------------------------
+r7505 | vlefevre | 2011-03-02 08:57:31 +0000 (Wed, 02 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tagm.c
+
+[tests/tagm.c] Corrected values (using Pari).
+------------------------------------------------------------------------
+r7504 | vlefevre | 2011-03-02 08:36:00 +0000 (Wed, 02 Mar 2011) | 3 lines
+Changed paths:
+ M /trunk/src/agm.c
+
+[src/agm.c] Extend the exponent range. This doesn't make the algorithm
+correct yet, as intermediate underflow or overflow is still possible in
+the first multiplication.
+------------------------------------------------------------------------
+r7503 | demengeo | 2011-03-01 18:10:07 +0000 (Tue, 01 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+Change some functions called in test tsin_cos.c
+------------------------------------------------------------------------
+r7502 | demengeo | 2011-03-01 17:08:11 +0000 (Tue, 01 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+Extend coverage test of mpfr_sincos_fast to 100%
+------------------------------------------------------------------------
+r7501 | demengeo | 2011-03-01 15:47:36 +0000 (Tue, 01 Mar 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tstckintc.c
+
+Extend coverage test of mpfr_custom_get_kind to 100%
+------------------------------------------------------------------------
+r7500 | vlefevre | 2011-02-25 16:39:22 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Fix: support reduced exponent ranges for small inputs.
+------------------------------------------------------------------------
+r7499 | vlefevre | 2011-02-25 16:23:48 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/gamma.c
+
+[src/gamma.c] Added a comment about an overflow case.
+------------------------------------------------------------------------
+r7498 | vlefevre | 2011-02-25 16:20:41 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Added tests in maximum exponent range.
+------------------------------------------------------------------------
+r7497 | vlefevre | 2011-02-25 16:15:10 +0000 (Fri, 25 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/src/gamma.c
+
+[src/gamma.c] Fixed flags when x if very small (protect from
+intermediate overflow).
+------------------------------------------------------------------------
+r7496 | vlefevre | 2011-02-25 16:08:03 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Corrected test number.
+------------------------------------------------------------------------
+r7495 | vlefevre | 2011-02-25 16:07:17 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Added a test in maximum exponent range.
+------------------------------------------------------------------------
+r7494 | vlefevre | 2011-02-25 16:02:48 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/gamma.c
+
+[src/gamma.c] Fixed inexact flag when x if very small.
+------------------------------------------------------------------------
+r7493 | vlefevre | 2011-02-25 16:02:04 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Added tests.
+------------------------------------------------------------------------
+r7492 | vlefevre | 2011-02-25 15:17:44 +0000 (Fri, 25 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/src/gamma.c
+ M /trunk/tests/tgamma.c
+
+[src/gamma.c] Fixed a bug occurring in reduced exponent range.
+[tests/tgamma.c] Added corresponding testcase.
+------------------------------------------------------------------------
+r7491 | vlefevre | 2011-02-25 14:50:37 +0000 (Fri, 25 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/src/lngamma.c
+
+[src/lngamma.c] Do not use MPFR_EXP after a mpfr_clear (even though
+this currently work).
+------------------------------------------------------------------------
+r7490 | vlefevre | 2011-02-25 14:23:20 +0000 (Fri, 25 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/src/rem1.c
+
+[src/rem1.c] Fixed mpfr_rem1 in reduced exponent range (the function
+is actually simplified).
+------------------------------------------------------------------------
+r7487 | zimmerma | 2011-02-25 07:49:00 +0000 (Fri, 25 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added an item
+
+------------------------------------------------------------------------
+r7486 | vlefevre | 2011-02-25 02:45:40 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/div_2si.c
+ M /trunk/src/div_2ui.c
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mul_2si.c
+
+Fixed mpfr_div_2si, mpfr_div_2ui and mpfr_mul_2si in some corner cases.
+------------------------------------------------------------------------
+r7485 | vlefevre | 2011-02-25 02:38:25 +0000 (Fri, 25 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+[tests/tmul_2exp.c] Small correction in output (in case of failure).
+------------------------------------------------------------------------
+r7484 | vlefevre | 2011-02-21 23:41:20 +0000 (Mon, 21 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tset_q.c
+
+[tests/tset_q.c] Corrections in function prototypes.
+------------------------------------------------------------------------
+r7483 | demengeo | 2011-02-21 16:17:14 +0000 (Mon, 21 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tgmpop.c
+
+Remove the use of mpfr_get_default_prec in some coverage test
+------------------------------------------------------------------------
+r7482 | demengeo | 2011-02-21 15:59:32 +0000 (Mon, 21 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tset_q.c
+
+Add some coverage test in tests/tset_q.c
+------------------------------------------------------------------------
+r7481 | demengeo | 2011-02-21 13:07:44 +0000 (Mon, 21 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tgmpop.c
+
+fixed coding convention of 2 tests functions
+------------------------------------------------------------------------
+r7480 | zimmerma | 2011-02-19 08:18:28 +0000 (Sat, 19 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+[tget_d.c] fixed some compiler errors and warnings
+
+------------------------------------------------------------------------
+r7479 | vlefevre | 2011-02-18 15:27:22 +0000 (Fri, 18 Feb 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+[tests/tversion.c] Split a printf into several ones to reduce the
+string length below the 509-byte limit from C90 (useful to avoid
+an error when testing with gcc -ansi -pedantic-errors).
+------------------------------------------------------------------------
+r7478 | demengeo | 2011-02-18 15:13:38 +0000 (Fri, 18 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+Extend test coverage to 100% on mpfr_z_sub and mpfr_mul_q function
+------------------------------------------------------------------------
+r7477 | demengeo | 2011-02-18 14:53:44 +0000 (Fri, 18 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+Extend test coverage on mpfr_get_d_2exp function
+------------------------------------------------------------------------
+r7476 | vlefevre | 2011-02-18 11:43:30 +0000 (Fri, 18 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+[tests/tmul_2exp.c] Also test mpfr_div_2si and mpfr_div_2ui (same bug).
+------------------------------------------------------------------------
+r7475 | vlefevre | 2011-02-18 11:37:39 +0000 (Fri, 18 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+[tests/tmul_2exp.c] Added a testcase showing a bug in mpfr_mul_2si
+(possible intermediate overflow).
+------------------------------------------------------------------------
+r7474 | vlefevre | 2011-02-18 10:29:13 +0000 (Fri, 18 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/src/zeta.c
+
+[src/zeta.c] Support zeta(eps) with |eps| very small or 0
+in extremely reduced exponent range.
+------------------------------------------------------------------------
+r7473 | vlefevre | 2011-02-18 09:54:09 +0000 (Fri, 18 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/src/atan2.c
+
+[src/atan2.c] Fix: the overflow or underflow flag was set in the case
+x = power of two and y/x overflows or underflows.
+------------------------------------------------------------------------
+r7472 | vlefevre | 2011-02-18 09:48:15 +0000 (Fri, 18 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/atan2.c
+
+[src/atan2.c] Support special cases in extremely reduced exponent range.
+------------------------------------------------------------------------
+r7471 | vlefevre | 2011-02-18 09:17:14 +0000 (Fri, 18 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/acos.c
+
+[src/acos.c] Support acos(0) in extremely reduced exponent range.
+------------------------------------------------------------------------
+r7470 | vlefevre | 2011-02-17 13:44:57 +0000 (Thu, 17 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Added generic tests in a reduced exponent range.
+This currently makes 10 tests fail on a 64-bit machine.
+------------------------------------------------------------------------
+r7469 | vlefevre | 2011-02-17 13:43:31 +0000 (Thu, 17 Feb 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+
+[tests/mpfr-test.h] Defined a SAME_VAL(X,Y) macro to test whether two
+floating-point data have the same value, seen as an element of the set
+of the floating-point data (Level 2 in the IEEE 754-2008 standard).
+------------------------------------------------------------------------
+r7468 | vlefevre | 2011-02-17 13:41:12 +0000 (Thu, 17 Feb 2011) | 3 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Defined a MPFR_EXP_FSPEC macro containing the
+format specifier for mpfr_eexp_t, to output an exponent with:
+ printf ("%" MPFR_EXP_FSPEC "d", (mpfr_eexp_t) exponent);
+------------------------------------------------------------------------
+r7467 | vlefevre | 2011-02-17 12:01:57 +0000 (Thu, 17 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Reformat.
+------------------------------------------------------------------------
+r7465 | vlefevre | 2011-02-17 11:33:30 +0000 (Thu, 17 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added a warning about whitespace in the mpfr.texi file.
+------------------------------------------------------------------------
+r7463 | vlefevre | 2011-02-17 11:10:58 +0000 (Thu, 17 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Fixed spacing for the mpfr.info file.
+------------------------------------------------------------------------
+r7460 | vlefevre | 2011-02-10 01:31:16 +0000 (Thu, 10 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Detect the use of mp_ptr and mp_srcptr.
+------------------------------------------------------------------------
+r7459 | vlefevre | 2011-02-10 01:26:13 +0000 (Thu, 10 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7458 | vlefevre | 2011-02-10 01:25:00 +0000 (Thu, 10 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/gmp_op.c
+
+[src/gmp_op.c] Added a blank line.
+------------------------------------------------------------------------
+r7457 | demengeo | 2011-02-09 17:34:50 +0000 (Wed, 09 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/TODO
+ M /trunk/doc/mpfr.texi
+ M /trunk/src/gmp_op.c
+ M /trunk/src/mpfr.h
+ M /trunk/tests/tgmpop.c
+
+Added mpfr_z_sub (function/test/doc)
+------------------------------------------------------------------------
+r7455 | vlefevre | 2011-02-09 14:15:10 +0000 (Wed, 09 Feb 2011) | 3 lines
+Changed paths:
+ M /trunk/src/div.c
+ M /trunk/src/eq.c
+ M /trunk/src/init2.c
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mulders.c
+ M /trunk/src/rec_sqrt.c
+ M /trunk/src/round_prec.c
+ M /trunk/src/set_d.c
+ M /trunk/src/set_prec.c
+ M /trunk/src/sqrt.c
+ M /trunk/src/urandom.c
+ M /trunk/src/urandomb.c
+ M /trunk/src/vasprintf.c
+ M /trunk/tests/random2.c
+ M /trunk/tune/speed.c
+ M /trunk/tune/tuneup.c
+
+Added new types mpfr_limb_ptr and mpfr_limb_srcptr to src/mpfr-impl.h,
+and replaced mp_ptr and mp_srcptr (GMP internals) by these 2 new types
+respectively.
+------------------------------------------------------------------------
+r7453 | vlefevre | 2011-02-08 11:43:39 +0000 (Tue, 08 Feb 2011) | 3 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Fix for Intel's compiler (ICC) under MS Windows:
+MPFR was incorrectly assuming that ICC had some extensions like
+under GNU/Linux. This made the MPFR compilation fail.
+------------------------------------------------------------------------
+r7452 | vlefevre | 2011-02-08 02:48:01 +0000 (Tue, 08 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Corrected a typo in a comment.
+------------------------------------------------------------------------
+r7451 | vlefevre | 2011-02-05 13:37:55 +0000 (Sat, 05 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Removed incorrect note.
+------------------------------------------------------------------------
+r7450 | zimmerma | 2011-02-05 08:15:42 +0000 (Sat, 05 Feb 2011) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added hint for VS2008 and Intel compiler v11.1
+
+------------------------------------------------------------------------
+r7448 | vlefevre | 2011-02-03 09:02:05 +0000 (Thu, 03 Feb 2011) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.ac
+
+[configure.ac,Makefile.am] Clean-up and depend on GNU Automake 1.11.
+------------------------------------------------------------------------
+r7443 | vlefevre | 2011-01-31 01:53:11 +0000 (Mon, 31 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/zeta_ui.c
+ M /trunk/tests/tzeta_ui.c
+
+[src/zeta_ui.c,tests/tzeta_ui.c] Patch from Patrick Pélissier for
+the division-by-zero support in mpfr_zeta_ui (and test):
+------------------------------------------------------------------------
+r7442 | zimmerma | 2011-01-30 09:33:00 +0000 (Sun, 30 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/zeta.c
+ M /trunk/tests/tzeta.c
+
+[src/zeta.c] patch from Patrick Pelissier (problem with division by zero flag)
+
+------------------------------------------------------------------------
+r7440 | zimmerma | 2011-01-28 16:19:45 +0000 (Fri, 28 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] removed division by zero item (done)
+
+------------------------------------------------------------------------
+r7439 | zimmerma | 2011-01-28 16:18:25 +0000 (Fri, 28 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/src/get_str.c
+
+[src/get_str.c,TODO] updated comments, mpfr_get_str already supports base <= 62
+
+------------------------------------------------------------------------
+r7438 | vlefevre | 2011-01-27 17:53:35 +0000 (Thu, 27 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tj0.c
+
+[tests/tj0.c] GMP_RNDN → MPFR_RNDN.
+------------------------------------------------------------------------
+r7437 | vlefevre | 2011-01-27 17:07:48 +0000 (Thu, 27 Jan 2011) | 4 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+ M /trunk/src/subnormal.c
+ M /trunk/tests/tsubnormal.c
+
+[src/subnormal.c] Set the inexact and underflow flags when needed. Fixes
+ https://gforge.inria.fr/tracker/index.php?func=detail&aid=7958&group_id=136&atid=622
+[tests/tsubnormal.c] Improved the tests, in particular for the flags.
+[doc/mpfr.texi] Documented the change.
+------------------------------------------------------------------------
+r7436 | vlefevre | 2011-01-27 16:38:35 +0000 (Thu, 27 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Corrected order in Section "Changed Functions".
+------------------------------------------------------------------------
+r7435 | vlefevre | 2011-01-27 14:17:49 +0000 (Thu, 27 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tj0.c
+
+[tests/tj0.c] Added case for which s = 0 occurs in mpfr_jn.
+------------------------------------------------------------------------
+r7434 | vlefevre | 2011-01-27 13:54:45 +0000 (Thu, 27 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Added a log message.
+------------------------------------------------------------------------
+r7433 | vlefevre | 2011-01-27 13:47:11 +0000 (Thu, 27 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/div_ui.c
+
+[src/div_ui.c] Added logging support.
+------------------------------------------------------------------------
+r7431 | vlefevre | 2011-01-26 14:06:39 +0000 (Wed, 26 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tsum.c
+
+[tests/tsum.c] Fixed bug in test (do not set the exponent on 0).
+------------------------------------------------------------------------
+r7430 | vlefevre | 2011-01-26 13:58:44 +0000 (Wed, 26 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tsum.c
+
+[tests/tsum.c] Formatting.
+------------------------------------------------------------------------
+r7429 | vlefevre | 2011-01-26 13:58:21 +0000 (Wed, 26 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/tests/tsum.c
+
+[tests/tsum.c] Fixed get_prec_max and added some checks.
+Current failure: tab[1] is not valid.
+------------------------------------------------------------------------
+r7428 | vlefevre | 2011-01-26 13:28:10 +0000 (Wed, 26 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/sum.c
+
+[src/sum.c] Added an assertion.
+------------------------------------------------------------------------
+r7427 | vlefevre | 2011-01-26 13:12:06 +0000 (Wed, 26 Jan 2011) | 4 lines
+Changed paths:
+ M /trunk/src/check.c
+
+[src/check.c] Replaced MPFR_IS_PURE_FP by !MPFR_IS_SINGULAR, the
+former macro now has a check for validity in debug mode (r7426).
+The goal of mpfr_check is to test the validity, so that we don't
+want this check here.
+------------------------------------------------------------------------
+r7426 | vlefevre | 2011-01-26 13:05:53 +0000 (Wed, 26 Jan 2011) | 4 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] In the MPFR_IS_PURE_FP test, if positive, check that
+the number is normalized (debug mode only). This makes 2 tests fail:
+tcheck and tsum. Note: with logging active, tsum was already triggering
+an assertion failure in mpfr_get_str (via mpfr_add).
+------------------------------------------------------------------------
+r7425 | vlefevre | 2011-01-26 12:51:41 +0000 (Wed, 26 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/add.c
+
+[src/add.c] Formatting.
+------------------------------------------------------------------------
+r7423 | vlefevre | 2011-01-26 12:02:31 +0000 (Wed, 26 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/li2.c
+
+[src/li2.c] Fixed crash in mpfr_li2 when logging is used.
+------------------------------------------------------------------------
+r7421 | vlefevre | 2011-01-24 16:37:43 +0000 (Mon, 24 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Corrected a comment.
+------------------------------------------------------------------------
+r7420 | zimmerma | 2011-01-24 16:14:18 +0000 (Mon, 24 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] added notes for correctness of the algorithm used
+
+------------------------------------------------------------------------
+r7419 | vlefevre | 2011-01-24 12:41:28 +0000 (Mon, 24 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] C90 compatibility fix (empty macro arguments are undefined).
+------------------------------------------------------------------------
+r7418 | vlefevre | 2011-01-24 10:17:50 +0000 (Mon, 24 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Added an assaertion against a potential overflow (which
+probably never occurs, but this should be proved...).
+------------------------------------------------------------------------
+r7417 | zimmerma | 2011-01-24 07:21:27 +0000 (Mon, 24 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] patch from Patrick Pelissier
+
+------------------------------------------------------------------------
+r7416 | vlefevre | 2011-01-23 04:04:08 +0000 (Sun, 23 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Forgot to change an MPFR_EXP to MPFR_GET_EXP.
+------------------------------------------------------------------------
+r7415 | vlefevre | 2011-01-23 04:02:09 +0000 (Sun, 23 Jan 2011) | 3 lines
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Replaced MPFR_EXP by MPFR_GET_EXP when the value should
+really be an exponent. Removed incorrect and useless casts. Added
+an assertion to protect against potentially incorrect code.
+------------------------------------------------------------------------
+r7414 | vlefevre | 2011-01-23 03:41:39 +0000 (Sun, 23 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/jn.c
+
+[src/jn.c] Patch from Patrick Pélissier (mpfr_check_range and other).
+------------------------------------------------------------------------
+r7413 | vlefevre | 2011-01-21 14:19:35 +0000 (Fri, 21 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Update the check for mpfr_printf-like functions
+in the tests.
+------------------------------------------------------------------------
+r7412 | vlefevre | 2011-01-21 14:15:39 +0000 (Fri, 21 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+[tests/tprintf.c] Consistency.
+------------------------------------------------------------------------
+r7411 | vlefevre | 2011-01-21 13:59:12 +0000 (Fri, 21 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgrandom.c
+
+[tests/tgrandom.c] Added a comment.
+------------------------------------------------------------------------
+r7410 | vlefevre | 2011-01-21 13:54:50 +0000 (Fri, 21 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgrandom.c
+
+[tests/tgrandom.c] Protection of the mpfr_printf by #ifdef HAVE_STDARG.
+------------------------------------------------------------------------
+r7408 | vlefevre | 2011-01-20 12:13:58 +0000 (Thu, 20 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/eint.c
+
+[src/eint.c] Added a FIXME.
+------------------------------------------------------------------------
+r7406 | zimmerma | 2011-01-18 16:50:28 +0000 (Tue, 18 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/out_raw.c
+
+[src/out_raw.c] added pointer to discussion
+
+------------------------------------------------------------------------
+r7405 | vlefevre | 2011-01-17 13:11:15 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tvalist.c
+
+[tests/tvalist.c] Correction for C++ compilers.
+------------------------------------------------------------------------
+r7403 | vlefevre | 2011-01-17 04:01:56 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Added division-by-zero exception.
+------------------------------------------------------------------------
+r7402 | vlefevre | 2011-01-17 03:55:51 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Updated "To make a release".
+------------------------------------------------------------------------
+r7401 | vlefevre | 2011-01-17 03:52:41 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Update for MPFR 3.1.x.
+------------------------------------------------------------------------
+r7400 | vlefevre | 2011-01-17 03:39:24 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/grandom.c
+
+[src/grandom.c] Reformat.
+------------------------------------------------------------------------
+r7399 | vlefevre | 2011-01-17 03:36:24 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] tests/tvalist.c can use mpfr_printf-like functions.
+------------------------------------------------------------------------
+r7398 | vlefevre | 2011-01-17 03:34:40 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgrandom.c
+
+[tests/tgrandom.c] Added a FIXME: do not use mpfr_printf in the tests.
+------------------------------------------------------------------------
+r7397 | vlefevre | 2011-01-17 03:33:17 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tai.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tfrexp.c
+ M /trunk/tests/tgrandom.c
+
+[tests] Untabified and removed trailing spaces.
+------------------------------------------------------------------------
+r7396 | vlefevre | 2011-01-17 03:31:25 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/grandom.c
+ M /trunk/src/mpfr.h
+
+[src/grandom.c,src/mpfr.h] Untabified and removed trailing spaces.
+------------------------------------------------------------------------
+r7395 | vlefevre | 2011-01-17 03:29:36 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/frexp.c
+
+[src/frexp.c] Corrections.
+------------------------------------------------------------------------
+r7394 | vlefevre | 2011-01-17 03:25:50 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/out_raw.c
+
+[src/out_raw.c] Untabified.
+------------------------------------------------------------------------
+r7393 | vlefevre | 2011-01-17 03:25:07 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/out_raw.c
+
+[src/out_raw.c] Fixed some bugs on the incomplete code.
+------------------------------------------------------------------------
+r7392 | vlefevre | 2011-01-17 03:06:09 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/atan2.c
+
+[src/atan2.c] MPFR_EXP -> MPFR_GET_EXP and reformat.
+------------------------------------------------------------------------
+r7391 | vlefevre | 2011-01-17 03:05:33 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/ai.c
+
+[src/ai.c] Removed trailing spaces.
+------------------------------------------------------------------------
+r7390 | vlefevre | 2011-01-17 03:02:39 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7389 | vlefevre | 2011-01-17 03:01:30 +0000 (Mon, 17 Jan 2011) | 4 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/INSTALL
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/acinclude.m4
+ M /trunk/configure.ac
+ M /trunk/doc/FAQ.html
+ M /trunk/doc/Makefile.am
+ M /trunk/doc/faq.xsl
+ M /trunk/doc/mpfr.texi
+ M /trunk/examples/divworst.c
+ M /trunk/examples/rndo-add.c
+ M /trunk/examples/sample.c
+ M /trunk/examples/version.c
+ M /trunk/src/Makefile.am
+ M /trunk/src/abort_prec_max.c
+ M /trunk/src/acos.c
+ M /trunk/src/acosh.c
+ M /trunk/src/add.c
+ M /trunk/src/add1.c
+ M /trunk/src/add1sp.c
+ M /trunk/src/add_d.c
+ M /trunk/src/add_ui.c
+ M /trunk/src/agm.c
+ M /trunk/src/ai.c
+ M /trunk/src/asin.c
+ M /trunk/src/asinh.c
+ M /trunk/src/atan.c
+ M /trunk/src/atan2.c
+ M /trunk/src/atanh.c
+ M /trunk/src/bernoulli.c
+ M /trunk/src/buildopt.c
+ M /trunk/src/cache.c
+ M /trunk/src/cbrt.c
+ M /trunk/src/check.c
+ M /trunk/src/clear.c
+ M /trunk/src/clears.c
+ M /trunk/src/cmp.c
+ M /trunk/src/cmp2.c
+ M /trunk/src/cmp_abs.c
+ M /trunk/src/cmp_d.c
+ M /trunk/src/cmp_ld.c
+ M /trunk/src/cmp_si.c
+ M /trunk/src/cmp_ui.c
+ M /trunk/src/comparisons.c
+ M /trunk/src/const_catalan.c
+ M /trunk/src/const_euler.c
+ M /trunk/src/const_log2.c
+ M /trunk/src/const_pi.c
+ M /trunk/src/constant.c
+ M /trunk/src/copysign.c
+ M /trunk/src/cos.c
+ M /trunk/src/cosh.c
+ M /trunk/src/cot.c
+ M /trunk/src/coth.c
+ M /trunk/src/csc.c
+ M /trunk/src/csch.c
+ M /trunk/src/d_div.c
+ M /trunk/src/d_sub.c
+ M /trunk/src/digamma.c
+ M /trunk/src/dim.c
+ M /trunk/src/div.c
+ M /trunk/src/div_2exp.c
+ M /trunk/src/div_2si.c
+ M /trunk/src/div_2ui.c
+ M /trunk/src/div_d.c
+ M /trunk/src/div_ui.c
+ M /trunk/src/dump.c
+ M /trunk/src/eint.c
+ M /trunk/src/eq.c
+ M /trunk/src/erf.c
+ M /trunk/src/erfc.c
+ M /trunk/src/exceptions.c
+ M /trunk/src/exp.c
+ M /trunk/src/exp10.c
+ M /trunk/src/exp2.c
+ M /trunk/src/exp3.c
+ M /trunk/src/exp_2.c
+ M /trunk/src/expm1.c
+ M /trunk/src/extract.c
+ M /trunk/src/factorial.c
+ M /trunk/src/fits_intmax.c
+ M /trunk/src/fits_s.h
+ M /trunk/src/fits_sint.c
+ M /trunk/src/fits_slong.c
+ M /trunk/src/fits_sshort.c
+ M /trunk/src/fits_u.h
+ M /trunk/src/fits_uint.c
+ M /trunk/src/fits_uintmax.c
+ M /trunk/src/fits_ulong.c
+ M /trunk/src/fits_ushort.c
+ M /trunk/src/fma.c
+ M /trunk/src/fms.c
+ M /trunk/src/frac.c
+ M /trunk/src/free_cache.c
+ M /trunk/src/gamma.c
+ M /trunk/src/gammaonethird.c
+ M /trunk/src/gen_inverse.h
+ M /trunk/src/get_d.c
+ M /trunk/src/get_d64.c
+ M /trunk/src/get_exp.c
+ M /trunk/src/get_f.c
+ M /trunk/src/get_flt.c
+ M /trunk/src/get_ld.c
+ M /trunk/src/get_si.c
+ M /trunk/src/get_sj.c
+ M /trunk/src/get_str.c
+ M /trunk/src/get_ui.c
+ M /trunk/src/get_uj.c
+ M /trunk/src/get_z.c
+ M /trunk/src/get_z_exp.c
+ M /trunk/src/gmp_op.c
+ M /trunk/src/hypot.c
+ M /trunk/src/ieee_floats.h
+ M /trunk/src/init.c
+ M /trunk/src/init2.c
+ M /trunk/src/inits.c
+ M /trunk/src/inits2.c
+ M /trunk/src/inp_str.c
+ M /trunk/src/int_ceil_log2.c
+ M /trunk/src/isinf.c
+ M /trunk/src/isinteger.c
+ M /trunk/src/isnan.c
+ M /trunk/src/isnum.c
+ M /trunk/src/isqrt.c
+ M /trunk/src/isregular.c
+ M /trunk/src/iszero.c
+ M /trunk/src/jn.c
+ M /trunk/src/jyn_asympt.c
+ M /trunk/src/li2.c
+ M /trunk/src/lngamma.c
+ M /trunk/src/log.c
+ M /trunk/src/log10.c
+ M /trunk/src/log1p.c
+ M /trunk/src/log2.c
+ M /trunk/src/logging.c
+ M /trunk/src/min_prec.c
+ M /trunk/src/minmax.c
+ M /trunk/src/modf.c
+ M /trunk/src/mp_clz_tab.c
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mpf2mpfr.h
+ M /trunk/src/mpfr-gmp.c
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mpfr-longlong.h
+ M /trunk/src/mpfr-thread.h
+ M /trunk/src/mpfr.h
+ M /trunk/src/mpn_exp.c
+ M /trunk/src/mul.c
+ M /trunk/src/mul_2exp.c
+ M /trunk/src/mul_2si.c
+ M /trunk/src/mul_2ui.c
+ M /trunk/src/mul_d.c
+ M /trunk/src/mul_ui.c
+ M /trunk/src/mulders.c
+ M /trunk/src/neg.c
+ M /trunk/src/next.c
+ M /trunk/src/out_str.c
+ M /trunk/src/pow.c
+ M /trunk/src/pow_si.c
+ M /trunk/src/pow_ui.c
+ M /trunk/src/pow_z.c
+ M /trunk/src/powerof2.c
+ M /trunk/src/print_raw.c
+ M /trunk/src/print_rnd_mode.c
+ M /trunk/src/printf.c
+ M /trunk/src/rec_sqrt.c
+ M /trunk/src/reldiff.c
+ M /trunk/src/rem1.c
+ M /trunk/src/rint.c
+ M /trunk/src/root.c
+ M /trunk/src/round_near_x.c
+ M /trunk/src/round_p.c
+ M /trunk/src/round_prec.c
+ M /trunk/src/round_raw_generic.c
+ M /trunk/src/scale2.c
+ M /trunk/src/sec.c
+ M /trunk/src/sech.c
+ M /trunk/src/set.c
+ M /trunk/src/set_d.c
+ M /trunk/src/set_d64.c
+ M /trunk/src/set_dfl_prec.c
+ M /trunk/src/set_exp.c
+ M /trunk/src/set_f.c
+ M /trunk/src/set_flt.c
+ M /trunk/src/set_inf.c
+ M /trunk/src/set_ld.c
+ M /trunk/src/set_nan.c
+ M /trunk/src/set_prc_raw.c
+ M /trunk/src/set_prec.c
+ M /trunk/src/set_q.c
+ M /trunk/src/set_rnd.c
+ M /trunk/src/set_si.c
+ M /trunk/src/set_si_2exp.c
+ M /trunk/src/set_sj.c
+ M /trunk/src/set_str.c
+ M /trunk/src/set_str_raw.c
+ M /trunk/src/set_ui.c
+ M /trunk/src/set_ui_2exp.c
+ M /trunk/src/set_uj.c
+ M /trunk/src/set_z.c
+ M /trunk/src/set_z_exp.c
+ M /trunk/src/set_zero.c
+ M /trunk/src/setmax.c
+ M /trunk/src/setmin.c
+ M /trunk/src/setsign.c
+ M /trunk/src/sgn.c
+ M /trunk/src/si_op.c
+ M /trunk/src/signbit.c
+ M /trunk/src/sin.c
+ M /trunk/src/sin_cos.c
+ M /trunk/src/sinh.c
+ M /trunk/src/sinh_cosh.c
+ M /trunk/src/sqr.c
+ M /trunk/src/sqrt.c
+ M /trunk/src/sqrt_ui.c
+ M /trunk/src/stack_interface.c
+ M /trunk/src/strtofr.c
+ M /trunk/src/sub.c
+ M /trunk/src/sub1.c
+ M /trunk/src/sub1sp.c
+ M /trunk/src/sub_d.c
+ M /trunk/src/sub_ui.c
+ M /trunk/src/subnormal.c
+ M /trunk/src/sum.c
+ M /trunk/src/swap.c
+ M /trunk/src/tan.c
+ M /trunk/src/tanh.c
+ M /trunk/src/uceil_exp2.c
+ M /trunk/src/uceil_log2.c
+ M /trunk/src/ufloor_log2.c
+ M /trunk/src/ui_div.c
+ M /trunk/src/ui_pow.c
+ M /trunk/src/ui_pow_ui.c
+ M /trunk/src/ui_sub.c
+ M /trunk/src/urandom.c
+ M /trunk/src/urandomb.c
+ M /trunk/src/vasprintf.c
+ M /trunk/src/version.c
+ M /trunk/src/volatile.c
+ M /trunk/src/yn.c
+ M /trunk/src/zeta.c
+ M /trunk/src/zeta_ui.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/digamma
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/random2.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tai.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdigamma.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmin_prec.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tset_z_exp.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstdint.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/turandom.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tools/ck-version-info
+ M /trunk/tools/get_patches.sh
+ M /trunk/tune/Makefile.am
+ M /trunk/tune/bidimensional_sample.c
+ M /trunk/tune/speed.c
+ M /trunk/tune/tuneup.c
+
+Copyright notice update: added 2011 with
+ perl -pi -e 's/2010 Free Software/2010, 2011 Free Software/' **/*(^/)
+under zsh, reverting the ChangeLog file and the m4 and tools/mbench
+directories.
+------------------------------------------------------------------------
+r7388 | vlefevre | 2011-01-17 02:57:17 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Updated year in example.
+------------------------------------------------------------------------
+r7387 | vlefevre | 2011-01-17 02:51:54 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+------------------------------------------------------------------------
+r7386 | vlefevre | 2011-01-17 02:26:55 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/pow.c
+
+[src/pow.c] Added an assertion.
+------------------------------------------------------------------------
+r7385 | vlefevre | 2011-01-17 02:20:19 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/td_div.c
+
+[tests/td_div.c] Consistency change.
+------------------------------------------------------------------------
+r7384 | vlefevre | 2011-01-17 02:19:11 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tdiv_d.c
+
+[tests/tdiv_d.c] Updated test of special cases.
+------------------------------------------------------------------------
+r7383 | vlefevre | 2011-01-17 02:13:23 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/log1p.c
+
+[src/log1p.c] Added support for the division-by-zero exception.
+------------------------------------------------------------------------
+r7382 | vlefevre | 2011-01-17 02:10:32 +0000 (Mon, 17 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tlog1p.c
+
+[tests/tlog1p.c] Test the flags for special cases.
+------------------------------------------------------------------------
+r7381 | vlefevre | 2011-01-17 02:04:11 +0000 (Mon, 17 Jan 2011) | 4 lines
+Changed paths:
+ M /trunk/src/atanh.c
+ M /trunk/src/cot.c
+ M /trunk/src/coth.c
+ M /trunk/src/csc.c
+ M /trunk/src/csch.c
+ M /trunk/src/digamma.c
+ M /trunk/src/eint.c
+ M /trunk/src/gamma.c
+ M /trunk/src/lngamma.c
+ M /trunk/src/log.c
+ M /trunk/src/log10.c
+ M /trunk/src/log2.c
+
+Added support for the division-by-zero exception in functions
+mpfr_atanh, mpfr_cot, mpfr_coth, mpfr_csc, mpfr_csch,
+mpfr_digamma, mpfr_eint, mpfr_gamma, mpfr_lgamma, mpfr_lngamma,
+mpfr_log, mpfr_log2 and mpfr_log10.
+------------------------------------------------------------------------
+r7380 | lfousse | 2011-01-16 21:13:28 +0000 (Sun, 16 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgrandom.c
+
+[tests/tgrandom.c] Add missing cast for malloc.
+------------------------------------------------------------------------
+r7379 | vlefevre | 2011-01-16 14:00:34 +0000 (Sun, 16 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/yn.c
+
+[src/yn.c] Added support for the division-by-zero exception.
+------------------------------------------------------------------------
+r7378 | vlefevre | 2011-01-16 13:57:55 +0000 (Sun, 16 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Added support for the division-by-zero exception.
+------------------------------------------------------------------------
+r7377 | vlefevre | 2011-01-16 13:55:41 +0000 (Sun, 16 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/pow_si.c
+
+[src/pow_si.c] Improved robustness (in case of future changes).
+------------------------------------------------------------------------
+r7376 | vlefevre | 2011-01-16 13:51:36 +0000 (Sun, 16 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/pow.c
+ M /trunk/src/pow_si.c
+ M /trunk/src/pow_z.c
+ M /trunk/tests/tpow.c
+
+Added support for the division-by-zero exception for the power functions
+(with additional tests). (Corrected patch from Patrick.)
+------------------------------------------------------------------------
+r7375 | lfousse | 2011-01-16 00:25:40 +0000 (Sun, 16 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+ M /trunk/src/Makefile.am
+ A /trunk/src/grandom.c (from /trunk/src/urandom_gaussian.c:7374)
+ M /trunk/src/mpfr.h
+ D /trunk/src/urandom_gaussian.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tgrandom.c (from /trunk/tests/turandom_gaussian.c:7374)
+ D /trunk/tests/turandom_gaussian.c
+
+Rename mpfr_urandom_gaussian to mpfr_grandom.
+------------------------------------------------------------------------
+r7374 | vlefevre | 2011-01-15 14:33:25 +0000 (Sat, 15 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Corrections for mpfr_urandom_gaussian.
+------------------------------------------------------------------------
+r7373 | vlefevre | 2011-01-15 14:28:43 +0000 (Sat, 15 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/turandom_gaussian.c
+
+[tests/turandom_gaussian.c] Fixed C99-only code.
+------------------------------------------------------------------------
+r7372 | zimmerma | 2011-01-15 08:14:51 +0000 (Sat, 15 Jan 2011) | 5 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/TODO
+ M /trunk/doc/mpfr.texi
+ M /trunk/src/Makefile.am
+ A /trunk/src/frexp.c
+ M /trunk/src/mpfr.h
+ M /trunk/src/out_raw.c
+ M /trunk/src/urandom_gaussian.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tfrexp.c
+
+[src/frexp.c,tests/tfrexp.c] added new function mpfr_frexp
+[src/urandom_gaussian.c] fixed copyright line
+[src/out_raw.c] started writing code (work in progress, please continue if
+ you are interested)
+
+------------------------------------------------------------------------
+r7371 | lfousse | 2011-01-14 22:11:44 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Document urandom_gaussian.
+------------------------------------------------------------------------
+r7370 | lfousse | 2011-01-14 22:10:58 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] Include turandom_gaussian in tests.
+------------------------------------------------------------------------
+r7369 | lfousse | 2011-01-14 22:10:44 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ A /trunk/tests/turandom_gaussian.c
+
+[tests/turandom_gaussian.c] Add tests for urandom_gaussian.
+------------------------------------------------------------------------
+r7368 | vlefevre | 2011-01-14 19:54:38 +0000 (Fri, 14 Jan 2011) | 3 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+[tests/tdiv.c] Added consistency tests between mpfr_div, mpfr_ui_div,
+mpfr_si_div, mpfr_div_ui and mpfr_div_si (check the ternary value,
+the flags and the result of the division).
+------------------------------------------------------------------------
+r7367 | vlefevre | 2011-01-14 19:52:06 +0000 (Fri, 14 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/div_ui.c
+ M /trunk/src/ui_div.c
+
+[src/ui_div.c] Fixed prototype formatting.
+[src/div_ui.c] Fixed prototype formatting. Set division-by-zero flag.
+------------------------------------------------------------------------
+r7366 | lfousse | 2011-01-14 17:46:07 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/urandom_gaussian.c
+
+[src/urandom_gaussian.c] Fix x -> xp, and scaling.
+------------------------------------------------------------------------
+r7365 | lfousse | 2011-01-14 17:15:32 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/urandom_gaussian.c
+
+[src/urandom_gaussian.c] Pick the signs of the outputs at random.
+------------------------------------------------------------------------
+r7364 | lfousse | 2011-01-14 16:52:35 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/urandom_gaussian.c
+
+[src/urandom_gaussian.c] Fix precision of temporary results.
+------------------------------------------------------------------------
+r7363 | lfousse | 2011-01-14 16:34:48 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/urandom_gaussian.c
+
+[src/urandom_gaussian.c] Add missing inits/clears.
+------------------------------------------------------------------------
+r7360 | lfousse | 2011-01-14 15:54:39 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Declare urandom_gaussian.
+------------------------------------------------------------------------
+r7359 | lfousse | 2011-01-14 15:54:38 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/Makefile.am
+
+[src/Makefile.am] Add urandom_gaussian.c to the sources.
+------------------------------------------------------------------------
+r7358 | lfousse | 2011-01-14 15:54:37 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ A /trunk/src/urandom_gaussian.c
+
+[src/urandom_gaussian] Start work on gaussian distribution.
+------------------------------------------------------------------------
+r7357 | vlefevre | 2011-01-14 15:49:37 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Fixed code introduced in r7346, again.
+------------------------------------------------------------------------
+r7356 | zimmerma | 2011-01-14 15:48:46 +0000 (Fri, 14 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/sin_cos.c
+
+[sin_cos.c] moved macros to mpfr-impl.h, added README
+
+------------------------------------------------------------------------
+r7355 | zimmerma | 2011-01-14 15:40:49 +0000 (Fri, 14 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/sin_cos.c
+
+[sin_cos.c] new inexact flags computed by mpfr_check_range were lost
+
+------------------------------------------------------------------------
+r7354 | vlefevre | 2011-01-14 15:28:45 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Fixed code introduced in r7346.
+------------------------------------------------------------------------
+r7353 | vlefevre | 2011-01-14 15:21:45 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tools/coverage
+
+[tools/coverage] Update from Patrick.
+------------------------------------------------------------------------
+r7352 | vlefevre | 2011-01-14 15:10:42 +0000 (Fri, 14 Jan 2011) | 4 lines
+Changed paths:
+ M /trunk/src/ui_div.c
+ M /trunk/tests/tui_div.c
+
+[src/ui_div.c] Set the division-by-zero flag.
+[tests/tui_div.c] Updated and improved the test of special cases.
+Note: tpow_all currently fails since the support of the division-by-zero
+exception is not complete yet.
+------------------------------------------------------------------------
+r7351 | vlefevre | 2011-01-14 13:43:28 +0000 (Fri, 14 Jan 2011) | 3 lines
+Changed paths:
+ M /trunk/src/div.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/tdiv.c
+
+[src/div.c] Set the division-by-zero flag.
+[tests/tdiv.c, tests/td_div.c] Updated and improved the test of special
+cases.
+------------------------------------------------------------------------
+r7348 | vlefevre | 2011-01-14 11:44:41 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tset.c
+
+[tests/tset.c] Tests didn't fail in case of error from PRINT_ERROR_IF.
+------------------------------------------------------------------------
+r7347 | vlefevre | 2011-01-14 11:37:11 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Added comments.
+------------------------------------------------------------------------
+r7346 | vlefevre | 2011-01-14 11:35:27 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tests/tgeneric.c] Check the division-by-zero flag.
+------------------------------------------------------------------------
+r7345 | vlefevre | 2011-01-14 11:10:43 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+Improved tests/texceptions.c (mpfr_clear_*, mpfr_set_*).
+------------------------------------------------------------------------
+r7344 | vlefevre | 2011-01-14 11:03:30 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/exceptions.c
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mpfr.h
+ M /trunk/tests/texceptions.c
+
+Added support for the division-by-zero exception.
+------------------------------------------------------------------------
+r7343 | vlefevre | 2011-01-14 10:54:28 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/exceptions.c
+
+[src/exceptions.c] Fixed bad #undef's (with currently no consequences).
+------------------------------------------------------------------------
+r7342 | zimmerma | 2011-01-14 10:49:44 +0000 (Fri, 14 Jan 2011) | 3 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] removed item about inlined mpfr_neg: Patrick Pelissier tried it but it
+ does not speed things
+
+------------------------------------------------------------------------
+r7341 | vlefevre | 2011-01-14 10:47:04 +0000 (Fri, 14 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Removed an obsolete comment.
+------------------------------------------------------------------------
+r7338 | lfousse | 2011-01-13 18:39:57 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/atan2.c
+
+[src/atan2.c] "Exact" division can be inexact because of the exponent range.
+------------------------------------------------------------------------
+r7337 | zimmerma | 2011-01-13 18:14:26 +0000 (Thu, 13 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/out_raw.c
+
+[out_raw.c] exchanged bits for precision and exponent
+
+------------------------------------------------------------------------
+r7336 | zimmerma | 2011-01-13 18:13:39 +0000 (Thu, 13 Jan 2011) | 2 lines
+Changed paths:
+ A /trunk/src/out_raw.c
+
+[out_raw.c] first proposal for external format
+
+------------------------------------------------------------------------
+r7334 | vlefevre | 2011-01-13 17:05:35 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] MPFR_IS_POWER_OF_2: added parentheses.
+------------------------------------------------------------------------
+r7333 | lfousse | 2011-01-13 16:24:48 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tatan.c
+
+Add tests for special case of atan2 (x power of 2).
+------------------------------------------------------------------------
+r7332 | lfousse | 2011-01-13 16:24:41 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/atan2.c
+
+Add special case for atan2(x,y) when x is a power of 2.
+------------------------------------------------------------------------
+r7331 | lfousse | 2011-01-13 16:24:35 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+New macro MPFR_IS_POWER_OF_2.
+------------------------------------------------------------------------
+r7329 | vlefevre | 2011-01-13 16:20:48 +0000 (Thu, 13 Jan 2011) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/NEWS
+ M /trunk/acinclude.m4
+ M /trunk/configure.ac
+
+TLS support is now detected automatically. If TLS is supported, MPFR is
+built as thread safe by default. To disable TLS explicitly, configure
+MPFR with --disable-thread-safe.
+------------------------------------------------------------------------
+r7328 | lfousse | 2011-01-13 15:50:37 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tai.c
+
+Add tests for mpfr_ai special case x=0.
+------------------------------------------------------------------------
+r7327 | lfousse | 2011-01-13 15:50:30 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/ai.c
+
+Add special case for x=0 in mpfr_ai1.
+------------------------------------------------------------------------
+r7325 | zimmerma | 2011-01-13 15:38:23 +0000 (Thu, 13 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/doc/algorithms.tex
+
+[algorithms.tex] extended Lemma 2 to the case of terms of the form 1/(1+delta)
+
+------------------------------------------------------------------------
+r7323 | vlefevre | 2011-01-13 15:27:13 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tstdint.c
+ M /trunk/tests/tvalist.c
+
+tests: return 77 for skipped tests (see GNU Automake manual).
+------------------------------------------------------------------------
+r7322 | vlefevre | 2011-01-13 15:20:24 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+------------------------------------------------------------------------
+r7321 | vlefevre | 2011-01-13 15:19:32 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+TODO update after r7317 and r7320.
+------------------------------------------------------------------------
+r7320 | vlefevre | 2011-01-13 15:17:16 +0000 (Thu, 13 Jan 2011) | 3 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tvalist.c
+
+Support multiple inclusions of mpfr.h w.r.t. <stdio.h> and <stdarg.h>
+(MPFR_USE_FILE and/or MPFR_USE_VA_LIST are needed until GMP is fixed).
+Added test "tests/tvalist.c".
+------------------------------------------------------------------------
+r7319 | zimmerma | 2011-01-13 14:46:07 +0000 (Thu, 13 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-longlong.h
+
+[src/mpfr-longlong.h] idem as previous commit for other 2 FIXME's
+
+------------------------------------------------------------------------
+r7318 | zimmerma | 2011-01-13 14:43:29 +0000 (Thu, 13 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-longlong.h
+
+[mpfr-longlong.h] resolved one FIXME, by adding a new one :-)
+
+------------------------------------------------------------------------
+r7317 | vlefevre | 2011-01-13 14:42:53 +0000 (Thu, 13 Jan 2011) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+ M /trunk/tests/Makefile.am
+
+Support multiple inclusions of mpfr.h w.r.t. <stdint.h> / <inttypes.h>.
+------------------------------------------------------------------------
+r7314 | zimmerma | 2011-01-06 16:53:07 +0000 (Thu, 06 Jan 2011) | 2 lines
+Changed paths:
+ M /trunk/tools/mbench/mfv5-mpfr.cc
+ M /trunk/tools/mbench/mfv5.cc
+ M /trunk/tools/mbench/mfv5.h
+
+another patch from Patrick Pelissier to test get_ld (with export of data used)
+
+------------------------------------------------------------------------
+r7313 | zimmerma | 2011-01-06 16:44:13 +0000 (Thu, 06 Jan 2011) | 6 lines
+Changed paths:
+ M /trunk/tools/mbench/Makefile
+ M /trunk/tools/mbench/timp.h
+
+patch from Patrick Pelissier to use clock_getime instead of rdtsc
+(use "make rt" instead of "make")
+References:
+http://stackoverflow.com/questions/3388134/rdtsc-accuracy-across-cpu-cores
+http://en.wikipedia.org/wiki/Time_Stamp_Counter
+
+------------------------------------------------------------------------
+r7312 | vlefevre | 2010-12-25 17:24:58 +0000 (Sat, 25 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/get_ld.c
+
+[src/get_ld.c] Updated a comment about the last change.
+------------------------------------------------------------------------
+r7311 | vlefevre | 2010-12-25 17:08:16 +0000 (Sat, 25 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/get_ld.c
+
+[src/get_ld.c] Minor performance improvement.
+------------------------------------------------------------------------
+r7310 | vlefevre | 2010-12-19 02:00:52 +0000 (Sun, 19 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/tools/mbench/Makefile
+
+[tools/mbench/Makefile] Update due to source reorganization (r7087):
+patch from Patrick Pelissier.
+------------------------------------------------------------------------
+r7309 | vlefevre | 2010-12-17 16:29:47 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+[TODO] Update (exp-int branch, internal macro).
+------------------------------------------------------------------------
+r7308 | vlefevre | 2010-12-17 16:22:37 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/sin.c
+
+[src/sin.c] Fixed failure in debug mode (missing MPFR_IS_ZERO test).
+------------------------------------------------------------------------
+r7307 | vlefevre | 2010-12-17 16:08:54 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Improved comment.
+------------------------------------------------------------------------
+r7305 | zimmerma | 2010-12-17 15:54:55 +0000 (Fri, 17 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[rec_sqrt.c] put back some information lost in commit 7302
+
+------------------------------------------------------------------------
+r7304 | vlefevre | 2010-12-17 15:31:24 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/cmp2.c
+
+[src/cmp2.c] Corrected a comment.
+------------------------------------------------------------------------
+r7303 | vlefevre | 2010-12-17 15:25:04 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/cos.c
+ M /trunk/src/sin.c
+ M /trunk/src/zeta.c
+
+Replaced some MPFR_EXP by MPFR_GET_EXP.
+------------------------------------------------------------------------
+r7302 | vlefevre | 2010-12-17 13:15:46 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/rec_sqrt.c
+
+[src/rec_sqrt.c] Removed a variable that was used only once.
+------------------------------------------------------------------------
+r7301 | vlefevre | 2010-12-17 11:40:51 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Changed comment for mpfrlint.
+------------------------------------------------------------------------
+r7300 | vlefevre | 2010-12-17 11:38:36 +0000 (Fri, 17 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/src/add1.c
+ M /trunk/src/add1sp.c
+ M /trunk/src/div.c
+ M /trunk/src/div_ui.c
+ M /trunk/src/get_str.c
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mpn_exp.c
+ M /trunk/src/mul.c
+ M /trunk/src/mul_ui.c
+ M /trunk/src/mulders.c
+ M /trunk/src/rec_sqrt.c
+ M /trunk/src/round_prec.c
+ M /trunk/src/set_f.c
+ M /trunk/src/sqr.c
+ M /trunk/src/sqrt.c
+ M /trunk/src/strtofr.c
+ M /trunk/src/sub1.c
+ M /trunk/src/sub1sp.c
+ M /trunk/tools/mpfrlint
+
+Added MPFR_TMP_LIMBS_ALLOC macro and updated the source to use it.
+tools/mpfrlint: check its use instead of MPFR_TMP_ALLOC.
+------------------------------------------------------------------------
+r7299 | vlefevre | 2010-12-17 11:31:08 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/sum.c
+
+[src/sum.c] Improved readability.
+------------------------------------------------------------------------
+r7298 | vlefevre | 2010-12-17 09:40:03 +0000 (Fri, 17 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Formatting.
+------------------------------------------------------------------------
+r7297 | vlefevre | 2010-12-14 14:36:06 +0000 (Tue, 14 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+[TODO] Added year on a date (the item was added on 2007-07-28 in r4707).
+------------------------------------------------------------------------
+r7296 | vlefevre | 2010-12-13 00:02:38 +0000 (Mon, 13 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/src
+
+Added configure.lineno (generated by configure) to the svn:ignore
+property of the src directory.
+------------------------------------------------------------------------
+r7295 | vlefevre | 2010-12-12 23:39:43 +0000 (Sun, 12 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Update concerning the --with-gmp-build configure option.
+------------------------------------------------------------------------
+r7294 | vlefevre | 2010-12-12 23:36:38 +0000 (Sun, 12 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Corrected a typo from r7293.
+------------------------------------------------------------------------
+r7293 | vlefevre | 2010-12-12 23:35:04 +0000 (Sun, 12 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Updated INSTALL file after the recent changes in configure.ac concerning
+the --with-gmp-build configure option.
+------------------------------------------------------------------------
+r7292 | vlefevre | 2010-12-12 23:29:50 +0000 (Sun, 12 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] With --with-gmp-build, do not duplicate the include
+search paths if the GMP source and build directories are the same.
+------------------------------------------------------------------------
+r7291 | vlefevre | 2010-12-12 22:31:51 +0000 (Sun, 12 Dec 2010) | 3 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Fixed another bug in r7289. This new version now seems
+to work with GMP's srcdir pointing to a relative directory or to an
+absolute one.
+------------------------------------------------------------------------
+r7290 | vlefevre | 2010-12-12 22:28:53 +0000 (Sun, 12 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Fixed bug in r7289.
+------------------------------------------------------------------------
+r7289 | vlefevre | 2010-12-12 22:17:16 +0000 (Sun, 12 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Corrected Patrick Pelissier's patch (not tested).
+------------------------------------------------------------------------
+r7288 | zimmerma | 2010-12-12 20:47:23 +0000 (Sun, 12 Dec 2010) | 4 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] patch from Patrick Pelissier to solve the problem with
+ --with-gmp-build when the GMP build directory and the GMP
+ source directory differ
+
+------------------------------------------------------------------------
+r7287 | vlefevre | 2010-12-12 11:02:00 +0000 (Sun, 12 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] tversion is also run at the end (after a discussion
+with Patrick and Paul).
+------------------------------------------------------------------------
+r7286 | vlefevre | 2010-12-12 09:55:44 +0000 (Sun, 12 Dec 2010) | 4 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Fixed two problems with --with-gmp-build:
+ * "grep -w" isn't POSIX (an error shouldn't matter with recent GMP
+ versions, as CFLAGS and CC would then be retrieved from gmp.h).
+ * "sed" was used instead of "$SED".
+------------------------------------------------------------------------
+r7279 | vlefevre | 2010-12-07 13:59:45 +0000 (Tue, 07 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Added a section "If 'gmp.h' and 'libgmp' do not match".
+------------------------------------------------------------------------
+r7278 | vlefevre | 2010-12-07 12:51:14 +0000 (Tue, 07 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Improved warning message in case of unmatched 'gmp.h'
+and 'libgmp'.
+------------------------------------------------------------------------
+r7277 | vlefevre | 2010-12-07 11:41:09 +0000 (Tue, 07 Dec 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Update concerning "configure".
+------------------------------------------------------------------------
+r7276 | zimmerma | 2010-12-06 20:54:14 +0000 (Mon, 06 Dec 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] fixed news for 3.0.0
+
+------------------------------------------------------------------------
+r7275 | vlefevre | 2010-12-03 08:55:24 +0000 (Fri, 03 Dec 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+[tests/tversion.c] Now fail if the versions of gmp.h and libgmp do not
+match (error message improved); previously, the warning could remain
+unnoticed, in particular with automatic installations.
+------------------------------------------------------------------------
+r7274 | schevill | 2010-11-30 16:41:38 +0000 (Tue, 30 Nov 2010) | 3 lines
+Changed paths:
+ A /trunk/tools/metaMPFR
+ A /trunk/tools/metaMPFR/metaMPFR_common.mpl
+ A /trunk/tools/metaMPFR/metaMPFR_straightforwardAlgo.mpl
+ A /trunk/tools/metaMPFR/metaMPFR_tests.mpl
+
+Added metaMPFR in the tools directory of MPFR.
+
+
+------------------------------------------------------------------------
+r7273 | vlefevre | 2010-11-29 15:35:52 +0000 (Mon, 29 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Defined MPFR_DEPRECATED to mark MPFR functions, types
+or variables as deprecated.
+------------------------------------------------------------------------
+r7272 | vlefevre | 2010-11-25 07:52:24 +0000 (Thu, 25 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+[tests/tui_pow.c] Updated a comment.
+------------------------------------------------------------------------
+r7271 | vlefevre | 2010-11-23 08:28:00 +0000 (Tue, 23 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Support BSD sed.
+------------------------------------------------------------------------
+r7270 | vlefevre | 2010-11-19 08:53:09 +0000 (Fri, 19 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Detect the use of __mpfr_struct structure members
+in .c files.
+------------------------------------------------------------------------
+r7269 | vlefevre | 2010-11-19 08:46:38 +0000 (Fri, 19 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/src/min_prec.c
+
+[src/min_prec.c] Replaced x->_mpfr_d by MPFR_MANT(x).
+------------------------------------------------------------------------
+r7268 | vlefevre | 2010-11-18 23:41:50 +0000 (Thu, 18 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Commented out the declaration of mpfr_round_raw_3
+(since this function is no longer defined).
+------------------------------------------------------------------------
+r7267 | vlefevre | 2010-11-18 23:20:59 +0000 (Thu, 18 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/src/min_prec.c
+
+[src/min_prec.c] Major simplification of mpfr_min_prec by using
+mpn_scan1 (suggestion by Andreas Enge).
+------------------------------------------------------------------------
+r7266 | vlefevre | 2010-11-15 15:20:03 +0000 (Mon, 15 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Added a comment about mpn_sqr_n.
+------------------------------------------------------------------------
+r7265 | zimmerma | 2010-11-15 13:56:51 +0000 (Mon, 15 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/algorithms.tex
+
+[algorithms.tex] replaced reference to Graillat05 by earlier one (Higham02)
+
+------------------------------------------------------------------------
+r7263 | vlefevre | 2010-11-12 11:38:42 +0000 (Fri, 12 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/tools/nightly-test
+
+[tools/nightly-test] Added a comment about the use of -pedantic-errors.
+------------------------------------------------------------------------
+r7262 | vlefevre | 2010-11-10 23:17:02 +0000 (Wed, 10 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/src/sub1.c
+
+[src/sub1.c] Minor simplification.
+------------------------------------------------------------------------
+r7261 | vlefevre | 2010-11-10 22:48:27 +0000 (Wed, 10 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+[tests/tpow.c] Avoid warnings if mpfr_exp_t < long.
+------------------------------------------------------------------------
+r7260 | zimmerma | 2010-11-10 20:17:17 +0000 (Wed, 10 Nov 2010) | 3 lines
+Changed paths:
+ M /trunk/src/mul.c
+
+[mul.c] fixed bug introduced in revision 7183, and reported by Brian Gladman
+ on Windows, where mpfr_exp_t has 32 bits and mpfr_limb_t has 64 bits
+
+------------------------------------------------------------------------
+r7257 | vlefevre | 2010-11-09 14:24:34 +0000 (Tue, 09 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Use only mpfr_* types in __MPFR_EXP_* macro definitions
+(should have been done in r7236).
+------------------------------------------------------------------------
+r7255 | vlefevre | 2010-11-09 13:43:29 +0000 (Tue, 09 Nov 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Changed a "void" into a "mpfr_void" in a macro definition
+(should have been done in r7236).
+------------------------------------------------------------------------
+r7254 | vlefevre | 2010-11-09 12:37:23 +0000 (Tue, 09 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+[tests/tset_si.c] Added testcase for problem fixed in r7236.
+------------------------------------------------------------------------
+r7251 | vlefevre | 2010-11-08 13:22:04 +0000 (Mon, 08 Nov 2010) | 3 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Removed some useless casts that where added in r7121 and
+r7236 (such casts prevented the compiler from emitting diagnostics in
+incorrect calls).
+------------------------------------------------------------------------
+r7250 | vlefevre | 2010-11-08 12:55:16 +0000 (Mon, 08 Nov 2010) | 1 line
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] Added a comment (warning about LOADLIBES).
+------------------------------------------------------------------------
+r7247 | zimmerma | 2010-10-25 13:53:16 +0000 (Mon, 25 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/taway.c
+
+[taway.c] reduced time of the test
+
+------------------------------------------------------------------------
+r7246 | vlefevre | 2010-10-25 10:00:45 +0000 (Mon, 25 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/NEWS
+
+Mentioned --enable-gmp-internals in INSTALL and NEWS.
+------------------------------------------------------------------------
+r7244 | vlefevre | 2010-10-24 13:27:47 +0000 (Sun, 24 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/tests/taway.c
+
+[tests/taway.c] Added a FIXME (test is too long on old machines).
+------------------------------------------------------------------------
+r7243 | vlefevre | 2010-10-24 12:41:01 +0000 (Sun, 24 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Corrected comment for PowerPC.
+------------------------------------------------------------------------
+r7242 | zimmerma | 2010-10-24 08:01:49 +0000 (Sun, 24 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/src/Makefile.am
+ A /trunk/src/hppa
+ A /trunk/src/hppa/mparam.h
+ M /trunk/src/mparam_h.in
+
+added tuning parameters for HPPA (on HP-UX machine kindly provided by David
+Kirkby)
+
+------------------------------------------------------------------------
+r7241 | zimmerma | 2010-10-23 16:45:32 +0000 (Sat, 23 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/src/powerpc32/mparam.h
+
+[powerpc32/mparam.h] added more info on processor and operating system used
+
+------------------------------------------------------------------------
+r7240 | zimmerma | 2010-10-23 09:18:12 +0000 (Sat, 23 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/src/Makefile.am
+ M /trunk/src/mparam_h.in
+
+needed stuff to use src/powerpc32/mparam.h file
+(note that long double is IEEE double on PowerPC32)
+
+------------------------------------------------------------------------
+r7239 | zimmerma | 2010-10-23 09:07:33 +0000 (Sat, 23 Oct 2010) | 2 lines
+Changed paths:
+ A /trunk/src/powerpc32
+ A /trunk/src/powerpc32/mparam.h
+
+[powerpc32/mparam.h] param file for powerpc32 (made on PowerPC 604 under AIX)
+
+------------------------------------------------------------------------
+r7238 | zimmerma | 2010-10-22 14:54:43 +0000 (Fri, 22 Oct 2010) | 5 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] added cast from time_t to long, after warning under HP-UX:
+tuneup.c:1131: warning: format '%ld' expects type 'long int', but argument 3 has type 'time_t'
+tuneup.c:1133: warning: format '%ld' expects type 'long int', but argument 2 has type 'time_t'
+(I don't know if it is because time_t is unsigned, or has a different width)
+
+------------------------------------------------------------------------
+r7237 | vlefevre | 2010-10-22 13:30:50 +0000 (Fri, 22 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Added a space.
+------------------------------------------------------------------------
+r7236 | vlefevre | 2010-10-22 13:27:59 +0000 (Fri, 22 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Avoid some problems with macro expansion if the user
+defines macros with the same name as keywords.
+[doc/mpfr.texi] Document the use of macros.
+------------------------------------------------------------------------
+r7235 | schevill | 2010-10-22 10:10:37 +0000 (Fri, 22 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/src/Makefile.am
+
+Included the new /arch/mparam.h files into the dist.
+
+
+------------------------------------------------------------------------
+r7231 | schevill | 2010-10-20 16:08:04 +0000 (Wed, 20 Oct 2010) | 6 lines
+Changed paths:
+ M /trunk/src/amd/athlon/mparam.h
+ M /trunk/src/amd/k8/mparam.h
+ M /trunk/src/arm/mparam.h
+ M /trunk/src/ia64/mparam.h
+ M /trunk/src/mparam_h.in
+ M /trunk/src/powerpc64/mparam.h
+ M /trunk/src/sparc64/mparam.h
+ M /trunk/src/x86/core2/mparam.h
+ M /trunk/src/x86/mparam.h
+ M /trunk/src/x86_64/core2/mparam.h
+ M /trunk/src/x86_64/pentium4/mparam.h
+ M /trunk/tune/tuneup.c
+
+Cosmetic change: the constant MPFR_TUNE_CASE is now defined in mparam_h.in.
+Hence the files src/some-architecture/mparam.h are now simply obtained by
+performing 'make tune' on some architecture and copying the resulting
+src/mparam.h to src/some-architecture/mparam.h.
+
+
+------------------------------------------------------------------------
+r7230 | schevill | 2010-10-20 13:16:51 +0000 (Wed, 20 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+Typo.
+
+
+------------------------------------------------------------------------
+r7229 | schevill | 2010-10-20 11:40:52 +0000 (Wed, 20 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/src/amd/athlon/mparam.h
+ M /trunk/src/amd/k8/mparam.h
+ M /trunk/src/arm/mparam.h
+ M /trunk/src/ia64/mparam.h
+ M /trunk/src/mparam_h.in
+ M /trunk/src/powerpc64/mparam.h
+ M /trunk/src/sparc64/mparam.h
+ M /trunk/src/x86/core2/mparam.h
+ M /trunk/src/x86/mparam.h
+ M /trunk/src/x86_64/core2/mparam.h
+ M /trunk/src/x86_64/pentium4/mparam.h
+ M /trunk/tune/tuneup.c
+
+Up-to-date thresholds.
+
+
+------------------------------------------------------------------------
+r7228 | vlefevre | 2010-10-20 01:23:23 +0000 (Wed, 20 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tsub.c
+
+[tests/tsub.c] mp_prec_t -> mpfr_prec_t
+------------------------------------------------------------------------
+r7227 | vlefevre | 2010-10-20 01:22:38 +0000 (Wed, 20 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/src/sub1.c
+
+[src/sub1.c] Removed trailing spaces.
+------------------------------------------------------------------------
+r7226 | vlefevre | 2010-10-19 16:21:41 +0000 (Tue, 19 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_z_exp.c
+ M /trunk/tests/tsprintf.c
+
+[tests/*.c] Support the case where mpfr_exp_t is not a long int
+(but with such a future extension, one should probably provide
+a MPFR_PRIexp macro, similar to what <inttypes.h> does).
+------------------------------------------------------------------------
+r7225 | vlefevre | 2010-10-19 15:56:24 +0000 (Tue, 19 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+[tests/texceptions.c] Added casts, in case mpfr_exp_t is not a long int.
+------------------------------------------------------------------------
+r7224 | zimmerma | 2010-10-19 15:03:32 +0000 (Tue, 19 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+[tset_ld.c] replaced hexadecimal long double constants by decimal constants
+
+------------------------------------------------------------------------
+r7223 | vlefevre | 2010-10-19 14:43:12 +0000 (Tue, 19 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+[tests/tset_ld.c] Added a FIXME for r7222 change.
+------------------------------------------------------------------------
+r7222 | zimmerma | 2010-10-19 14:22:09 +0000 (Tue, 19 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/src/set_ld.c
+ M /trunk/tests/tset_ld.c
+
+[set_ld.c] fixed bug #11300 on bug tracker
+[tset_ld.c] added corresponding tests
+
+------------------------------------------------------------------------
+r7221 | zimmerma | 2010-10-19 12:24:21 +0000 (Tue, 19 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/algorithms.tex
+
+[algorithms.tex] modified proof of mpfr_sub in accordance with source code
+
+------------------------------------------------------------------------
+r7220 | zimmerma | 2010-10-19 12:06:00 +0000 (Tue, 19 Oct 2010) | 13 lines
+Changed paths:
+ A /trunk/doc/sub_tree.pdf
+
+this is a tree of all possible cases that can happen for rounding in mpfr_sub
+(file sub1.c) for rounding to nearest.
+
+The nodes at depth 1 of the tree correspond to the 3 possible cases before
+rounding: (1) sh=0, (2) sh>0 and the low sh bits are 1/2 ulp, (3) sh>0 and
+the low sh bits are 0.
+
+The nodes at depth 2 represent the possible subcases for k=0 in the rounding
+loop.
+
+The nodes at depth 3 represent the possible subcases for k=1 in the rounding
+loop.
+
+------------------------------------------------------------------------
+r7219 | zimmerma | 2010-10-19 11:12:07 +0000 (Tue, 19 Oct 2010) | 7 lines
+Changed paths:
+ M /trunk/src/sub1.c
+ M /trunk/tests/tsub.c
+
+[src/sub1.c] fixed another remaining issue in case 1d1
+ (case sh=0, i.e., the result uses a full number of limbs,
+ the first neglected limbs of b and c match,
+ and for the next limbs, low(b) > low(c)).
+ This case was incorrectly rounded up (add_one_ulp).
+[tests/tsub.c] added more test cases
+
+------------------------------------------------------------------------
+r7218 | zimmerma | 2010-10-19 11:06:38 +0000 (Tue, 19 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tgmpop.c] in case of error, print mpz_t in decimal instead of binary
+
+------------------------------------------------------------------------
+r7217 | zimmerma | 2010-10-19 06:36:56 +0000 (Tue, 19 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] increase maximal number of calls to speed_measure from 5 to 30
+ (seems to solve problems on gcc15)
+
+------------------------------------------------------------------------
+r7215 | vlefevre | 2010-10-18 23:51:35 +0000 (Mon, 18 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tcan_round.c
+
+[tests/tcan_round.c] Removed an incorrect cast, fixing a bug (in the
+test) that was producing a failure for GMP_CHECK_RANDOMIZE=1287710095
+on 64-bit machines (visible since mpfr_prec_t is now signed).
+------------------------------------------------------------------------
+r7214 | vlefevre | 2010-10-18 22:21:33 +0000 (Mon, 18 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/src/sub1.c
+
+[src/sub1.c] Removed trailing whitespace.
+------------------------------------------------------------------------
+r7213 | zimmerma | 2010-10-18 21:02:22 +0000 (Mon, 18 Oct 2010) | 4 lines
+Changed paths:
+ M /trunk/src/sub1.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tsub.c
+
+[sub1.c] previous fix was not incorrect (but strangely our tests cases did
+ not exhibit that)
+[tfma.c] added more test cases from Jakub Jelinek
+
+------------------------------------------------------------------------
+r7212 | zimmerma | 2010-10-18 18:54:56 +0000 (Mon, 18 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/src/sub1.c
+
+[sub1.c] fixed bug found by Jakub Jelinek (#11301 on tracker)
+
+------------------------------------------------------------------------
+r7211 | vlefevre | 2010-10-18 17:17:11 +0000 (Mon, 18 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7209 | vlefevre | 2010-10-18 16:16:39 +0000 (Mon, 18 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tsub.c
+
+[tests/tsub.c] Fixed inex test in bug20101017.
+------------------------------------------------------------------------
+r7208 | schevill | 2010-10-18 14:14:49 +0000 (Mon, 18 Oct 2010) | 9 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Mention the warning message displayed by gcc when the ABI of gcc and MPFR
+differ.
+
+Note: the message does not automatically imply the problem; however, if the
+message appears, the ABI somehow differ, so it is worth mentioning it.
+Users might look for the message in INSTALL in order to see if their problem is
+mentioned.
+
+
+------------------------------------------------------------------------
+r7206 | zimmerma | 2010-10-18 13:01:12 +0000 (Mon, 18 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added "Notes about ABI" section
+
+------------------------------------------------------------------------
+r7205 | vlefevre | 2010-10-18 12:18:11 +0000 (Mon, 18 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tsub.c
+
+[tests/tsub.c] Updated comment of bug20101017.
+------------------------------------------------------------------------
+r7204 | vlefevre | 2010-10-18 11:59:39 +0000 (Mon, 18 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+[tests/tsub.c] Added testcase for bug found by Jakub Jelinek
+(bug 11301 on INRIAGforge).
+------------------------------------------------------------------------
+r7203 | zimmerma | 2010-10-18 09:41:37 +0000 (Mon, 18 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] print size when speed_measure fails
+
+------------------------------------------------------------------------
+r7202 | zimmerma | 2010-10-17 19:33:37 +0000 (Sun, 17 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[mpfr.texi] added that the 'N' mode rounds ties to even in the mpfr*printf
+ functions
+
+------------------------------------------------------------------------
+r7201 | schevill | 2010-10-15 15:18:18 +0000 (Fri, 15 Oct 2010) | 4 lines
+Changed paths:
+ A /trunk/src/amd
+ A /trunk/src/amd/athlon
+ A /trunk/src/amd/athlon/mparam.h
+ A /trunk/src/amd/k8
+ A /trunk/src/amd/k8/mparam.h
+ A /trunk/src/arm
+ A /trunk/src/arm/mparam.h
+ M /trunk/src/buildopt.c
+ A /trunk/src/generic
+ A /trunk/src/generic/mparam.h
+ A /trunk/src/ia64
+ A /trunk/src/ia64/mparam.h
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mpfr.h
+ A /trunk/src/powerpc64
+ A /trunk/src/powerpc64/mparam.h
+ A /trunk/src/sparc64
+ A /trunk/src/sparc64/mparam.h
+ A /trunk/src/x86
+ A /trunk/src/x86/core2
+ A /trunk/src/x86/core2/mparam.h
+ A /trunk/src/x86/mparam.h
+ A /trunk/src/x86_64
+ A /trunk/src/x86_64/core2
+ A /trunk/src/x86_64/core2/mparam.h
+ A /trunk/src/x86_64/pentium4
+ A /trunk/src/x86_64/pentium4/mparam.h
+ M /trunk/tune/tuneup.c
+
+Reorganized mparam_h.in in separate files.
+Added mpfr_buildopt_tune_case function.
+
+
+------------------------------------------------------------------------
+r7200 | schevill | 2010-10-14 15:31:16 +0000 (Thu, 14 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+Modified the number of iterations in the loop of mpfr_speed_measure.
+
+
+------------------------------------------------------------------------
+r7199 | zimmerma | 2010-10-14 10:55:09 +0000 (Thu, 14 Oct 2010) | 4 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] new function mpfr_speed_measure, which calls speed_measure() several
+ times (currently 30) until there is no failure.
+ In case all 30 calls fail, give some hints to the user.
+
+------------------------------------------------------------------------
+r7198 | zimmerma | 2010-10-13 19:58:28 +0000 (Wed, 13 Oct 2010) | 5 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] try again when speed_measure returns -1.0 (i.e. fails)
+ also check return value of speed_measure in all cases
+ (was not done for mulhigh, sqrhigh and divhigh, reported
+ by Sylvain Chevillard)
+
+------------------------------------------------------------------------
+r7197 | schevill | 2010-10-12 15:39:21 +0000 (Tue, 12 Oct 2010) | 3 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+Small indication explaining what is the negative threshold for Ai.
+
+
+------------------------------------------------------------------------
+r7196 | vlefevre | 2010-10-10 20:48:51 +0000 (Sun, 10 Oct 2010) | 4 lines
+Changed paths:
+ M /trunk/src/add1.c
+ M /trunk/src/mpfr-impl.h
+
+[src/mpfr-impl.h] Added MPFR_UEXP macro to check (in debug mode) that
+a value is nonnegative before a cast to mpfr_uexp_t.
+[src/add1.c] Use the MPFR_UEXP macro to make sure that the avoided
+warning doesn't hide a real bug.
+------------------------------------------------------------------------
+r7195 | zimmerma | 2010-10-10 17:28:05 +0000 (Sun, 10 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tsprintf.c
+
+avoid several compiler warnings with g++
+
+------------------------------------------------------------------------
+r7194 | zimmerma | 2010-10-10 17:00:18 +0000 (Sun, 10 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tools/nightly-test
+
+[nightly-test] added -Wno-sign-compare for g++, to avoid spurious warnings
+
+------------------------------------------------------------------------
+r7193 | zimmerma | 2010-10-10 09:04:53 +0000 (Sun, 10 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/tools/nightly-test
+
+[nightly-test] do not use -Wmissing-prototypes for g++
+
+------------------------------------------------------------------------
+r7192 | zimmerma | 2010-10-10 08:54:37 +0000 (Sun, 10 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/src/add1.c
+
+[add1.c] fixed compiler warning (from g++)
+
+------------------------------------------------------------------------
+r7191 | zimmerma | 2010-10-08 18:29:16 +0000 (Fri, 08 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] fixed comment
+
+------------------------------------------------------------------------
+r7189 | zimmerma | 2010-10-03 07:39:44 +0000 (Sun, 03 Oct 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+ M /trunk/src/sqrt.c
+
+[sqrt.c,mulders.c] added missing cast (detected by nightly builds with g++)
+
+------------------------------------------------------------------------
+r7188 | vlefevre | 2010-10-01 15:58:44 +0000 (Fri, 01 Oct 2010) | 1 line
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] Untabified.
+------------------------------------------------------------------------
+r7187 | zimmerma | 2010-09-30 19:14:00 +0000 (Thu, 30 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] fixed comments about error analysis in short product,
+ and improved short division code
+
+------------------------------------------------------------------------
+r7186 | vlefevre | 2010-09-30 16:46:23 +0000 (Thu, 30 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mul.c
+ M /trunk/tune/tuneup.c
+
+Removed trailing spaces and untabified several files.
+------------------------------------------------------------------------
+r7185 | vlefevre | 2010-09-30 16:40:04 +0000 (Thu, 30 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/mul.c
+
+[src/mul.c] Added comments concerning the latest changes about mulhigh.
+------------------------------------------------------------------------
+r7184 | zimmerma | 2010-09-30 07:10:37 +0000 (Thu, 30 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] removed leftover debug stuff
+
+------------------------------------------------------------------------
+r7183 | zimmerma | 2010-09-29 16:03:04 +0000 (Wed, 29 Sep 2010) | 11 lines
+Changed paths:
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/mul.c
+ M /trunk/src/mulders.c
+ M /trunk/src/round_p.c
+ M /trunk/src/sqrt.c
+ M /trunk/tune/tuneup.c
+
+[src/mulders.c] added new function mpfr_divhigh_n() for short division
+ (not used yet), fixed comments and added error analysis
+ in mpfr_mulhigh_n() and mpfr_sqrhigh_n()
+[src/sqrt.c] fixed ill-placed MPFR_TMP_MARK
+[src/mparam_h.in] added default MPFR_DIVHIGH_TAB for mpfr_divhigh_n()
+[src/round_p.c] typo
+[src/mpfr-impl.h] added prototype for mpfr_divhigh_n
+[src/mul.c] added comment, simplified code
+[tune/tuneup.c] added tuning for mpfr_divhigh_n(), increased MAX_STEPS to get
+ a better tuning (will take longer), set tolerance to 1.0
+
+------------------------------------------------------------------------
+r7182 | zimmerma | 2010-09-29 13:15:33 +0000 (Wed, 29 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/configure.ac
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/sqrt.c
+
+added new option --enable-gmp-internals to use GMP undocumented function
+(at user's own risk). So far only mpn_rootrem is used in mpfr_sqrt.
+
+------------------------------------------------------------------------
+r7181 | zimmerma | 2010-09-29 10:07:00 +0000 (Wed, 29 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/README.dev
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/sqrt.c
+
+[doc/README.dev] added comment about mpn_rootrem
+
+------------------------------------------------------------------------
+r7180 | vlefevre | 2010-09-28 23:09:34 +0000 (Tue, 28 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] Added a FIXME note about incorrect use of an internal
+GMP symbol (__gmpn_rootrem).
+------------------------------------------------------------------------
+r7179 | zimmerma | 2010-09-28 15:40:36 +0000 (Tue, 28 Sep 2010) | 4 lines
+Changed paths:
+ M /trunk/src/sqrt.c
+
+[src/sqrt.c] followup to previous commit: only compute an extra limb of the
+ square root for rounding to nearest (for directed rounding, it
+ suffices to know if the remainder is zero or not)
+
+------------------------------------------------------------------------
+r7178 | zimmerma | 2010-09-28 15:08:34 +0000 (Tue, 28 Sep 2010) | 5 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/configure.ac
+ M /trunk/src/mpfr-gmp.h
+ M /trunk/src/mpfr-impl.h
+ M /trunk/src/sqrt.c
+ M /trunk/tests/reuse.c
+
+[src/sqrt.c] now uses mpn_rootrem (if available) instead of mpn_sqrtrem since
+ mpn_rootrem is faster. Also refactored the code: now compute one
+ more limb of the square root when the target precision is a
+ multiple of GMP_NUMB_LIMB. This greatly simplifies the code.
+
+------------------------------------------------------------------------
+r7177 | zimmerma | 2010-09-28 11:40:08 +0000 (Tue, 28 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/sqrt.c
+
+[src/sqrt.c] simplified computation of sticky bit
+
+------------------------------------------------------------------------
+r7176 | zimmerma | 2010-09-27 11:34:08 +0000 (Mon, 27 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[mulders.c] fixed typo
+
+------------------------------------------------------------------------
+r7175 | vlefevre | 2010-09-27 10:25:08 +0000 (Mon, 27 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[src/mulders.c] Replaced MPFR_ASSERTD with constant expression
+by MPFR_ASSERTN.
+------------------------------------------------------------------------
+r7174 | vlefevre | 2010-09-27 10:21:17 +0000 (Mon, 27 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Added a test:
+Constant checking should use MPFR_ASSERTN, not MPFR_ASSERTD.
+------------------------------------------------------------------------
+r7173 | zimmerma | 2010-09-27 08:17:11 +0000 (Mon, 27 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[mulders.c] modified mpfr_sqrhigh_n threshold so that it is > n/2
+
+------------------------------------------------------------------------
+r7172 | vlefevre | 2010-09-27 00:54:13 +0000 (Mon, 27 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Added a FIXME concerning autoconf 2.68.
+------------------------------------------------------------------------
+r7171 | zimmerma | 2010-09-25 03:57:06 +0000 (Sat, 25 Sep 2010) | 4 lines
+Changed paths:
+ M /trunk/src/mulders.c
+
+[mulders.c] use mpn_lshift instead of mpn_add_n, and improved the default
+ Mulders cutoff k beyond 1024 limbs (extrapolated from the cutoff
+ k for n=1023 on Core 2, and checked experimentally it is faster)
+
+------------------------------------------------------------------------
+r7170 | zimmerma | 2010-09-24 19:57:30 +0000 (Fri, 24 Sep 2010) | 4 lines
+Changed paths:
+ M /trunk/tune/tuneup.c
+
+[tuneup.c] changed lower bound for exp_2 threshold from MPFR_PREC_MIN (2) to
+ GMP_NUMB_BITS. Seems to be better (since for p=2 the 2nd routine
+ was sometimes already faster).
+
+------------------------------------------------------------------------
+r7169 | zimmerma | 2010-09-24 19:12:08 +0000 (Fri, 24 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mul.c
+
+[mul.c] another changes for Mulders' algorithm in case of a square
+
+------------------------------------------------------------------------
+r7168 | vlefevre | 2010-09-24 18:51:54 +0000 (Fri, 24 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/mul.c
+
+[src/mul.c] Change in r7166 was incomplete. Fixed suspicious code.
+------------------------------------------------------------------------
+r7167 | zimmerma | 2010-09-24 18:35:00 +0000 (Fri, 24 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mparam_h.in
+
+[mparam_h.in] updated for 64-bit Core2
+
+------------------------------------------------------------------------
+r7166 | zimmerma | 2010-09-24 18:27:25 +0000 (Fri, 24 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/src/mparam_h.in
+ M /trunk/src/mul.c
+ M /trunk/src/sqr.c
+ M /trunk/tune/tuneup.c
+
+now use Mulders' algorithm also for mpfr_sqr, provides nice speed improvement
+in all functions that perform squarings
+
+------------------------------------------------------------------------
+r7165 | vlefevre | 2010-09-21 10:57:23 +0000 (Tue, 21 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] API compatibility section: noted that mpfr_urandom
+and mpfr_urandomb changed for MPFR 3.1.
+------------------------------------------------------------------------
+r7164 | zimmerma | 2010-09-21 08:50:50 +0000 (Tue, 21 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] update about "make tune"
+
+------------------------------------------------------------------------
+r7163 | vlefevre | 2010-09-21 08:43:47 +0000 (Tue, 21 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/doc/FAQ.html
+
+[doc] Updated FAQ.html with update-faq.
+------------------------------------------------------------------------
+r7159 | schevill | 2010-09-20 15:47:36 +0000 (Mon, 20 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/README
+
+Indicated the location of README.dev.
+
+
+------------------------------------------------------------------------
+r7158 | vlefevre | 2010-09-19 17:58:10 +0000 (Sun, 19 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Minor update.
+------------------------------------------------------------------------
+r7157 | zimmerma | 2010-09-19 12:32:22 +0000 (Sun, 19 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] inform the users that mpfr_add_one_ulp and mpfr_sub_one_ulp will be
+ removed
+
+------------------------------------------------------------------------
+r7156 | zimmerma | 2010-09-18 19:50:36 +0000 (Sat, 18 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added efficiency item
+
+------------------------------------------------------------------------
+r7150 | zimmerma | 2010-09-16 02:56:41 +0000 (Thu, 16 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tset_z_exp.c
+
+replaced calls to mpfr_printf by calls to mpfr_dump
+(mpfr_printf might not be defined)
+
+------------------------------------------------------------------------
+r7149 | zimmerma | 2010-09-16 00:41:32 +0000 (Thu, 16 Sep 2010) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/doc/mpfr.texi
+
+[NEWS,doc/mpfr.texi] updated: the GMP random functions do not depend on the
+ computer word size
+
+------------------------------------------------------------------------
+r7145 | vlefevre | 2010-09-15 15:17:09 +0000 (Wed, 15 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/tools/mpfrlint
+
+[tools/mpfrlint] Check for mpfr_printf-like functions in the tests.
+------------------------------------------------------------------------
+r7144 | vlefevre | 2010-09-15 15:15:06 +0000 (Wed, 15 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] Updated the month.
+------------------------------------------------------------------------
+r7143 | zimmerma | 2010-09-15 13:26:39 +0000 (Wed, 15 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/mpfr.texi
+
+[doc/mpfr.texi] added notes for mpfr_urandom and mpfr_urandomb
+
+------------------------------------------------------------------------
+r7142 | zimmerma | 2010-09-15 09:27:38 +0000 (Wed, 15 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[Makefile.am] updated LOADLIBES with reorganization of the sources
+
+------------------------------------------------------------------------
+r7141 | zimmerma | 2010-09-15 09:15:57 +0000 (Wed, 15 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/algorithms.tex
+
+[algorithms.tex] added sections for pow_ui and root
+
+------------------------------------------------------------------------
+r7140 | zimmerma | 2010-09-15 08:30:10 +0000 (Wed, 15 Sep 2010) | 4 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/src/urandom.c
+ M /trunk/tests/turandom.c
+
+[src/urandom.c] now mpfr_urandom also returns identical values on 32-bit and
+ 64-bit machines
+[tests/turandom.c] modified corresponding test
+
+------------------------------------------------------------------------
+r7139 | zimmerma | 2010-09-15 07:47:50 +0000 (Wed, 15 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+ M /trunk/tests/turandom.c
+
+replaced mpfr_printf in tests by calls to mpfr_out_str
+
+------------------------------------------------------------------------
+r7138 | vlefevre | 2010-09-15 07:35:16 +0000 (Wed, 15 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Updated the paragraph added in r7137.
+------------------------------------------------------------------------
+r7137 | vlefevre | 2010-09-15 07:30:13 +0000 (Wed, 15 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/doc/README.dev
+
+[doc/README.dev] Added a paragraph about the use of system-dependent
+functions in the test suite.
+------------------------------------------------------------------------
+r7136 | vlefevre | 2010-09-15 07:28:34 +0000 (Wed, 15 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/init2.c
+ M /trunk/src/set_ld.c
+ M /trunk/src/vasprintf.c
+
+Some minor corrections in comments.
+------------------------------------------------------------------------
+r7135 | vlefevre | 2010-09-15 07:24:05 +0000 (Wed, 15 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/printf.c
+
+[src/printf.c] Typo in a comment.
+------------------------------------------------------------------------
+r7134 | vlefevre | 2010-09-15 07:23:25 +0000 (Wed, 15 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/printf.c
+
+[src/printf.c] Slight modification of a comment.
+------------------------------------------------------------------------
+r7133 | zimmerma | 2010-09-15 02:50:32 +0000 (Wed, 15 Sep 2010) | 8 lines
+Changed paths:
+ M /trunk/src/urandom.c
+ M /trunk/src/urandomb.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/turandom.c
+
+[urandomb.c] modified to leave the GMP random generator in the same state,
+ independent of GMP_NUMB_BITS
+[trandom.c] test of the above
+[urandom.c] added FIXME's
+[turandom.c] check we leave the GMP random generator in the same state,
+ independent of GMP_NUMB_BITS. Currently this fails on 64-bit
+ computers.
+
+------------------------------------------------------------------------
+r7132 | zimmerma | 2010-09-15 01:57:46 +0000 (Wed, 15 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/urandomb.c
+
+[urandomb.c] added comment + slight change
+
+------------------------------------------------------------------------
+r7121 | vlefevre | 2010-09-01 11:30:22 +0000 (Wed, 01 Sep 2010) | 4 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Added casts to improve robustness in case of undefined
+behavior and compiler extensions based on UB (in particular -fwrapv).
+MPFR doesn't use such extensions, but these macros will be used by
+3rd-party code, where such extensions may be required.
+------------------------------------------------------------------------
+r7120 | vlefevre | 2010-09-01 11:06:07 +0000 (Wed, 01 Sep 2010) | 1 line
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Updated a comment concerning -Wconversion.
+------------------------------------------------------------------------
+r7118 | vlefevre | 2010-09-01 10:42:55 +0000 (Wed, 01 Sep 2010) | 6 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Added casts to unsigned long in mpfr_cmp_si and mpfr_set_si
+macros for GCC, in order to avoid warnings in programs that use MPFR and
+are compiled with -Wconversion (suggestion by Andreas Enge); such casts
+are OK since if X is a constant expression, then (unsigned long) X is
+also a constant expression, so that the optimizations still work.
+Reformatted these macros.
+------------------------------------------------------------------------
+r7116 | vlefevre | 2010-09-01 09:25:27 +0000 (Wed, 01 Sep 2010) | 4 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Fixed bug in the mpfr_cmp_ui macro for GCC (also used
+by mpfr_cmp_si), when the evaluation of the first argument yields
+side effects and the second argument is a constant expression with
+the value 0.
+------------------------------------------------------------------------
+r7115 | vlefevre | 2010-09-01 09:19:43 +0000 (Wed, 01 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+[tests/tcmp_ui.c] Added side-effect tests similar to those in tset_si.c,
+showing a bug in the mpfr_cmp_ui and mpfr_cmp_si macros.
+------------------------------------------------------------------------
+r7114 | vlefevre | 2010-09-01 09:07:59 +0000 (Wed, 01 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+[tests/tcmp_ui.c] Check mpfr_cmp_ui and mpfr_cmp_si macros against
+side effects in the arguments.
+------------------------------------------------------------------------
+r7113 | vlefevre | 2010-09-01 08:58:22 +0000 (Wed, 01 Sep 2010) | 2 lines
+Changed paths:
+ M /trunk/src/mpfr.h
+
+[src/mpfr.h] Added a comment about the macros that use
+__builtin_constant_p.
+------------------------------------------------------------------------
+r7112 | zimmerma | 2010-08-30 09:04:00 +0000 (Mon, 30 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+[tsqrt.c] improved comment, and added test sqrt(+0) == +0
+
+------------------------------------------------------------------------
+r7111 | vlefevre | 2010-08-29 19:26:00 +0000 (Sun, 29 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+[tests/tsqrt.c] Renamed check_nan() to check_singular().
+------------------------------------------------------------------------
+r7110 | vlefevre | 2010-08-29 19:23:52 +0000 (Sun, 29 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+[tests/tsqrt.c] Check that sqrt(-0) has a negative sign.
+------------------------------------------------------------------------
+r7108 | vlefevre | 2010-08-26 14:44:41 +0000 (Thu, 26 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Replaced "patches" by "allpatches".
+------------------------------------------------------------------------
+r7107 | zimmerma | 2010-08-25 20:15:24 +0000 (Wed, 25 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.ac
+
+[configure.ac] fixed typo
+
+------------------------------------------------------------------------
+r7106 | vlefevre | 2010-08-23 15:24:10 +0000 (Mon, 23 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/src/gmp_op.c
+
+[src/gmp_op.c] Extend the exponent range in mpfr_cmp_q and mpfr_cmp_f.
+------------------------------------------------------------------------
+r7105 | vlefevre | 2010-08-23 15:03:37 +0000 (Mon, 23 Aug 2010) | 5 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+
+[src/gmp_op.c] In mpfr_add_q / mpfr_sub_q, check with MPFR_ASSERTN
+that an internal overflow/underflow doesn't occur. In theory, such
+an exception is possible, but only if q has a huge numerator or
+denominator. This is not supported (note: other problems may occur
+first, such as insufficient memory).
+------------------------------------------------------------------------
+r7104 | vlefevre | 2010-08-23 14:46:44 +0000 (Mon, 23 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tests/tgmpop.c] Added overflow tests for mpfr_add_q / mpfr_sub_q.
+------------------------------------------------------------------------
+r7103 | vlefevre | 2010-08-23 14:03:07 +0000 (Mon, 23 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/tests.c
+
+[tests/{mpfr-test.h,tests.c}] Added flags_out function to output flags.
+------------------------------------------------------------------------
+r7102 | vlefevre | 2010-08-23 13:34:08 +0000 (Mon, 23 Aug 2010) | 3 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+[src/gmp_op.c] Extend the exponent range in mpfr_add_q / mpfr_sub_q
+ (overflow/underflow exceptions are not supported yet).
+[tests/tgmpop.c] Added corresponding testcases.
+------------------------------------------------------------------------
+r7101 | vlefevre | 2010-08-19 12:08:41 +0000 (Thu, 19 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+[src/gmp_op.c] Fixed the Inf +/- Inf cases for mpfr_add_q / mpfr_sub_q.
+[tests/tgmpop.c] Added Inf +/- Inf tests.
+------------------------------------------------------------------------
+r7100 | thevenyp | 2010-08-19 08:56:31 +0000 (Thu, 19 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tests/tgmpop.c] Fix rounding mode in overflow tests
+------------------------------------------------------------------------
+r7099 | vlefevre | 2010-08-19 01:26:16 +0000 (Thu, 19 Aug 2010) | 3 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+[src/gmp_op.c] The function mpfr_cmp_z could fail in a reduced
+exponent range.
+[tests/tgmpop.c] Added a corresponding testcase.
+------------------------------------------------------------------------
+r7098 | vlefevre | 2010-08-19 01:00:53 +0000 (Thu, 19 Aug 2010) | 3 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+[src/gmp_op.c] The functions mpfr_mul_z, mpfr_div_z, mpfr_add_z and
+mpfr_sub_z could fail in a reduced exponent range. Fixed.
+[tests/tgmpop.c] Added corresponding testcase.
+------------------------------------------------------------------------
+r7097 | vlefevre | 2010-08-18 21:19:07 +0000 (Wed, 18 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tests/tgmpop.c] Disabled buggy tests.
+------------------------------------------------------------------------
+r7096 | vlefevre | 2010-08-18 13:24:30 +0000 (Wed, 18 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+
+[src/gmp_op.c] Fixed the intermediate overflow case in mpfr_muldiv_z
+(for mpfr_mul_q and mpfr_div_q).
+------------------------------------------------------------------------
+r7095 | vlefevre | 2010-08-18 11:55:19 +0000 (Wed, 18 Aug 2010) | 5 lines
+Changed paths:
+ M /trunk/src/gmp_op.c
+
+[src/gmp_op.c] Added function mpfr_muldiv_z (currently static -- should
+it be in the API?) that computes y = RND(x*n/d), where n and d are mpz
+integers. Changed mpfr_mul_q and mpfr_div_q to use this function.
+Note: the code of the general case is currently the same as the old
+mpfr_mul_q/mpfr_div_q code, thus needs to be fixed.
+------------------------------------------------------------------------
+r7094 | vlefevre | 2010-08-18 08:59:58 +0000 (Wed, 18 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tests/tgmpop.c] Replaced GMP_RNDN by MPFR_RNDN.
+------------------------------------------------------------------------
+r7093 | vlefevre | 2010-08-18 08:29:03 +0000 (Wed, 18 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tests/tgmpop.c] Added testcase for mpfr_mul_q/mpfr_div_q bug noted
+in src/gmp_op.c (due to intermediate overflow).
+------------------------------------------------------------------------
+r7092 | vlefevre | 2010-08-17 15:32:53 +0000 (Tue, 17 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/src/logging.c
+
+[src/logging.c] Added a comment about register_printf_function.
+------------------------------------------------------------------------
+r7091 | vlefevre | 2010-08-17 12:45:22 +0000 (Tue, 17 Aug 2010) | 6 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/tools/ck-version-info
+
+Added tools/ck-version-info Perl script with the same license as
+Makefile.am, to check consistency concerning -version-info and
+that the -version-info value is up-to-date.
+Updated Makefile.am:
+ * In dist-hook, replaced complex sh code by a call to ck-version-info.
+ * Distribute ck-version-info (EXTRA_DIST).
+------------------------------------------------------------------------
+r7090 | vlefevre | 2010-08-17 12:30:02 +0000 (Tue, 17 Aug 2010) | 1 line
+Changed paths:
+ M /trunk
+ M /trunk/doc
+ M /trunk/src
+ M /trunk/tune
+
+Updated svn:ignore properties.
+------------------------------------------------------------------------
+r7089 | vlefevre | 2010-08-17 09:31:09 +0000 (Tue, 17 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Put tools/get_patches.sh back to EXTRA_DIST.
+------------------------------------------------------------------------
+r7088 | vlefevre | 2010-08-17 09:25:39 +0000 (Tue, 17 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/src/Makefile.am
+
+[src/Makefile.am] Fixed -version-info (I forgot to increment CURRENT).
+------------------------------------------------------------------------
+r7087 | vlefevre | 2010-08-17 09:10:13 +0000 (Tue, 17 Aug 2010) | 38 lines
+Changed paths:
+ D /trunk/FAQ.html
+ M /trunk/INSTALL
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/README
+ D /trunk/README.dev
+ M /trunk/TODO
+ D /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ D /trunk/acos.c
+ D /trunk/acosh.c
+ D /trunk/add.c
+ D /trunk/add1.c
+ D /trunk/add1sp.c
+ D /trunk/add_d.c
+ D /trunk/add_ui.c
+ D /trunk/agm.c
+ D /trunk/ai.c
+ D /trunk/algorithm2e.sty
+ D /trunk/algorithms.bib
+ D /trunk/algorithms.tex
+ D /trunk/asin.c
+ D /trunk/asinh.c
+ D /trunk/atan.c
+ D /trunk/atan2.c
+ D /trunk/atanh.c
+ D /trunk/bernoulli.c
+ D /trunk/bidimensional_sample.c
+ D /trunk/buildopt.c
+ D /trunk/cache.c
+ D /trunk/cbrt.c
+ D /trunk/check.c
+ D /trunk/check_inits_clears
+ D /trunk/clear.c
+ D /trunk/clears.c
+ D /trunk/cmp.c
+ D /trunk/cmp2.c
+ D /trunk/cmp_abs.c
+ D /trunk/cmp_d.c
+ D /trunk/cmp_ld.c
+ D /trunk/cmp_si.c
+ D /trunk/cmp_ui.c
+ D /trunk/comparisons.c
+ A /trunk/configure.ac (from /trunk/configure.in:7086)
+ D /trunk/configure.in
+ D /trunk/const_catalan.c
+ D /trunk/const_euler.c
+ D /trunk/const_log2.c
+ D /trunk/const_pi.c
+ D /trunk/constant.c
+ D /trunk/copysign.c
+ D /trunk/cos.c
+ D /trunk/cosh.c
+ D /trunk/cot.c
+ D /trunk/coth.c
+ D /trunk/coverage
+ D /trunk/cputime.h
+ D /trunk/csc.c
+ D /trunk/csch.c
+ D /trunk/d_div.c
+ D /trunk/d_sub.c
+ D /trunk/digamma.c
+ D /trunk/dim.c
+ D /trunk/div-short.c
+ D /trunk/div.c
+ D /trunk/div_2exp.c
+ D /trunk/div_2si.c
+ D /trunk/div_2ui.c
+ D /trunk/div_d.c
+ D /trunk/div_ui.c
+ A /trunk/doc
+ A /trunk/doc/FAQ.html (from /trunk/FAQ.html:7086)
+ A /trunk/doc/Makefile.am
+ A /trunk/doc/README.dev (from /trunk/README.dev:7086)
+ A /trunk/doc/algorithm2e.sty (from /trunk/algorithm2e.sty:7086)
+ A /trunk/doc/algorithms.bib (from /trunk/algorithms.bib:7086)
+ A /trunk/doc/algorithms.tex (from /trunk/algorithms.tex:7086)
+ A /trunk/doc/faq.xsl (from /trunk/faq.xsl:7086)
+ A /trunk/doc/fdl.texi (from /trunk/fdl.texi:7086)
+ A /trunk/doc/mpfr.texi (from /trunk/mpfr.texi:7086)
+ A /trunk/doc/update-faq (from /trunk/update-faq:7086)
+ D /trunk/dump.c
+ D /trunk/eint.c
+ D /trunk/eq.c
+ D /trunk/erf.c
+ D /trunk/erfc.c
+ D /trunk/exceptions.c
+ D /trunk/exp.c
+ D /trunk/exp10.c
+ D /trunk/exp2.c
+ D /trunk/exp3.c
+ D /trunk/exp_2.c
+ D /trunk/expm1.c
+ D /trunk/extract.c
+ D /trunk/factorial.c
+ D /trunk/faq.xsl
+ D /trunk/fdl.texi
+ D /trunk/fits_intmax.c
+ D /trunk/fits_s.h
+ D /trunk/fits_sint.c
+ D /trunk/fits_slong.c
+ D /trunk/fits_sshort.c
+ D /trunk/fits_u.h
+ D /trunk/fits_uint.c
+ D /trunk/fits_uintmax.c
+ D /trunk/fits_ulong.c
+ D /trunk/fits_ushort.c
+ D /trunk/fma.c
+ D /trunk/fms.c
+ D /trunk/frac.c
+ D /trunk/free_cache.c
+ D /trunk/gamma.c
+ D /trunk/gammaonethird.c
+ D /trunk/gen_inverse.h
+ D /trunk/get_d.c
+ D /trunk/get_d64.c
+ D /trunk/get_exp.c
+ D /trunk/get_f.c
+ D /trunk/get_flt.c
+ D /trunk/get_ld.c
+ D /trunk/get_patches.sh
+ D /trunk/get_si.c
+ D /trunk/get_sj.c
+ D /trunk/get_str.c
+ D /trunk/get_ui.c
+ D /trunk/get_uj.c
+ D /trunk/get_z.c
+ D /trunk/get_z_exp.c
+ D /trunk/gmp_op.c
+ D /trunk/hypot.c
+ D /trunk/ieee_floats.h
+ D /trunk/init.c
+ D /trunk/init2.c
+ D /trunk/inits.c
+ D /trunk/inits2.c
+ D /trunk/inp_str.c
+ D /trunk/int_ceil_log2.c
+ D /trunk/isinf.c
+ D /trunk/isinteger.c
+ D /trunk/isnan.c
+ D /trunk/isnum.c
+ D /trunk/isqrt.c
+ D /trunk/isregular.c
+ D /trunk/iszero.c
+ D /trunk/jn.c
+ D /trunk/jyn_asympt.c
+ D /trunk/li2.c
+ D /trunk/lngamma.c
+ D /trunk/log.c
+ D /trunk/log10.c
+ D /trunk/log1p.c
+ D /trunk/log2.c
+ D /trunk/logging.c
+ D /trunk/mbench
+ D /trunk/min_prec.c
+ D /trunk/minmax.c
+ D /trunk/modf.c
+ D /trunk/mp_clz_tab.c
+ D /trunk/mparam_h.in
+ D /trunk/mpf2mpfr.h
+ D /trunk/mpfr-gmp.c
+ D /trunk/mpfr-gmp.h
+ D /trunk/mpfr-impl.h
+ D /trunk/mpfr-longlong.h
+ D /trunk/mpfr-thread.h
+ D /trunk/mpfr.h
+ D /trunk/mpfr.texi
+ D /trunk/mpfrlint
+ D /trunk/mpn_exp.c
+ D /trunk/mul.c
+ D /trunk/mul_2exp.c
+ D /trunk/mul_2si.c
+ D /trunk/mul_2ui.c
+ D /trunk/mul_d.c
+ D /trunk/mul_ui.c
+ D /trunk/mulders.c
+ D /trunk/neg.c
+ D /trunk/next.c
+ D /trunk/nightly-test
+ A /trunk/other
+ A /trunk/other/cputime.h (from /trunk/cputime.h:7086)
+ A /trunk/other/div-short.c (from /trunk/div-short.c:7086)
+ D /trunk/out_str.c
+ D /trunk/pow.c
+ D /trunk/pow_si.c
+ D /trunk/pow_ui.c
+ D /trunk/pow_z.c
+ D /trunk/powerof2.c
+ D /trunk/print_raw.c
+ D /trunk/print_rnd_mode.c
+ D /trunk/printf.c
+ D /trunk/rec_sqrt.c
+ D /trunk/reldiff.c
+ D /trunk/rem1.c
+ D /trunk/replace_all
+ D /trunk/rint.c
+ D /trunk/root.c
+ D /trunk/round_near_x.c
+ D /trunk/round_p.c
+ D /trunk/round_prec.c
+ D /trunk/round_raw_generic.c
+ D /trunk/scale2.c
+ D /trunk/sec.c
+ D /trunk/sech.c
+ D /trunk/set.c
+ D /trunk/set_d.c
+ D /trunk/set_d64.c
+ D /trunk/set_dfl_prec.c
+ D /trunk/set_exp.c
+ D /trunk/set_f.c
+ D /trunk/set_flt.c
+ D /trunk/set_inf.c
+ D /trunk/set_ld.c
+ D /trunk/set_nan.c
+ D /trunk/set_prc_raw.c
+ D /trunk/set_prec.c
+ D /trunk/set_q.c
+ D /trunk/set_rnd.c
+ D /trunk/set_si.c
+ D /trunk/set_si_2exp.c
+ D /trunk/set_sj.c
+ D /trunk/set_str.c
+ D /trunk/set_str_raw.c
+ D /trunk/set_ui.c
+ D /trunk/set_ui_2exp.c
+ D /trunk/set_uj.c
+ D /trunk/set_z.c
+ D /trunk/set_z_exp.c
+ D /trunk/set_zero.c
+ D /trunk/setmax.c
+ D /trunk/setmin.c
+ D /trunk/setsign.c
+ D /trunk/sgn.c
+ D /trunk/si_op.c
+ D /trunk/signbit.c
+ D /trunk/sin.c
+ D /trunk/sin_cos.c
+ D /trunk/sinh.c
+ D /trunk/sinh_cosh.c
+ D /trunk/speed.c
+ D /trunk/sqr.c
+ D /trunk/sqrt.c
+ D /trunk/sqrt_ui.c
+ A /trunk/src
+ A /trunk/src/Makefile.am (from /trunk/Makefile.am:7086)
+ A /trunk/src/abort_prec_max.c (from /trunk/abort_prec_max.c:7086)
+ A /trunk/src/acos.c (from /trunk/acos.c:7086)
+ A /trunk/src/acosh.c (from /trunk/acosh.c:7086)
+ A /trunk/src/add.c (from /trunk/add.c:7086)
+ A /trunk/src/add1.c (from /trunk/add1.c:7086)
+ A /trunk/src/add1sp.c (from /trunk/add1sp.c:7086)
+ A /trunk/src/add_d.c (from /trunk/add_d.c:7086)
+ A /trunk/src/add_ui.c (from /trunk/add_ui.c:7086)
+ A /trunk/src/agm.c (from /trunk/agm.c:7086)
+ A /trunk/src/ai.c (from /trunk/ai.c:7086)
+ A /trunk/src/asin.c (from /trunk/asin.c:7086)
+ A /trunk/src/asinh.c (from /trunk/asinh.c:7086)
+ A /trunk/src/atan.c (from /trunk/atan.c:7086)
+ A /trunk/src/atan2.c (from /trunk/atan2.c:7086)
+ A /trunk/src/atanh.c (from /trunk/atanh.c:7086)
+ A /trunk/src/bernoulli.c (from /trunk/bernoulli.c:7086)
+ A /trunk/src/buildopt.c (from /trunk/buildopt.c:7086)
+ A /trunk/src/cache.c (from /trunk/cache.c:7086)
+ A /trunk/src/cbrt.c (from /trunk/cbrt.c:7086)
+ A /trunk/src/check.c (from /trunk/check.c:7086)
+ A /trunk/src/clear.c (from /trunk/clear.c:7086)
+ A /trunk/src/clears.c (from /trunk/clears.c:7086)
+ A /trunk/src/cmp.c (from /trunk/cmp.c:7086)
+ A /trunk/src/cmp2.c (from /trunk/cmp2.c:7086)
+ A /trunk/src/cmp_abs.c (from /trunk/cmp_abs.c:7086)
+ A /trunk/src/cmp_d.c (from /trunk/cmp_d.c:7086)
+ A /trunk/src/cmp_ld.c (from /trunk/cmp_ld.c:7086)
+ A /trunk/src/cmp_si.c (from /trunk/cmp_si.c:7086)
+ A /trunk/src/cmp_ui.c (from /trunk/cmp_ui.c:7086)
+ A /trunk/src/comparisons.c (from /trunk/comparisons.c:7086)
+ A /trunk/src/const_catalan.c (from /trunk/const_catalan.c:7086)
+ A /trunk/src/const_euler.c (from /trunk/const_euler.c:7086)
+ A /trunk/src/const_log2.c (from /trunk/const_log2.c:7086)
+ A /trunk/src/const_pi.c (from /trunk/const_pi.c:7086)
+ A /trunk/src/constant.c (from /trunk/constant.c:7086)
+ A /trunk/src/copysign.c (from /trunk/copysign.c:7086)
+ A /trunk/src/cos.c (from /trunk/cos.c:7086)
+ A /trunk/src/cosh.c (from /trunk/cosh.c:7086)
+ A /trunk/src/cot.c (from /trunk/cot.c:7086)
+ A /trunk/src/coth.c (from /trunk/coth.c:7086)
+ A /trunk/src/csc.c (from /trunk/csc.c:7086)
+ A /trunk/src/csch.c (from /trunk/csch.c:7086)
+ A /trunk/src/d_div.c (from /trunk/d_div.c:7086)
+ A /trunk/src/d_sub.c (from /trunk/d_sub.c:7086)
+ A /trunk/src/digamma.c (from /trunk/digamma.c:7086)
+ A /trunk/src/dim.c (from /trunk/dim.c:7086)
+ A /trunk/src/div.c (from /trunk/div.c:7086)
+ A /trunk/src/div_2exp.c (from /trunk/div_2exp.c:7086)
+ A /trunk/src/div_2si.c (from /trunk/div_2si.c:7086)
+ A /trunk/src/div_2ui.c (from /trunk/div_2ui.c:7086)
+ A /trunk/src/div_d.c (from /trunk/div_d.c:7086)
+ A /trunk/src/div_ui.c (from /trunk/div_ui.c:7086)
+ A /trunk/src/dump.c (from /trunk/dump.c:7086)
+ A /trunk/src/eint.c (from /trunk/eint.c:7086)
+ A /trunk/src/eq.c (from /trunk/eq.c:7086)
+ A /trunk/src/erf.c (from /trunk/erf.c:7086)
+ A /trunk/src/erfc.c (from /trunk/erfc.c:7086)
+ A /trunk/src/exceptions.c (from /trunk/exceptions.c:7086)
+ A /trunk/src/exp.c (from /trunk/exp.c:7086)
+ A /trunk/src/exp10.c (from /trunk/exp10.c:7086)
+ A /trunk/src/exp2.c (from /trunk/exp2.c:7086)
+ A /trunk/src/exp3.c (from /trunk/exp3.c:7086)
+ A /trunk/src/exp_2.c (from /trunk/exp_2.c:7086)
+ A /trunk/src/expm1.c (from /trunk/expm1.c:7086)
+ A /trunk/src/extract.c (from /trunk/extract.c:7086)
+ A /trunk/src/factorial.c (from /trunk/factorial.c:7086)
+ A /trunk/src/fits_intmax.c (from /trunk/fits_intmax.c:7086)
+ A /trunk/src/fits_s.h (from /trunk/fits_s.h:7086)
+ A /trunk/src/fits_sint.c (from /trunk/fits_sint.c:7086)
+ A /trunk/src/fits_slong.c (from /trunk/fits_slong.c:7086)
+ A /trunk/src/fits_sshort.c (from /trunk/fits_sshort.c:7086)
+ A /trunk/src/fits_u.h (from /trunk/fits_u.h:7086)
+ A /trunk/src/fits_uint.c (from /trunk/fits_uint.c:7086)
+ A /trunk/src/fits_uintmax.c (from /trunk/fits_uintmax.c:7086)
+ A /trunk/src/fits_ulong.c (from /trunk/fits_ulong.c:7086)
+ A /trunk/src/fits_ushort.c (from /trunk/fits_ushort.c:7086)
+ A /trunk/src/fma.c (from /trunk/fma.c:7086)
+ A /trunk/src/fms.c (from /trunk/fms.c:7086)
+ A /trunk/src/frac.c (from /trunk/frac.c:7086)
+ A /trunk/src/free_cache.c (from /trunk/free_cache.c:7086)
+ A /trunk/src/gamma.c (from /trunk/gamma.c:7086)
+ A /trunk/src/gammaonethird.c (from /trunk/gammaonethird.c:7086)
+ A /trunk/src/gen_inverse.h (from /trunk/gen_inverse.h:7086)
+ A /trunk/src/get_d.c (from /trunk/get_d.c:7086)
+ A /trunk/src/get_d64.c (from /trunk/get_d64.c:7086)
+ A /trunk/src/get_exp.c (from /trunk/get_exp.c:7086)
+ A /trunk/src/get_f.c (from /trunk/get_f.c:7086)
+ A /trunk/src/get_flt.c (from /trunk/get_flt.c:7086)
+ A /trunk/src/get_ld.c (from /trunk/get_ld.c:7086)
+ A /trunk/src/get_si.c (from /trunk/get_si.c:7086)
+ A /trunk/src/get_sj.c (from /trunk/get_sj.c:7086)
+ A /trunk/src/get_str.c (from /trunk/get_str.c:7086)
+ A /trunk/src/get_ui.c (from /trunk/get_ui.c:7086)
+ A /trunk/src/get_uj.c (from /trunk/get_uj.c:7086)
+ A /trunk/src/get_z.c (from /trunk/get_z.c:7086)
+ A /trunk/src/get_z_exp.c (from /trunk/get_z_exp.c:7086)
+ A /trunk/src/gmp_op.c (from /trunk/gmp_op.c:7086)
+ A /trunk/src/hypot.c (from /trunk/hypot.c:7086)
+ A /trunk/src/ieee_floats.h (from /trunk/ieee_floats.h:7086)
+ A /trunk/src/init.c (from /trunk/init.c:7086)
+ A /trunk/src/init2.c (from /trunk/init2.c:7086)
+ A /trunk/src/inits.c (from /trunk/inits.c:7086)
+ A /trunk/src/inits2.c (from /trunk/inits2.c:7086)
+ A /trunk/src/inp_str.c (from /trunk/inp_str.c:7086)
+ A /trunk/src/int_ceil_log2.c (from /trunk/int_ceil_log2.c:7086)
+ A /trunk/src/isinf.c (from /trunk/isinf.c:7086)
+ A /trunk/src/isinteger.c (from /trunk/isinteger.c:7086)
+ A /trunk/src/isnan.c (from /trunk/isnan.c:7086)
+ A /trunk/src/isnum.c (from /trunk/isnum.c:7086)
+ A /trunk/src/isqrt.c (from /trunk/isqrt.c:7086)
+ A /trunk/src/isregular.c (from /trunk/isregular.c:7086)
+ A /trunk/src/iszero.c (from /trunk/iszero.c:7086)
+ A /trunk/src/jn.c (from /trunk/jn.c:7086)
+ A /trunk/src/jyn_asympt.c (from /trunk/jyn_asympt.c:7086)
+ A /trunk/src/li2.c (from /trunk/li2.c:7086)
+ A /trunk/src/lngamma.c (from /trunk/lngamma.c:7086)
+ A /trunk/src/log.c (from /trunk/log.c:7086)
+ A /trunk/src/log10.c (from /trunk/log10.c:7086)
+ A /trunk/src/log1p.c (from /trunk/log1p.c:7086)
+ A /trunk/src/log2.c (from /trunk/log2.c:7086)
+ A /trunk/src/logging.c (from /trunk/logging.c:7086)
+ A /trunk/src/min_prec.c (from /trunk/min_prec.c:7086)
+ A /trunk/src/minmax.c (from /trunk/minmax.c:7086)
+ A /trunk/src/modf.c (from /trunk/modf.c:7086)
+ A /trunk/src/mp_clz_tab.c (from /trunk/mp_clz_tab.c:7086)
+ A /trunk/src/mparam_h.in (from /trunk/mparam_h.in:7086)
+ A /trunk/src/mpf2mpfr.h (from /trunk/mpf2mpfr.h:7086)
+ A /trunk/src/mpfr-gmp.c (from /trunk/mpfr-gmp.c:7086)
+ A /trunk/src/mpfr-gmp.h (from /trunk/mpfr-gmp.h:7086)
+ A /trunk/src/mpfr-impl.h (from /trunk/mpfr-impl.h:7086)
+ A /trunk/src/mpfr-longlong.h (from /trunk/mpfr-longlong.h:7086)
+ A /trunk/src/mpfr-thread.h (from /trunk/mpfr-thread.h:7086)
+ A /trunk/src/mpfr.h (from /trunk/mpfr.h:7086)
+ A /trunk/src/mpn_exp.c (from /trunk/mpn_exp.c:7086)
+ A /trunk/src/mul.c (from /trunk/mul.c:7086)
+ A /trunk/src/mul_2exp.c (from /trunk/mul_2exp.c:7086)
+ A /trunk/src/mul_2si.c (from /trunk/mul_2si.c:7086)
+ A /trunk/src/mul_2ui.c (from /trunk/mul_2ui.c:7086)
+ A /trunk/src/mul_d.c (from /trunk/mul_d.c:7086)
+ A /trunk/src/mul_ui.c (from /trunk/mul_ui.c:7086)
+ A /trunk/src/mulders.c (from /trunk/mulders.c:7086)
+ A /trunk/src/neg.c (from /trunk/neg.c:7086)
+ A /trunk/src/next.c (from /trunk/next.c:7086)
+ A /trunk/src/out_str.c (from /trunk/out_str.c:7086)
+ A /trunk/src/pow.c (from /trunk/pow.c:7086)
+ A /trunk/src/pow_si.c (from /trunk/pow_si.c:7086)
+ A /trunk/src/pow_ui.c (from /trunk/pow_ui.c:7086)
+ A /trunk/src/pow_z.c (from /trunk/pow_z.c:7086)
+ A /trunk/src/powerof2.c (from /trunk/powerof2.c:7086)
+ A /trunk/src/print_raw.c (from /trunk/print_raw.c:7086)
+ A /trunk/src/print_rnd_mode.c (from /trunk/print_rnd_mode.c:7086)
+ A /trunk/src/printf.c (from /trunk/printf.c:7086)
+ A /trunk/src/rec_sqrt.c (from /trunk/rec_sqrt.c:7086)
+ A /trunk/src/reldiff.c (from /trunk/reldiff.c:7086)
+ A /trunk/src/rem1.c (from /trunk/rem1.c:7086)
+ A /trunk/src/rint.c (from /trunk/rint.c:7086)
+ A /trunk/src/root.c (from /trunk/root.c:7086)
+ A /trunk/src/round_near_x.c (from /trunk/round_near_x.c:7086)
+ A /trunk/src/round_p.c (from /trunk/round_p.c:7086)
+ A /trunk/src/round_prec.c (from /trunk/round_prec.c:7086)
+ A /trunk/src/round_raw_generic.c (from /trunk/round_raw_generic.c:7086)
+ A /trunk/src/scale2.c (from /trunk/scale2.c:7086)
+ A /trunk/src/sec.c (from /trunk/sec.c:7086)
+ A /trunk/src/sech.c (from /trunk/sech.c:7086)
+ A /trunk/src/set.c (from /trunk/set.c:7086)
+ A /trunk/src/set_d.c (from /trunk/set_d.c:7086)
+ A /trunk/src/set_d64.c (from /trunk/set_d64.c:7086)
+ A /trunk/src/set_dfl_prec.c (from /trunk/set_dfl_prec.c:7086)
+ A /trunk/src/set_exp.c (from /trunk/set_exp.c:7086)
+ A /trunk/src/set_f.c (from /trunk/set_f.c:7086)
+ A /trunk/src/set_flt.c (from /trunk/set_flt.c:7086)
+ A /trunk/src/set_inf.c (from /trunk/set_inf.c:7086)
+ A /trunk/src/set_ld.c (from /trunk/set_ld.c:7086)
+ A /trunk/src/set_nan.c (from /trunk/set_nan.c:7086)
+ A /trunk/src/set_prc_raw.c (from /trunk/set_prc_raw.c:7086)
+ A /trunk/src/set_prec.c (from /trunk/set_prec.c:7086)
+ A /trunk/src/set_q.c (from /trunk/set_q.c:7086)
+ A /trunk/src/set_rnd.c (from /trunk/set_rnd.c:7086)
+ A /trunk/src/set_si.c (from /trunk/set_si.c:7086)
+ A /trunk/src/set_si_2exp.c (from /trunk/set_si_2exp.c:7086)
+ A /trunk/src/set_sj.c (from /trunk/set_sj.c:7086)
+ A /trunk/src/set_str.c (from /trunk/set_str.c:7086)
+ A /trunk/src/set_str_raw.c (from /trunk/set_str_raw.c:7086)
+ A /trunk/src/set_ui.c (from /trunk/set_ui.c:7086)
+ A /trunk/src/set_ui_2exp.c (from /trunk/set_ui_2exp.c:7086)
+ A /trunk/src/set_uj.c (from /trunk/set_uj.c:7086)
+ A /trunk/src/set_z.c (from /trunk/set_z.c:7086)
+ A /trunk/src/set_z_exp.c (from /trunk/set_z_exp.c:7086)
+ A /trunk/src/set_zero.c (from /trunk/set_zero.c:7086)
+ A /trunk/src/setmax.c (from /trunk/setmax.c:7086)
+ A /trunk/src/setmin.c (from /trunk/setmin.c:7086)
+ A /trunk/src/setsign.c (from /trunk/setsign.c:7086)
+ A /trunk/src/sgn.c (from /trunk/sgn.c:7086)
+ A /trunk/src/si_op.c (from /trunk/si_op.c:7086)
+ A /trunk/src/signbit.c (from /trunk/signbit.c:7086)
+ A /trunk/src/sin.c (from /trunk/sin.c:7086)
+ A /trunk/src/sin_cos.c (from /trunk/sin_cos.c:7086)
+ A /trunk/src/sinh.c (from /trunk/sinh.c:7086)
+ A /trunk/src/sinh_cosh.c (from /trunk/sinh_cosh.c:7086)
+ A /trunk/src/sqr.c (from /trunk/sqr.c:7086)
+ A /trunk/src/sqrt.c (from /trunk/sqrt.c:7086)
+ A /trunk/src/sqrt_ui.c (from /trunk/sqrt_ui.c:7086)
+ A /trunk/src/stack_interface.c (from /trunk/stack_interface.c:7086)
+ A /trunk/src/strtofr.c (from /trunk/strtofr.c:7086)
+ A /trunk/src/sub.c (from /trunk/sub.c:7086)
+ A /trunk/src/sub1.c (from /trunk/sub1.c:7086)
+ A /trunk/src/sub1sp.c (from /trunk/sub1sp.c:7086)
+ A /trunk/src/sub_d.c (from /trunk/sub_d.c:7086)
+ A /trunk/src/sub_ui.c (from /trunk/sub_ui.c:7086)
+ A /trunk/src/subnormal.c (from /trunk/subnormal.c:7086)
+ A /trunk/src/sum.c (from /trunk/sum.c:7086)
+ A /trunk/src/swap.c (from /trunk/swap.c:7086)
+ A /trunk/src/tan.c (from /trunk/tan.c:7086)
+ A /trunk/src/tanh.c (from /trunk/tanh.c:7086)
+ A /trunk/src/uceil_exp2.c (from /trunk/uceil_exp2.c:7086)
+ A /trunk/src/uceil_log2.c (from /trunk/uceil_log2.c:7086)
+ A /trunk/src/ufloor_log2.c (from /trunk/ufloor_log2.c:7086)
+ A /trunk/src/ui_div.c (from /trunk/ui_div.c:7086)
+ A /trunk/src/ui_pow.c (from /trunk/ui_pow.c:7086)
+ A /trunk/src/ui_pow_ui.c (from /trunk/ui_pow_ui.c:7086)
+ A /trunk/src/ui_sub.c (from /trunk/ui_sub.c:7086)
+ A /trunk/src/urandom.c (from /trunk/urandom.c:7086)
+ A /trunk/src/urandomb.c (from /trunk/urandomb.c:7086)
+ A /trunk/src/vasprintf.c (from /trunk/vasprintf.c:7086)
+ A /trunk/src/version.c (from /trunk/version.c:7086)
+ A /trunk/src/volatile.c (from /trunk/volatile.c:7086)
+ A /trunk/src/yn.c (from /trunk/yn.c:7086)
+ A /trunk/src/zeta.c (from /trunk/zeta.c:7086)
+ A /trunk/src/zeta_ui.c (from /trunk/zeta_ui.c:7086)
+ D /trunk/stack_interface.c
+ D /trunk/strtofr.c
+ D /trunk/sub.c
+ D /trunk/sub1.c
+ D /trunk/sub1sp.c
+ D /trunk/sub_d.c
+ D /trunk/sub_ui.c
+ D /trunk/subnormal.c
+ D /trunk/sum.c
+ D /trunk/swap.c
+ D /trunk/tan.c
+ D /trunk/tanh.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tools
+ A /trunk/tools/check_inits_clears (from /trunk/check_inits_clears:7086)
+ A /trunk/tools/coverage (from /trunk/coverage:7086)
+ A /trunk/tools/get_patches.sh (from /trunk/get_patches.sh:7086)
+ A /trunk/tools/mbench (from /trunk/mbench:7086)
+ A /trunk/tools/mpfrlint (from /trunk/mpfrlint:7086)
+ A /trunk/tools/nightly-test (from /trunk/nightly-test:7086)
+ A /trunk/tools/update-patchv (from /trunk/update-patchv:7086)
+ A /trunk/tools/update-version (from /trunk/update-version:7086)
+ A /trunk/tune
+ A /trunk/tune/Makefile.am
+ A /trunk/tune/bidimensional_sample.c (from /trunk/bidimensional_sample.c:7086)
+ A /trunk/tune/speed.c (from /trunk/speed.c:7086)
+ A /trunk/tune/tuneup.c (from /trunk/tuneup.c:7086)
+ D /trunk/tuneup.c
+ D /trunk/uceil_exp2.c
+ D /trunk/uceil_log2.c
+ D /trunk/ufloor_log2.c
+ D /trunk/ui_div.c
+ D /trunk/ui_pow.c
+ D /trunk/ui_pow_ui.c
+ D /trunk/ui_sub.c
+ D /trunk/update-faq
+ D /trunk/update-patchv
+ D /trunk/update-version
+ D /trunk/urandom.c
+ D /trunk/urandomb.c
+ D /trunk/vasprintf.c
+ D /trunk/version.c
+ D /trunk/volatile.c
+ D /trunk/yn.c
+ D /trunk/zeta.c
+ D /trunk/zeta_ui.c
+
+Source reorganization. In short:
+ * Added directories and moved related files into them:
+ - src for the MPFR source files (to build the library).
+ - doc for documentation files (except INSTALL, README...).
+ - tools for various tools (scripts) and mbench.
+ - tune for tuneup-related source files.
+ - other for other source files (not distributed in tarballs).
+ Existing directories:
+ - tests for the source files of the test suite (make check).
+ - examples for examples.
+ - m4 for m4 files.
+ * Renamed configure.in to configure.ac.
+ * Added/updated Makefile.am files where needed.
+ * Updated acinclude.m4 and configure.ac (AC_CONFIG_FILES line).
+ * Updated the documentation (INSTALL, README, doc/README.dev and
+ doc/mpfr.texi).
+ * Updated NEWS and TODO.
+ * Updated the scripts now in tools.
+
+The following script was used:
+
+#!/usr/bin/env zsh
+svn mkdir doc other src tools tune
+svn mv ${${(M)$(sed -n '/libmpfr_la_SOURCES/,/[^\]$/p' \
+ Makefile.am):#*.[ch]}:#get_patches.c} mparam_h.in \
+ round_raw_generic.c jyn_asympt.c src
+svn mv mbench check_inits_clears coverage get_patches.sh mpfrlint \
+ nightly-test update-patchv update-version tools
+svn mv bidimensional_sample.c speed.c tuneup.c tune
+svn mv *.{c,h} other
+svn mv FAQ.html README.dev algorithm* faq.xsl fdl.texi mpfr.texi \
+ update-faq doc
+svn mv configure.in configure.ac
+svn cp Makefile.am src/Makefile.am
+svn rm replace_all
+[Modifying some files, see above]
+svn add doc/Makefile.am
+svn add tune/Makefile.am
+------------------------------------------------------------------------
+r7086 | vlefevre | 2010-08-16 13:09:20 +0000 (Mon, 16 Aug 2010) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Updated -version-info (the interface hasn't really been
+changed yet -- though the future bug fix / rewrite of mpfr_mul_q and
+mpfr_div_q could be seen as an addition -- but this eases maintenance
+and avoids -version-info conflict with the 3.0 branch).
+------------------------------------------------------------------------
+r7085 | vlefevre | 2010-08-16 12:40:14 +0000 (Mon, 16 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/bidimensional_sample.c
+
+[bidimensional_sample.c] Added copyright notice.
+------------------------------------------------------------------------
+r7084 | vlefevre | 2010-08-16 12:37:37 +0000 (Mon, 16 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] Prototype clean-up.
+------------------------------------------------------------------------
+r7083 | vlefevre | 2010-08-16 09:21:21 +0000 (Mon, 16 Aug 2010) | 12 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/acinclude.m4
+ M /trunk/fits_intmax.c
+ M /trunk/fits_uintmax.c
+ M /trunk/get_sj.c
+ M /trunk/get_uj.c
+ M /trunk/m4/size_max.m4
+ M /trunk/set_sj.c
+ M /trunk/set_uj.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/vasprintf.c
+
+Avoid a compilation failure on OSF/1 (Tru64) 5.1 due to non-C99
+conformance though <inttypes.h> is available. In various source
+files and m4 files, use the following form only:
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+Updated README.dev to mention this form.
+------------------------------------------------------------------------
+r7078 | vlefevre | 2010-08-13 14:46:58 +0000 (Fri, 13 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/random2.c
+
+Deleted old svn:mergeinfo property on tests/random2.c
+------------------------------------------------------------------------
+r7077 | vlefevre | 2010-08-13 10:11:25 +0000 (Fri, 13 Aug 2010) | 10 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tzeta_ui.c
+
+[tests] Avoid warning due to -Wunused-but-set-variable (from future
+GCC 4.6). Only let the one from tsubnormal.c because it's a TODO.
+ * mpf_compat.h: use the variables, that are there for prototype
+ checking.
+ * tpow.c, tpow_z.c: test the ternary value.
+ * tremquo.c: removed inex variables (the bug due to the MPFR value).
+ * tset.c: test the ternary value.
+ * tset_ld.c: removed the long double variable (it cannot be tested
+ in a portable way and the bug was an assertion failure).
+ * tzeta_ui.c: removed the inexact variable (not really useful here).
+------------------------------------------------------------------------
+r7076 | vlefevre | 2010-08-13 09:44:19 +0000 (Fri, 13 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/get_f.c
+
+[get_f.c] Avoid warning due to -Wunused-but-set-variable (from
+future GCC 4.6).
+------------------------------------------------------------------------
+r7075 | vlefevre | 2010-08-13 09:41:27 +0000 (Fri, 13 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+[gamma.c] Avoid warning due to -Wunused-but-set-variable (from
+future GCC 4.6).
+------------------------------------------------------------------------
+r7074 | vlefevre | 2010-08-13 09:38:28 +0000 (Fri, 13 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+
+[gmp_op.c] Avoid warning due to -Wunused-but-set-variable (from
+future GCC 4.6).
+------------------------------------------------------------------------
+r7073 | vlefevre | 2010-08-13 09:32:58 +0000 (Fri, 13 Aug 2010) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] No longer define qn and sizer, which are no longer used since
+r6919. This was detected by gcc-snapshot (4.6.0 prerelease) under Debian
+(-Wunused-but-set-variable).
+------------------------------------------------------------------------
+r7072 | vlefevre | 2010-08-13 08:12:06 +0000 (Fri, 13 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Update.
+------------------------------------------------------------------------
+r7071 | vlefevre | 2010-08-13 08:11:16 +0000 (Fri, 13 Aug 2010) | 3 lines
+Changed paths:
+ M /trunk/ieee_floats.h
+
+[ieee_floats.h] Avoid breaking aliasing-rules when _GMP_IEEE_FLOATS is
+defined (e.g. with --with-gmp-build), by replacing a struct by a union
+like in r6381 for long double.
+------------------------------------------------------------------------
+r7070 | vlefevre | 2010-08-13 07:58:14 +0000 (Fri, 13 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] Removed useless slash.
+------------------------------------------------------------------------
+r7069 | vlefevre | 2010-08-12 14:28:59 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Prepare for new version.
+------------------------------------------------------------------------
+r7067 | vlefevre | 2010-08-12 14:13:48 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Removed obsolete paragraph about the old prepare script.
+------------------------------------------------------------------------
+r7066 | vlefevre | 2010-08-12 13:46:41 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/update-version
+
+[update-version] Detect errors.
+------------------------------------------------------------------------
+r7065 | vlefevre | 2010-08-12 10:51:17 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/FAQ.html
+
+Updated FAQ.html with update-faq.
+------------------------------------------------------------------------
+r7064 | vlefevre | 2010-08-12 10:50:56 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/faq.xsl
+
+[faq.xsl] Do not copy XML comments.
+------------------------------------------------------------------------
+r7063 | vlefevre | 2010-08-12 10:48:45 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/FAQ.html
+
+Updated FAQ.html with update-faq.
+------------------------------------------------------------------------
+r7059 | vlefevre | 2010-08-12 08:52:54 +0000 (Thu, 12 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] INRIAGforge -> INRIAGForge.
+------------------------------------------------------------------------
+r7058 | vlefevre | 2010-08-12 08:49:23 +0000 (Thu, 12 Aug 2010) | 5 lines
+Changed paths:
+ M /trunk/README
+
+[README] Update:
+ * InriaGforge -> INRIAGForge (official typography).
+ * Updated URL of the Subversion FAQ (now on apache.org).
+ * README.dev provided via SVN only.
+ * Removed the old note about the old CVS repository.
+------------------------------------------------------------------------
+r7057 | vlefevre | 2010-08-11 13:56:25 +0000 (Wed, 11 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/gmp_op.c
+
+[gmp_op.c] mpfr_mul_q and mpfr_div_q are still buggy; added comment.
+------------------------------------------------------------------------
+r7056 | vlefevre | 2010-08-11 13:39:05 +0000 (Wed, 11 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+[tests/tgmpop.c] Added missing "static".
+------------------------------------------------------------------------
+r7055 | thevenyp | 2010-08-11 10:48:45 +0000 (Wed, 11 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+gmp_op.c: Fix ternary value returned by mpfr_mul_q and mpfr_div_q in overflow cases.
+------------------------------------------------------------------------
+r7051 | vlefevre | 2010-08-04 23:51:21 +0000 (Wed, 04 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release" (test of FP division by 0).
+------------------------------------------------------------------------
+r7050 | vlefevre | 2010-08-04 23:45:25 +0000 (Wed, 04 Aug 2010) | 10 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_ld.c
+
+Support implementations where the floating-point division by 0 fails.
+ * acinclude.m4: added a test to check whether the FP division by 0
+ fails, and define MPFR_ERRDIVZERO in such a case.
+ * tests/tests.c: if MPFR_TEST_DIVBYZERO is defined, test whether
+ there has been a floating-point division by 0 (FE_DIVBYZERO or
+ FE_INVALID exception).
+ * tests/tgeneric.c: if MPFR_ERRDIVZERO is defined, disable the
+ huge and tiny cases.
+ * tests/t*_{flt,d,ld}.c: if MPFR_ERRDIVZERO is defined, disable
+ tests involving NaN and infinities.
+------------------------------------------------------------------------
+r7049 | vlefevre | 2010-08-04 22:09:17 +0000 (Wed, 04 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Update about the compilers.
+------------------------------------------------------------------------
+r7048 | vlefevre | 2010-08-04 14:50:54 +0000 (Wed, 04 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Mention clang.
+------------------------------------------------------------------------
+r7047 | vlefevre | 2010-08-04 14:25:17 +0000 (Wed, 04 Aug 2010) | 7 lines
+Changed paths:
+ M /trunk/get_sj.c
+
+[get_sj.c] Fixed bug found by John Regehr:
+https://gforge.inria.fr/tracker/index.php?func=detail&aid=10839&group_id=136&atid=619
+Note: the problem was an undefined behavior that could occur when
+sizeof(mp_limb_t) < sizeof(intmax_t) and |x| was small enough,
+because a right shift was >= the type width. However as the shifted
+value was 0, most platforms should not be affected by this bug. This
+problem was detected with clang -fcatch-undefined-ansic-behavior.
+------------------------------------------------------------------------
+r7046 | vlefevre | 2010-08-04 14:05:09 +0000 (Wed, 04 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tget_sj.c
+
+[tests/tget_sj.c] Added tests of 1 and -1.
+------------------------------------------------------------------------
+r7045 | vlefevre | 2010-08-04 13:35:48 +0000 (Wed, 04 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/get_sj.c
+
+[get_sj.c] Added assertions concerning
+https://gforge.inria.fr/tracker/?func=detail&atid=619&aid=10839&group_id=136
+------------------------------------------------------------------------
+r7044 | vlefevre | 2010-08-04 10:59:01 +0000 (Wed, 04 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] When logging is enabled, remove the possible -pedantic
+from GMP's CFLAGS to avoid warnings about C conformance.
+------------------------------------------------------------------------
+r7043 | vlefevre | 2010-08-04 10:17:14 +0000 (Wed, 04 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+[mpfr-impl.h] Reverse-merged changeset r7042. The code was not
+incorrect: the warning is due to the -pedantic from GMP's CFLAGS.
+------------------------------------------------------------------------
+r7042 | vlefevre | 2010-08-04 09:58:06 +0000 (Wed, 04 Aug 2010) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+[mpfr-impl.h] Correction to avoid GCC warnings
+ warning: invalid storage class for function 'x_f'
+ warning: invalid storage class for function '__mpfr_log_cleanup'
+when building MPFR with logging support.
+------------------------------------------------------------------------
+r7041 | vlefevre | 2010-08-03 15:16:22 +0000 (Tue, 03 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+[mpfrlint] Correction for the future MPFR source structure.
+------------------------------------------------------------------------
+r7040 | vlefevre | 2010-08-03 15:08:22 +0000 (Tue, 03 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+[mpfrlint] Execute check_inits_clears.
+------------------------------------------------------------------------
+r7039 | vlefevre | 2010-08-03 15:06:58 +0000 (Tue, 03 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/check_inits_clears
+
+[check_inits_clears] Correction.
+------------------------------------------------------------------------
+r7038 | vlefevre | 2010-08-02 15:07:51 +0000 (Mon, 02 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Moved ieee_floats.h from EXTRA_DIST to libmpfr_la_SOURCES.
+------------------------------------------------------------------------
+r7037 | vlefevre | 2010-08-02 15:03:24 +0000 (Mon, 02 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Clean-up: removed gen_inverse.h from EXTRA_DIST because
+it is already in libmpfr_la_SOURCES.
+------------------------------------------------------------------------
+r7036 | vlefevre | 2010-08-01 19:47:36 +0000 (Sun, 01 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] Removed the comment about the dependency bug.
+(svn merge -r7032:7031 mparam_h.in)
+------------------------------------------------------------------------
+r7033 | vlefevre | 2010-08-01 19:26:12 +0000 (Sun, 01 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Added "BUILT_SOURCES = mparam.h", fixing bug
+https://gforge.inria.fr/tracker/index.php?func=detail&aid=10810&group_id=136&atid=619
+------------------------------------------------------------------------
+r7032 | vlefevre | 2010-08-01 18:45:45 +0000 (Sun, 01 Aug 2010) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] Added a comment concerning the bug in the mparam.h dependency rule:
+https://gforge.inria.fr/tracker/index.php?func=detail&aid=10810&group_id=136&atid=619
+------------------------------------------------------------------------
+r7031 | vlefevre | 2010-08-01 18:39:52 +0000 (Sun, 01 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] Enable C mode for Emacs.
+------------------------------------------------------------------------
+r7030 | vlefevre | 2010-08-01 17:09:24 +0000 (Sun, 01 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] Deleted trailing whitespace.
+------------------------------------------------------------------------
+r7029 | vlefevre | 2010-08-01 17:08:36 +0000 (Sun, 01 Aug 2010) | 1 line
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] Bug fix: added a newline at the end of the file.
+------------------------------------------------------------------------
+r7026 | vlefevre | 2010-07-30 15:44:24 +0000 (Fri, 30 Jul 2010) | 4 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/INSTALL
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/README.dev
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/ai.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/bernoulli.c
+ M /trunk/buildopt.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/digamma.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erfc.c
+ M /trunk/examples/divworst.c
+ M /trunk/examples/rndo-add.c
+ M /trunk/examples/sample.c
+ M /trunk/examples/version.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gammaonethird.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_flt.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/ieee_floats.h
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/isregular.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/min_prec.c
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-thread.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/scale2.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_flt.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/set_z_exp.c
+ M /trunk/set_zero.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/digamma
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/random2.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tai.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdigamma.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmin_prec.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tset_z_exp.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstdint.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/turandom.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandom.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta_ui.c
+
+Replaced
+ Contributed by the Arenaire and Cacao projects
+by
+ Contributed by the Arenaire and Caramel projects
+------------------------------------------------------------------------
+r7024 | vlefevre | 2010-07-30 15:26:12 +0000 (Fri, 30 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/AUTHORS
+
+[AUTHORS] Updated a sentence.
+------------------------------------------------------------------------
+r7021 | vlefevre | 2010-07-30 09:36:55 +0000 (Fri, 30 Jul 2010) | 1 line
+Changed paths:
+ M /trunk
+
+Added configure.lineno (generated by configure) to svn:ignore property.
+------------------------------------------------------------------------
+r7016 | vlefevre | 2010-07-29 16:01:45 +0000 (Thu, 29 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] For announces, changed mpfr into mpfr-announce.
+------------------------------------------------------------------------
+r7014 | vlefevre | 2010-07-26 11:12:22 +0000 (Mon, 26 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] Replaced mp_exp_t by mpfr_exp_t.
+------------------------------------------------------------------------
+r7013 | vlefevre | 2010-07-25 19:31:31 +0000 (Sun, 25 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] Fixed several bugs in mpfr_ai.
+------------------------------------------------------------------------
+r7010 | schevill | 2010-07-20 13:18:42 +0000 (Tue, 20 Jul 2010) | 3 lines
+Changed paths:
+ M /trunk/bidimensional_sample.c
+
+Updated bidimensional_sample to take into account the fact the mpfr_ai1 and mpfr_ai2 are now statically defined.
+
+
+------------------------------------------------------------------------
+r7009 | schevill | 2010-07-20 12:49:26 +0000 (Tue, 20 Jul 2010) | 3 lines
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/mpfr.h
+
+mpfr_ai1 and mpfr_ai2 are now declared static. Only mpfr_ai is global.
+
+
+------------------------------------------------------------------------
+r7008 | schevill | 2010-07-20 12:38:44 +0000 (Tue, 20 Jul 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Forgot a declaration in the previous commit.
+
+
+------------------------------------------------------------------------
+r7007 | schevill | 2010-07-20 12:32:42 +0000 (Tue, 20 Jul 2010) | 9 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/ai.c
+ D /trunk/ai2.c
+ M /trunk/bidimensional_sample.c
+ M /trunk/mparam_h.in
+ M /trunk/mpfr-impl.h
+ M /trunk/tuneup.c
+
+Added automatic tuning of mpfr_ai.
+
+More precisely:
+* removed ai2.c: both implementations are now in the same file ai.c
+* added thresholds and automatic choice of the method to use in function of the thresholds.
+* added procedures for tuning functions like ai into tuneup.c
+* added a tuning procedure into tuneup.c
+
+
+------------------------------------------------------------------------
+r7005 | vlefevre | 2010-07-19 08:29:11 +0000 (Mon, 19 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tests/tget_flt.c] Fixed printf strings (missing backslash).
+------------------------------------------------------------------------
+r7004 | zimmerma | 2010-07-15 12:54:15 +0000 (Thu, 15 Jul 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tget_flt.c] completed previous commit
+
+------------------------------------------------------------------------
+r7003 | zimmerma | 2010-07-15 12:49:09 +0000 (Thu, 15 Jul 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tget_flt.c] print more information in case a test fails
+
+------------------------------------------------------------------------
+r6999 | vlefevre | 2010-07-09 23:59:50 +0000 (Fri, 09 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/gamma.c
+
+[gamma.c] Added an assert concerning the mpfr_exp_t size.
+------------------------------------------------------------------------
+r6998 | vlefevre | 2010-07-09 23:48:40 +0000 (Fri, 09 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+[tests/tgamma.c] Use mpfr_set_str instead of mpfr_set_d.
+------------------------------------------------------------------------
+r6997 | vlefevre | 2010-07-09 23:33:24 +0000 (Fri, 09 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] Untabified.
+------------------------------------------------------------------------
+r6996 | zimmerma | 2010-07-09 20:09:08 +0000 (Fri, 09 Jul 2010) | 6 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+[gamma.c] fixed bug reported on MPFR list:
+ https://sympa.inria.fr/sympa/arc/mpfr/2010-07/msg00001.html
+ In the underflow detection:
+ * we took log instead of log2
+ * at the end, we added the wrong terms
+
+------------------------------------------------------------------------
+r6995 | vlefevre | 2010-07-01 12:58:19 +0000 (Thu, 01 Jul 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+[mpfr-impl.h] Added a comment concerning the 'noreturn' property.
+------------------------------------------------------------------------
+r6994 | zimmerma | 2010-06-28 15:32:21 +0000 (Mon, 28 Jun 2010) | 6 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] added 3 more bits to initial working precision. On a sample of 20247
+ tests by Sylvain Chevillard with precisions in [50, 100], the number
+ of Ziv's failures decreased from 1184 to 144, which is less than 1%
+ (to reduce to zero, we would have to increase the number of extra
+ bits from 8 to 17).
+
+------------------------------------------------------------------------
+r6993 | vlefevre | 2010-06-28 13:10:28 +0000 (Mon, 28 Jun 2010) | 3 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+[round_prec.c] Applied a patch from Patrick Pélissier (with
+slightly modified comments) to make mpfr_prec_round compatible
+with non-mpfr_init allocation methods when no realloc is needed.
+------------------------------------------------------------------------
+r6989 | vlefevre | 2010-06-25 12:46:50 +0000 (Fri, 25 Jun 2010) | 4 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-gmp.h
+
+[acinclude.m4] Use AC_FUNC_ALLOCA to have HAVE_ALLOCA_H defined
+when available. This problem was introduced when AC_FUNC_ALLOCA
+was removed from configure.in in r6765. Note: building MPFR with
+--with-gmp-build is not affected as GMP's config.h is used.
+------------------------------------------------------------------------
+r6988 | vlefevre | 2010-06-25 11:44:00 +0000 (Fri, 25 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+[mpfr-gmp.h] Reverted incorrect changeset r6987 (see code about alloca).
+------------------------------------------------------------------------
+r6987 | zimmerma | 2010-06-25 10:00:44 +0000 (Fri, 25 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+[mpfr-gmp.h] include alloca.h
+
+------------------------------------------------------------------------
+r6986 | zimmerma | 2010-06-25 08:20:10 +0000 (Fri, 25 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] added comment about config.log
+
+------------------------------------------------------------------------
+r6985 | zimmerma | 2010-06-24 20:39:09 +0000 (Thu, 24 Jun 2010) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] fixed problem reported by Sylvain Chevillard for large x, where the
+ cancelled bits were counted twice
+
+------------------------------------------------------------------------
+r6983 | vlefevre | 2010-06-24 06:11:32 +0000 (Thu, 24 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+[tests/tfprintf.c] Cosmetic improvement suggested by Denis Excoffier.
+------------------------------------------------------------------------
+r6982 | vlefevre | 2010-06-23 13:47:19 +0000 (Wed, 23 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Minor change to match a filename on the website.
+------------------------------------------------------------------------
+r6979 | vlefevre | 2010-06-23 10:13:07 +0000 (Wed, 23 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+[tests/tout_str.c] Fixed bug introduced in r6976: changed size_t into
+unsigned int for printf (the size of unsigned int is sufficient here).
+------------------------------------------------------------------------
+r6978 | vlefevre | 2010-06-22 15:59:16 +0000 (Tue, 22 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/out_str.c
+
+[out_str.c] Handle the output errors.
+------------------------------------------------------------------------
+r6977 | vlefevre | 2010-06-22 15:27:34 +0000 (Tue, 22 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+[out_str.c] Handle output error in the special cases of mpfr_out_str
+(and use MPFR_IS_SINGULAR like in the other functions).
+------------------------------------------------------------------------
+r6976 | thevenyp | 2010-06-22 14:59:21 +0000 (Tue, 22 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/out_str.c
+ M /trunk/tests/tout_str.c
+
+Fix wrong return value of mpfr_out_str on special values.
+------------------------------------------------------------------------
+r6974 | vlefevre | 2010-06-22 13:24:56 +0000 (Tue, 22 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version to 3.1.0-dev.
+------------------------------------------------------------------------
+r6973 | vlefevre | 2010-06-22 13:23:33 +0000 (Tue, 22 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Added a paragraph about the precision, rounding mode and
+exponent types.
+------------------------------------------------------------------------
+r6972 | vlefevre | 2010-06-22 13:17:29 +0000 (Tue, 22 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/ai2.c
+ M /trunk/bidimensional_sample.c
+ M /trunk/gammaonethird.c
+ M /trunk/get_f.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfrlint
+
+In mpfrlint, detect the use of mp_exp_t and mp_prec_t.
+Fixed the files that were generating warnings.
+------------------------------------------------------------------------
+r6971 | schevill | 2010-06-22 13:12:09 +0000 (Tue, 22 Jun 2010) | 3 lines
+Changed paths:
+ M /trunk/ai2.c
+
+I forgot to replace one occurrence of isqrt.
+
+
+------------------------------------------------------------------------
+r6968 | schevill | 2010-06-22 08:45:00 +0000 (Tue, 22 Jun 2010) | 4 lines
+Changed paths:
+ M /trunk/ai2.c
+
+Use of __gmpfr_isqrt instead of my own isqrt wrapper.
+
+
+
+------------------------------------------------------------------------
+r6967 | schevill | 2010-06-22 08:43:18 +0000 (Tue, 22 Jun 2010) | 6 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/bidimensional_sample.c
+
+Added a tool for nicely displaying which method is the best in function of x
+and prec when several method can be used for evaluating a given function f in x
+at precision prec.
+
+
+
+------------------------------------------------------------------------
+r6965 | vlefevre | 2010-06-21 12:32:44 +0000 (Mon, 21 Jun 2010) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Fixed dist-hook for -dev versions (I assumed that ||
+and && were right associative, while they are left associative).
+Thanks to Laurent Rineau for noticing this problem.
+------------------------------------------------------------------------
+r6964 | zimmerma | 2010-06-21 09:40:15 +0000 (Mon, 21 Jun 2010) | 9 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] fixed inefficiency for large x: the initial precision was too small,
+ which had the effect that the first Ziv iteration did fail with
+ non-negligible probability (problem reported by Sylvain Chevillard).
+ Also in case of 2 iterations or more the K variable was corrupted.
+Note (2012-03-03): huge inefficiency has been noticed when evaluating
+mpfr_exp on an argument close to log(2^n) in RNDU:
+ https://sympa.inria.fr/sympa/arc/mpfr/2012-03/msg00000.html
+One has an obvious hard-to-round case, meaning that several iterations
+are needed and that K is corrupted. This changeset fixes this bug.
+------------------------------------------------------------------------
+r6962 | zimmerma | 2010-06-15 21:14:08 +0000 (Tue, 15 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added note about problem with MSVC runtime (seems to be fixed)
+
+------------------------------------------------------------------------
+r6961 | zimmerma | 2010-06-15 20:46:21 +0000 (Tue, 15 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/mbench/Makefile
+
+[Makefile] alternate patch to r6959 from Patrick Pelissier
+
+------------------------------------------------------------------------
+r6960 | zimmerma | 2010-06-15 16:56:09 +0000 (Tue, 15 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] comments from Vincent Lefevre
+
+------------------------------------------------------------------------
+r6959 | zimmerma | 2010-06-15 12:14:12 +0000 (Tue, 15 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/mbench/Makefile
+ M /trunk/mbench/mfv5.h
+
+[mbench] fixes to make mbench work again (tested with GCC 4.4.3)
+
+------------------------------------------------------------------------
+r6958 | zimmerma | 2010-06-15 11:18:50 +0000 (Tue, 15 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] updated notes on Windows (contributed by Brian Gladman)
+
+------------------------------------------------------------------------
+r6955 | vlefevre | 2010-06-10 14:10:03 +0000 (Thu, 10 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] Reordered check_PROGRAMS.
+------------------------------------------------------------------------
+r6953 | vlefevre | 2010-06-10 11:49:55 +0000 (Thu, 10 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Untabified.
+------------------------------------------------------------------------
+r6951 | vlefevre | 2010-06-10 11:26:38 +0000 (Thu, 10 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/BUGS
+
+[BUGS] Update.
+------------------------------------------------------------------------
+r6943 | vlefevre | 2010-06-09 11:26:02 +0000 (Wed, 09 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Added a note on Mac OS X; thanks to FX Coudert and Fumihiro
+Chiba: https://sympa.inria.fr/sympa/arc/mpfr/2010-06/msg00011.html
+------------------------------------------------------------------------
+r6940 | vlefevre | 2010-06-08 16:17:48 +0000 (Tue, 08 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Update concerning CC/CFLAGS and the --with-gmp-build option.
+------------------------------------------------------------------------
+r6938 | vlefevre | 2010-06-07 08:20:58 +0000 (Mon, 07 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Added an item about the --with-gmp-build configure option and
+the use of GMP's internal header files.
+------------------------------------------------------------------------
+r6933 | vlefevre | 2010-06-06 11:21:26 +0000 (Sun, 06 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] Reverted incorrect optimization patch r6922 (added a comment).
+There were failures on 32-bit machines.
+------------------------------------------------------------------------
+r6932 | vlefevre | 2010-06-06 11:17:06 +0000 (Sun, 06 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+[mpfr-impl.h] Added log messages for the MPFR_GROUP_* macros.
+------------------------------------------------------------------------
+r6930 | vlefevre | 2010-06-06 10:16:01 +0000 (Sun, 06 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+[mpfrlint] Detect incorrect use of MPFR_LOG_MSG.
+------------------------------------------------------------------------
+r6929 | vlefevre | 2010-06-06 10:06:40 +0000 (Sun, 06 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/ai2.c
+
+[ai2.c] Fixed build failure with --enable-logging, due to incorrect
+MPFR_LOG_MSG usage (see README.dev).
+------------------------------------------------------------------------
+r6927 | vlefevre | 2010-06-06 10:00:50 +0000 (Sun, 06 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release".
+------------------------------------------------------------------------
+r6925 | vlefevre | 2010-06-06 09:47:32 +0000 (Sun, 06 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] Fixed build failure with --enable-logging, due to incorrect
+MPFR_LOG_MSG usage (see README.dev).
+------------------------------------------------------------------------
+r6922 | zimmerma | 2010-06-04 18:32:18 +0000 (Fri, 04 Jun 2010) | 9 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] speed improvement using MPFR_GROUP_* (from Patrick Pelissier):
+Pass 69
+ mpfr_add: 63 / 102.97 / 126
+ mpfr_exp: 430 / 11861.26 / 46588
+Was before we removed MY_MPZ_INIT:
+Pass 50
+ mpfr_add: 63 / 103.09 / 126
+ mpfr_exp: 430 / 10911.86 / 44215
+
+------------------------------------------------------------------------
+r6920 | vlefevre | 2010-06-04 08:37:54 +0000 (Fri, 04 Jun 2010) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] Removed useless and possibly incorrect cast
+(in case -q doesn't necessarily fit in an int).
+------------------------------------------------------------------------
+r6919 | zimmerma | 2010-06-04 07:51:27 +0000 (Fri, 04 Jun 2010) | 14 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] got rid of MY_INIT_MPZ, small slowdown, but code should be more
+ robust. Below are timings from Patrick Pelissier with mbench:
+mpz_init:
+Pass 78
+ mpfr_add: 63 / 102.86 / 126
+ mpfr_exp: 441 / 12067.81 / 47355
+
+MY_MPZ_INIT
+Pass 50
+ mpfr_add: 63 / 103.09 / 126
+ mpfr_exp: 430 / 10911.86 / 44215
+
+Prec=53 bits (core 2 duo 64 bits)
+
+------------------------------------------------------------------------
+r6918 | zimmerma | 2010-06-03 16:18:31 +0000 (Thu, 03 Jun 2010) | 22 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] fixed problem reported by Sylvain Chevillard with following code
+ and MPFR_EXP_2_THRESHOLD=36 (valgrind complains).
+ It was due to the fact that GMP might allocate extra limbs,
+ see http://gmplib.org/list-archives/gmp-devel/2010-June/001577.html.
+ The fix is not optimal in the sense that GMP does not give a bound
+ on the allocated memory, thus we can only guess.
+
+#include "mpfr.h"
+int main(void) {
+ mpfr_t x,w;
+
+ mpfr_init2(x, 37);
+ mpfr_init2(w, 37);
+ mpfr_set_str(x, "-1.000001100100100001111110110101010001p+20", 2, MPFR_RNDN);
+ mpfr_exp (w, x, MPFR_RNDN);
+
+ mpfr_clear (w);
+ mpfr_clear (x);
+
+ return 0;
+}
+
+------------------------------------------------------------------------
+r6915 | vlefevre | 2010-06-03 15:07:52 +0000 (Thu, 03 Jun 2010) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Math library check: removed rule specific to HP-UX
+(only -lM was tested while this library may not be available; so,
+let's use the default rule as -lm works).
+------------------------------------------------------------------------
+r6912 | vlefevre | 2010-06-03 08:24:49 +0000 (Thu, 03 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Arenaire -> Arénaire.
+------------------------------------------------------------------------
+r6909 | vlefevre | 2010-06-02 11:02:34 +0000 (Wed, 02 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] 3.0 -> 3.0.0.
+------------------------------------------------------------------------
+r6907 | vlefevre | 2010-06-02 11:01:18 +0000 (Wed, 02 Jun 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Added test coverage for MPFR 3.0.0.
+------------------------------------------------------------------------
+r6904 | vlefevre | 2010-05-31 22:43:23 +0000 (Mon, 31 May 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Added missing blank lines (consistency).
+------------------------------------------------------------------------
+r6901 | vlefevre | 2010-05-31 22:27:56 +0000 (Mon, 31 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tset_z_exp.c
+
+[tests/tset_z_exp.c] Fixed type in a printf.
+------------------------------------------------------------------------
+r6900 | zimmerma | 2010-05-31 20:10:06 +0000 (Mon, 31 May 2010) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added instructions for "make tune"
+
+------------------------------------------------------------------------
+r6899 | zimmerma | 2010-05-31 20:01:03 +0000 (Mon, 31 May 2010) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] completed missing instructions for "make tune"
+
+------------------------------------------------------------------------
+r6898 | zimmerma | 2010-05-31 19:36:42 +0000 (Mon, 31 May 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_z_exp.c
+
+[tset_z_exp.c] fixed two FIXME
+
+------------------------------------------------------------------------
+r6897 | vlefevre | 2010-05-31 14:29:44 +0000 (Mon, 31 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tset_z_exp.c
+
+[tests/tset_z_exp.c] Added 2 FIXME in the test.
+------------------------------------------------------------------------
+r6896 | vlefevre | 2010-05-31 14:20:24 +0000 (Mon, 31 May 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_z_exp.c
+
+[tests/tset_z_exp.c] Removed testcase bug20100531 (this was a bug in
+the test, which didn't detect overflow cases due to too large random
+exponent).
+------------------------------------------------------------------------
+r6895 | vlefevre | 2010-05-31 14:12:27 +0000 (Mon, 31 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tset_z_exp.c
+
+[tests/tset_z_exp.c] Added testcase bug20100531.
+------------------------------------------------------------------------
+r6893 | vlefevre | 2010-05-31 13:44:36 +0000 (Mon, 31 May 2010) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+[mpfr.texi, NEWS] Update related to r6879: "Made defined the previously
+undefined cases of mpfr_get_si, mpfr_get_ui, mpfr_get_sj, mpfr_get_uj,
+mpfr_get_z and mpfr_get_z_2exp. In such cases, the erange flag is set.".
+------------------------------------------------------------------------
+r6892 | vlefevre | 2010-05-31 13:08:17 +0000 (Mon, 31 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Corrected mpfr_atan2 range (added in r6831).
+------------------------------------------------------------------------
+r6891 | vlefevre | 2010-05-28 15:07:49 +0000 (Fri, 28 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Made an example fit on 80 columns for the info manual.
+------------------------------------------------------------------------
+r6890 | vlefevre | 2010-05-28 14:29:08 +0000 (Fri, 28 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Changed some @math into @var in the mpfr_fmod description
+(for consistency).
+------------------------------------------------------------------------
+r6889 | vlefevre | 2010-05-28 10:54:55 +0000 (Fri, 28 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Corrected a paragraph.
+------------------------------------------------------------------------
+r6888 | vlefevre | 2010-05-28 10:33:21 +0000 (Fri, 28 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Added an example to get the MPFR version (and at the same
+time, check whether MPFR is already installed).
+------------------------------------------------------------------------
+r6886 | vlefevre | 2010-05-28 09:52:37 +0000 (Fri, 28 May 2010) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/examples/version.c
+
+Added examples/version.c (and updated Makefile.am).
+------------------------------------------------------------------------
+r6885 | vlefevre | 2010-05-28 09:25:36 +0000 (Fri, 28 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Correction (English usage).
+------------------------------------------------------------------------
+r6883 | vlefevre | 2010-05-28 08:16:16 +0000 (Fri, 28 May 2010) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Improved dist-hook rule.
+------------------------------------------------------------------------
+r6882 | thevenyp | 2010-05-27 09:14:02 +0000 (Thu, 27 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix typo.
+------------------------------------------------------------------------
+r6881 | zimmerma | 2010-05-26 19:39:02 +0000 (Wed, 26 May 2010) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] removed one item, added one
+
+------------------------------------------------------------------------
+r6880 | zimmerma | 2010-05-26 19:35:30 +0000 (Wed, 26 May 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] removed FIXME (resolved: Philippe confirmed that gmp_printf does
+ not work with mpf2mpfr.h)
+
+------------------------------------------------------------------------
+r6879 | vlefevre | 2010-05-25 16:19:48 +0000 (Tue, 25 May 2010) | 3 lines
+Changed paths:
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tset_si.c
+
+Made defined the previously undefined cases of mpfr_get_si, mpfr_get_ui,
+mpfr_get_sj, mpfr_get_uj, mpfr_get_z and mpfr_get_z_2exp. In such cases,
+the erange flag is set.
+------------------------------------------------------------------------
+r6878 | schevill | 2010-05-25 14:27:57 +0000 (Tue, 25 May 2010) | 3 lines
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+
+* 80 columns.
+
+
+------------------------------------------------------------------------
+r6877 | schevill | 2010-05-25 14:14:37 +0000 (Tue, 25 May 2010) | 3 lines
+Changed paths:
+ M /trunk/gammaonethird.c
+
+do ... while(0) style for macros.
+
+
+------------------------------------------------------------------------
+r6875 | vlefevre | 2010-05-25 13:20:34 +0000 (Tue, 25 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Correction.
+------------------------------------------------------------------------
+r6873 | vlefevre | 2010-05-25 11:05:42 +0000 (Tue, 25 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Minor changes.
+------------------------------------------------------------------------
+r6872 | vlefevre | 2010-05-25 10:43:08 +0000 (Tue, 25 May 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] Reverted incorrect changeset r6870.
+------------------------------------------------------------------------
+r6871 | vlefevre | 2010-05-25 10:41:44 +0000 (Tue, 25 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Added a comment about non-ASCII characters.
+------------------------------------------------------------------------
+r6870 | thevenyp | 2010-05-25 10:38:51 +0000 (Tue, 25 May 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/mpfr.texi
+
+More explicit documentation on the use of specifiers in printf function.
+------------------------------------------------------------------------
+r6869 | vlefevre | 2010-05-25 10:34:07 +0000 (Tue, 25 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Encoding correction for ±.
+------------------------------------------------------------------------
+r6868 | vlefevre | 2010-05-25 10:26:12 +0000 (Tue, 25 May 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+[NEWS, mpfr.texi] mpfr_custom_get_mantissa was renamed to
+mpfr_custom_get_significand.
+------------------------------------------------------------------------
+r6867 | vlefevre | 2010-05-25 10:15:30 +0000 (Tue, 25 May 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tstckintc.c
+
+[tests/tstckintc.c] Changed mpfr_custom_get_mantissa into
+mpfr_custom_get_significand (but mpfr_custom_get_mantissa
+was still working thanks to the #define).
+------------------------------------------------------------------------
+r6866 | vlefevre | 2010-05-25 10:13:26 +0000 (Tue, 25 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/stack_interface.c
+
+[mpfr.h, stack_interface.c] Changed mpfr_custom_get_mantissa into
+mpfr_custom_get_significand (r6862 was incomplete).
+------------------------------------------------------------------------
+r6865 | vlefevre | 2010-05-25 09:29:40 +0000 (Tue, 25 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+[mpfr.h] <stdint.h> support: also test _STDINT (for MS Visual Studio).
+Thanks to Brian Gladman for the information.
+------------------------------------------------------------------------
+r6863 | vlefevre | 2010-05-25 07:24:18 +0000 (Tue, 25 May 2010) | 3 lines
+Changed paths:
+ M /trunk/buildopt.c
+ M /trunk/mpfrlint
+
+[buildopt.c] Missing #include "mpfr-impl.h" for cygwin builds.
+[mpfrlint] Detect such errors (mpfr-impl.h may be needed because it
+ includes config.h when there is one).
+------------------------------------------------------------------------
+r6862 | zimmerma | 2010-05-24 16:56:52 +0000 (Mon, 24 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+[mpfr.texi] more changes after answers by Vincent to my questions
+
+------------------------------------------------------------------------
+r6860 | vlefevre | 2010-05-24 10:54:03 +0000 (Mon, 24 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Reformat / fixed typography.
+------------------------------------------------------------------------
+r6855 | vlefevre | 2010-05-24 00:01:40 +0000 (Mon, 24 May 2010) | 6 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+[sub1sp.c] Fixed a problem that appeared after mpfr_prec_t has been
+made signed. It was visible on PowerPC (tested on Linux 32 bits and
+on Mac OS X 32 & 64 bits), but could potentially affect any platform
+as a negative shift count was generated. As the faulty expressions
+were in a MPFR_ASSERTD, the failure could occur only when assertion
+checking had been enabled.
+------------------------------------------------------------------------
+r6852 | vlefevre | 2010-05-22 23:08:17 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Removed trailing spaces.
+------------------------------------------------------------------------
+r6851 | vlefevre | 2010-05-22 23:06:49 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Added information about intmax_t and corresponding macros.
+------------------------------------------------------------------------
+r6849 | vlefevre | 2010-05-22 22:42:05 +0000 (Sat, 22 May 2010) | 6 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/fits_intmax.c
+ M /trunk/fits_uintmax.c
+ M /trunk/get_sj.c
+ M /trunk/get_uj.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tset_sj.c
+
+Detect when the intmax_t type is available but INTMAX_MAX doesn't work
+(e.g. with gcc -ansi -pedantic-errors in 32-bit mode under GNU/Linux).
+New macros MPFR_UINTMAX_MAX, MPFR_INTMAX_MAX and MPFR_INTMAX_MIN are
+defined and used internally instead of UINTMAX_MAX, INTMAX_MAX and
+INTMAX_MIN. If these C99 macros work, then the MPFR_* macros use them,
+otherwise MPFR uses its own definitions.
+------------------------------------------------------------------------
+r6846 | vlefevre | 2010-05-22 19:41:07 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/gammaonethird.c
+ M /trunk/mpfr-impl.h
+
+mpfr_div_ui8 and mpfr_mul_ui5 didn't have to be exported.
+------------------------------------------------------------------------
+r6845 | vlefevre | 2010-05-22 19:33:22 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+ M /trunk/bernoulli.c
+ M /trunk/buildopt.c
+ M /trunk/digamma.c
+ M /trunk/gammaonethird.c
+ M /trunk/get_flt.c
+ M /trunk/ieee_floats.h
+ M /trunk/isregular.c
+ M /trunk/mbench/mfv5.h
+ M /trunk/mbench/timp.h
+ M /trunk/min_prec.c
+ M /trunk/scale2.c
+ M /trunk/set_flt.c
+ M /trunk/set_z_exp.c
+ M /trunk/set_zero.c
+ M /trunk/speed.c
+ M /trunk/tests/tai.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tdigamma.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tmin_prec.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tset_z_exp.c
+ M /trunk/tests/tstdint.c
+
+Updated Subversion properties.
+------------------------------------------------------------------------
+r6844 | vlefevre | 2010-05-22 19:13:37 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai2.c
+
+[ai2.c] GNU style.
+------------------------------------------------------------------------
+r6843 | vlefevre | 2010-05-22 16:04:13 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai2.c
+
+[ai2.c] Style correction (necessary for ansi2knr, if still useful).
+------------------------------------------------------------------------
+r6842 | vlefevre | 2010-05-22 13:55:22 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+
+[ai.c, ai2.c] Untabified / removed trailing spaces.
+------------------------------------------------------------------------
+r6841 | vlefevre | 2010-05-22 13:53:19 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] GNU style.
+------------------------------------------------------------------------
+r6840 | vlefevre | 2010-05-22 10:21:11 +0000 (Sat, 22 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Corrected the paragraph about whether MPFR is installed.
+------------------------------------------------------------------------
+r6839 | vlefevre | 2010-05-22 00:12:31 +0000 (Sat, 22 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Corrections and answers to PZ comments from r6831.
+The document encoding is now UTF-8.
+------------------------------------------------------------------------
+r6838 | vlefevre | 2010-05-21 21:06:07 +0000 (Fri, 21 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] n-char-sequence was changed into n-char-sequence-opt
+in r6132, but I forgot to update all the occurrences.
+------------------------------------------------------------------------
+r6837 | schevill | 2010-05-21 09:47:13 +0000 (Fri, 21 May 2010) | 5 lines
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+
+* Removed double precision numbers.
+* Handle +0 and -0 the same way.
+* Use MPFR_GET_EXP in ai2.c
+
+
+------------------------------------------------------------------------
+r6836 | schevill | 2010-05-20 14:19:47 +0000 (Thu, 20 May 2010) | 3 lines
+Changed paths:
+ M /trunk/ai.c
+
+* Corrected a bug when x=0 (MPFR_GET_EXP requires to assert that x!=0).
+
+
+------------------------------------------------------------------------
+r6835 | schevill | 2010-05-20 13:34:26 +0000 (Thu, 20 May 2010) | 3 lines
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+ M /trunk/gammaonethird.c
+ M /trunk/mpfr-impl.h
+
+Corrected some warnings.
+
+
+------------------------------------------------------------------------
+r6834 | schevill | 2010-05-20 12:39:34 +0000 (Thu, 20 May 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Corrected an error that prevented the doc from compiling.
+
+
+------------------------------------------------------------------------
+r6833 | vlefevre | 2010-05-20 09:47:02 +0000 (Thu, 20 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: corrections.
+------------------------------------------------------------------------
+r6832 | zimmerma | 2010-05-20 09:35:06 +0000 (Thu, 20 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] explain why mpfr_sum uses an array of pointers to mpfr_t
+
+------------------------------------------------------------------------
+r6831 | zimmerma | 2010-05-20 09:10:47 +0000 (Thu, 20 May 2010) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/fdl.texi
+ M /trunk/mpfr.texi
+
+[mpfr.texi] changes after a complete reading of the documentation.
+ There are some issues left that I don't know how to solve,
+ they are marked with @c PZ in mpfr.texi.
+
+------------------------------------------------------------------------
+r6829 | vlefevre | 2010-05-19 23:07:54 +0000 (Wed, 19 May 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+[mpfr.texi, NEWS] Noted that the mpfr_ai implementation is incomplete
+and experimental.
+------------------------------------------------------------------------
+r6827 | vlefevre | 2010-05-19 23:04:40 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] Use MPFR_IS_SINGULAR. Added a FIXME comment for Ai(0).
+------------------------------------------------------------------------
+r6825 | vlefevre | 2010-05-19 22:41:29 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/turandom.c
+
+Type corrections for C++ compilers (in particular, mpfr_rnd_t vs int).
+------------------------------------------------------------------------
+r6822 | vlefevre | 2010-05-19 14:30:02 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+
+[ai.c] Fixed possible problem in reduced exponent range.
+------------------------------------------------------------------------
+r6821 | vlefevre | 2010-05-19 14:25:02 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+
+Removed trailing spaces.
+------------------------------------------------------------------------
+r6820 | schevill | 2010-05-19 13:48:46 +0000 (Wed, 19 May 2010) | 4 lines
+Changed paths:
+ M /trunk/ai.c
+ M /trunk/ai2.c
+ M /trunk/gammaonethird.c
+
+* Removed some warnings.
+* More conform to GNU coding standards.
+
+
+------------------------------------------------------------------------
+r6818 | vlefevre | 2010-05-19 13:09:29 +0000 (Wed, 19 May 2010) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ D /trunk/patch-aclocal-icc
+
+Removed obsolete patch-aclocal-icc and updated README.dev (about
+"To make a release").
+------------------------------------------------------------------------
+r6813 | vlefevre | 2010-05-19 12:38:01 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] Added a comment concerning -version-info and MPFR 3.0.x.
+------------------------------------------------------------------------
+r6812 | vlefevre | 2010-05-19 11:53:33 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update with "LC_ALL=en_US.UTF8 TZ=UTC svn log -rHEAD:0 -v".
+------------------------------------------------------------------------
+r6811 | vlefevre | 2010-05-19 10:18:37 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Preliminary interfaces are no longer preliminary.
+------------------------------------------------------------------------
+r6810 | vlefevre | 2010-05-19 10:13:39 +0000 (Wed, 19 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] API Compatibility: mention the detection of the availability
+of intmax_t with C++ compilers.
+------------------------------------------------------------------------
+r6809 | vlefevre | 2010-05-19 09:07:33 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] signness -> signedness (thanks to Philippe).
+------------------------------------------------------------------------
+r6808 | vlefevre | 2010-05-19 00:11:39 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Missing @code.
+------------------------------------------------------------------------
+r6807 | vlefevre | 2010-05-19 00:09:11 +0000 (Wed, 19 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Corrected C terminology (table -> array).
+------------------------------------------------------------------------
+r6806 | vlefevre | 2010-05-18 14:40:36 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+[mpfr.texi, NEWS] Mention that mpfr_ai is a new function in MPFR 3.0.
+------------------------------------------------------------------------
+r6805 | vlefevre | 2010-05-18 14:36:05 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ D /trunk/prepare
+
+Removed obsolete prepare script (autoreconf does the same thing).
+------------------------------------------------------------------------
+r6804 | schevill | 2010-05-18 14:34:57 +0000 (Tue, 18 May 2010) | 21 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/ai.c
+ A /trunk/ai2.c
+ A /trunk/gammaonethird.c
+ M /trunk/mpfr.h
+
+* I added a new implementation of Airy Ai. This implementation uses Smith's
+algorithm.
+Currently, it is provided as a separate implementation mpfr_ai2.
+
+* Please note that both mpfr_ai and mpfr_ai2 need to efficiently evaluate
+Gamma(1/3) and Gamma(2/3). This is provided by functions in the file
+gammaonethird.c
+
+* There is no test file for mpfr_ai2 since it should quickly disappear behind
+a single implementation using the best of mpfr_ai and mpfr_ai2.
+However, if necessary, a test file can be obtained by copying tai.c and
+replacing mpfr_ai by mpfr_ai2 everywhere.
+
+* I do not know if gammaonethird.c will remain like that in the future. Should
+we make this implementation available as a public MPFR function? In this case,
+I have to write a wrapper for providing a correctly rounded implementation.
+Moreover, it contains functions that could be interesting for the
+implementation of other functions (the functions mpfr_div_ui*). Maybe, it
+could be worth providing a file specially for this purpose.
+
+
+------------------------------------------------------------------------
+r6803 | vlefevre | 2010-05-18 14:32:07 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Added release name.
+------------------------------------------------------------------------
+r6802 | vlefevre | 2010-05-18 14:30:38 +0000 (Tue, 18 May 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] Updated "Changes from versions 2.3.* to version 2.4.0"
+from MPFR 2.4.2.
+------------------------------------------------------------------------
+r6801 | vlefevre | 2010-05-18 14:25:20 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Completed Section 6.1 "Type and Macro Changes".
+------------------------------------------------------------------------
+r6800 | vlefevre | 2010-05-18 14:07:26 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Updated Section 6.1 "Type and Macro Changes".
+------------------------------------------------------------------------
+r6799 | vlefevre | 2010-05-18 13:57:03 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Missing space.
+------------------------------------------------------------------------
+r6798 | vlefevre | 2010-05-18 13:54:47 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Updated Section 6.1 "Type and Macro Changes".
+------------------------------------------------------------------------
+r6797 | vlefevre | 2010-05-18 13:53:06 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] A bit less ambiguous...
+------------------------------------------------------------------------
+r6796 | vlefevre | 2010-05-18 13:12:49 +0000 (Tue, 18 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] More details for mp_rnd_t/mpfr_rnd_t, like mp_prec_t/mpfr_prec_t.
+------------------------------------------------------------------------
+r6795 | vlefevre | 2010-05-17 15:51:28 +0000 (Mon, 17 May 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+Added "API Compatibility" section to the MPFR manual.
+TODO: Section 6.1 "Type and Macro Changes".
+------------------------------------------------------------------------
+r6794 | vlefevre | 2010-05-17 13:31:19 +0000 (Mon, 17 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] mpfr_strtofr now accepts bases from 37 to 62 (r5965).
+------------------------------------------------------------------------
+r6793 | vlefevre | 2010-05-10 09:25:01 +0000 (Mon, 10 May 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: updated section about MS Windows.
+------------------------------------------------------------------------
+r6792 | vlefevre | 2010-05-10 09:05:12 +0000 (Mon, 10 May 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: updated section about MS Windows.
+------------------------------------------------------------------------
+r6791 | vlefevre | 2010-05-08 17:17:18 +0000 (Sat, 08 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tests.c
+
+[tests/tests.c] Fixed code when _MPFR_PREC_FORMAT != 3.
+------------------------------------------------------------------------
+r6790 | zimmerma | 2010-05-08 08:01:05 +0000 (Sat, 08 May 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+[tests/tests.c] fixed compiler warning (found by nightly tests)
+
+------------------------------------------------------------------------
+r6789 | vlefevre | 2010-05-07 15:13:02 +0000 (Fri, 07 May 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/README.dev
+ M /trunk/TODO
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/ai.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/cmp.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_euler.c
+ M /trunk/cos.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/digamma.c
+ M /trunk/div.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/gamma.c
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_flt.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/isinteger.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/mbench/mfv5.cc
+ M /trunk/mbench/mpfr-v6.c
+ M /trunk/modf.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_z.c
+ M /trunk/print_raw.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/set_d.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_ld.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_z_exp.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tanh.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/random2.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tset_z_exp.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/turandom.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/urandom.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+
+New exponent type mpfr_exp_t for MPFR (replacing GMP's mp_exp_t).
+------------------------------------------------------------------------
+r6788 | vlefevre | 2010-05-07 14:18:54 +0000 (Fri, 07 May 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] Updated a paragraph concerning signed and unsigned types.
+------------------------------------------------------------------------
+r6787 | vlefevre | 2010-05-07 13:57:28 +0000 (Fri, 07 May 2010) | 12 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/tests/tcheck.c
+
+Changed the precision type mpfr_prec_t from an unsigned integer type
+into the corresponding signed integer type, in order to avoid problems
+due to the usual arithmetic conversions when mixing mpfr_prec_t and
+mp_exp_t in an expression.
+* NEWS: mentioned this change.
+* mpfr-impl.h: removed MPFR_INTPREC_MAX (which wasn't used) and updated
+ the MPFR_UNSIGNED_MINUS_MODULO(S,A) macro, which assumed that A was
+ unsigned; this macro now works even when A is signed.
+* mpfr.h: added mpfr_uprec_t; updated mpfr_prec_t and MPFR_PREC_MAX.
+* tests/tcheck.c: disabled a test on MPFR_PREC_MAX+1 with MPFR >= 3
+ (this test doesn't work with a signed mpfr_prec_t and isn't needed).
+Note: all tests pass under GNU Linux x86 and x86_64.
+------------------------------------------------------------------------
+r6786 | vlefevre | 2010-05-07 12:36:55 +0000 (Fri, 07 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tcheck.c
+
+[tests/tcheck.c] Forgot to remove a printf (added during testing).
+------------------------------------------------------------------------
+r6785 | vlefevre | 2010-05-07 12:33:57 +0000 (Fri, 07 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tcheck.c
+
+[tests/tcheck.c] Support signed mpfr_prec_t (avoid integer overflow).
+------------------------------------------------------------------------
+r6784 | vlefevre | 2010-05-07 12:31:53 +0000 (Fri, 07 May 2010) | 1 line
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+
+[tests/mpf_compat.h] Fixed prototype of function main.
+------------------------------------------------------------------------
+r6783 | vlefevre | 2010-05-07 12:23:22 +0000 (Fri, 07 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+[mpfr.h] Added a comment concerning the definition of MPFR_PREC_MAX.
+------------------------------------------------------------------------
+r6782 | vlefevre | 2010-05-06 10:10:52 +0000 (Thu, 06 May 2010) | 2 lines
+Changed paths:
+ M /trunk/print_rnd_mode.c
+
+print_rnd_mode.c: added an assertion so that we do not forget to update
+this file after a new rounding mode is added.
+------------------------------------------------------------------------
+r6780 | vlefevre | 2010-05-03 14:26:06 +0000 (Mon, 03 May 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Added a paragraph about multiple inclusions of mpfr.h and/or
+gmp.h header files.
+------------------------------------------------------------------------
+r6779 | thevenyp | 2010-05-03 14:19:20 +0000 (Mon, 03 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update documentation for mpfr_print_rnd_mode.
+------------------------------------------------------------------------
+r6778 | vlefevre | 2010-05-03 13:15:15 +0000 (Mon, 03 May 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+To avoid breaking the ABI when faithful rounding gets implemented, added
+MPFR_RNDF to the mpfr_rnd_t enum type now, and removed MPFR_RND_MAX from
+the enumeration (it is now defined as a macro in mpfr-impl.h).
+------------------------------------------------------------------------
+r6777 | vlefevre | 2010-05-03 12:52:28 +0000 (Mon, 03 May 2010) | 1 line
+Changed paths:
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+
+fits_* (signed version): corrections and optimizations.
+------------------------------------------------------------------------
+r6776 | vlefevre | 2010-05-03 12:30:46 +0000 (Mon, 03 May 2010) | 5 lines
+Changed paths:
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+
+[fits_uintmax.c, fits_u.h] Some casts could be incorrect in the case
+mp_exp_t > mpfr_prec_t. Set prec to the int type since in practice,
+prec will be small enough to fit in an int. The fact that prec is now
+signed allows us to remove a useless test (also note that prec should
+be computed at compile time, so that this should be at least as fast).
+------------------------------------------------------------------------
+r6775 | vlefevre | 2010-05-03 12:04:56 +0000 (Mon, 03 May 2010) | 1 line
+Changed paths:
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+
+[fits_uintmax.c, fits_u.h] Comments: doesn't -> don't
+------------------------------------------------------------------------
+r6774 | vlefevre | 2010-05-03 11:10:41 +0000 (Mon, 03 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6773 | thevenyp | 2010-05-03 09:20:38 +0000 (Mon, 03 May 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+Add specifier 'Y' for the rounding away from zero mode in printf-like functions.
+------------------------------------------------------------------------
+r6772 | zimmerma | 2010-04-30 16:10:44 +0000 (Fri, 30 Apr 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] removed obsolete mpfr_round_prec
+
+------------------------------------------------------------------------
+r6770 | vlefevre | 2010-04-30 15:57:34 +0000 (Fri, 30 Apr 2010) | 1 line
+Changed paths:
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+
+[fits_intmax.c,fits_s.h] Added FIXME comments.
+------------------------------------------------------------------------
+r6769 | vlefevre | 2010-04-30 15:50:27 +0000 (Fri, 30 Apr 2010) | 2 lines
+Changed paths:
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+
+Optimized fits_u.h and made fits_uintmax.c like fits_u.h for the
+special numbers.
+------------------------------------------------------------------------
+r6768 | vlefevre | 2010-04-30 15:44:39 +0000 (Fri, 30 Apr 2010) | 1 line
+Changed paths:
+ M /trunk/fits_uintmax.c
+
+Optimized mpfr_fits_uintmax_p.
+------------------------------------------------------------------------
+r6767 | vlefevre | 2010-04-30 14:37:47 +0000 (Fri, 30 Apr 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/README.dev
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/cmp2.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/digamma.c
+ M /trunk/eint.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/examples/rndo-add.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_f.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init2.c
+ M /trunk/inits2.c
+ M /trunk/isinteger.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/mbench/mpfr-gfx.c
+ M /trunk/mbench/mpfr-v4.c
+ M /trunk/mbench/mpfr-v6.c
+ M /trunk/modf.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/print_raw.c
+ M /trunk/rec_sqrt.c
+ M /trunk/root.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_z_exp.c
+ M /trunk/setmax.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/turandom.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tuneup.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/urandom.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Changed mp_prec_t into mpfr_prec_t.
+------------------------------------------------------------------------
+r6766 | vlefevre | 2010-04-19 14:35:35 +0000 (Mon, 19 Apr 2010) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] r6765 introduced non-POSIX syntax. Fixed.
+------------------------------------------------------------------------
+r6765 | zimmerma | 2010-04-19 11:26:12 +0000 (Mon, 19 Apr 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] check for GMP internal files only with --with-gmp-build
+
+------------------------------------------------------------------------
+r6764 | vlefevre | 2010-04-12 00:11:48 +0000 (Mon, 12 Apr 2010) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] New function mpfr_regular_p (was added in r6417, 2009-09-14).
+------------------------------------------------------------------------
+r6762 | vlefevre | 2010-04-07 02:15:06 +0000 (Wed, 07 Apr 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+[mpfr-gmp.h] Fixed alloca prototype (bug detected by tcc 0.9.25
+under Linux/x86_64).
+------------------------------------------------------------------------
+r6753 | vlefevre | 2010-03-24 12:45:47 +0000 (Wed, 24 Mar 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Improved/corrected the documentation of functions
+mpfr_lgamma, mpfr_digamma, mpfr_j0/j1/jn, mpfr_y0/y1/yn, mpfr_agm,
+mpfr_hypot and mpfr_min_prec.
+------------------------------------------------------------------------
+r6752 | vlefevre | 2010-03-24 12:24:28 +0000 (Wed, 24 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Removed a "currently" that is no longer needed.
+------------------------------------------------------------------------
+r6751 | vlefevre | 2010-03-24 12:20:41 +0000 (Wed, 24 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Updated description of mpfr_atan2, now that IEEE 754-2008
+has been published and follows the same conventions as C99 for atan2.
+------------------------------------------------------------------------
+r6750 | vlefevre | 2010-03-24 12:12:00 +0000 (Wed, 24 Mar 2010) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Updated description of mpfr_pow, now that IEEE 754-2008
+has been published and follows the same conventions as C99 for pow.
+(IEEE 754-2008 doesn't currently specify pow(±inf,non-zero), but
+I've suggested a correction for the errata page.)
+------------------------------------------------------------------------
+r6747 | vlefevre | 2010-03-23 15:28:41 +0000 (Tue, 23 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Improved documentation of mpfr_print_rnd_mode (from a
+suggestion by Chris Saunders).
+------------------------------------------------------------------------
+r6746 | vlefevre | 2010-03-22 10:59:28 +0000 (Mon, 22 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Various corrections and other improvements.
+------------------------------------------------------------------------
+r6745 | vlefevre | 2010-03-22 10:38:59 +0000 (Mon, 22 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Improved the documentation of mpfr_dim too.
+------------------------------------------------------------------------
+r6744 | zimmerma | 2010-03-22 10:04:29 +0000 (Mon, 22 Mar 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] improved the documentation of mpfr_rec_sqrt and mpfr_cbrt
+ (thanks Vincent)
+
+------------------------------------------------------------------------
+r6743 | zimmerma | 2010-03-22 09:30:44 +0000 (Mon, 22 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] improved documentation of mpfr_sqrt and mpfr_sqrt_ui
+
+------------------------------------------------------------------------
+r6741 | vlefevre | 2010-03-21 18:17:12 +0000 (Sun, 21 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+[mpfr.h] Added a comment about integer overflows in macros.
+------------------------------------------------------------------------
+r6740 | zimmerma | 2010-03-19 14:48:17 +0000 (Fri, 19 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tai.c
+
+[tai.c] enable first test of check_large, and reduced total time
+
+------------------------------------------------------------------------
+r6739 | schevill | 2010-03-19 14:15:23 +0000 (Fri, 19 Mar 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added a mention about the current limitation of mpfr_ai in mpfr.texi.
+
+
+------------------------------------------------------------------------
+r6738 | schevill | 2010-03-19 13:43:13 +0000 (Fri, 19 Mar 2010) | 6 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/tests/tai.c
+
+Removed check of ai.c for large arguments. I added in algorithms.tex a
+mention about the fact that mpfr_ai is currently not made for large
+arguments.
+
+
+
+------------------------------------------------------------------------
+r6737 | schevill | 2010-03-19 12:16:12 +0000 (Fri, 19 Mar 2010) | 3 lines
+Changed paths:
+ M /trunk/ai.c
+
+* Corrected problems regarding the GNU recommendations for formatting source code.
+
+
+------------------------------------------------------------------------
+r6735 | vlefevre | 2010-03-18 12:55:37 +0000 (Thu, 18 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: added tai to the svn:ignore property.
+------------------------------------------------------------------------
+r6734 | zimmerma | 2010-03-18 12:37:13 +0000 (Thu, 18 Mar 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tai.c
+
+[tai.c] reduce the maximal exponents in test_generic()
+ also reduce the number of random tests to decrease the test time
+
+------------------------------------------------------------------------
+r6733 | vlefevre | 2010-03-18 12:26:19 +0000 (Thu, 18 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: in the tests, use mpfr_equal_p rather than mpfr_cmp.
+------------------------------------------------------------------------
+r6732 | zimmerma | 2010-03-18 12:23:43 +0000 (Thu, 18 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tai.c
+
+[tai.c] replace mpfr_cmp by mpfr_equal_p
+
+------------------------------------------------------------------------
+r6731 | vlefevre | 2010-03-18 12:11:29 +0000 (Thu, 18 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tset_z_exp.c
+
+tests/tset_z_exp.c untabified.
+------------------------------------------------------------------------
+r6730 | vlefevre | 2010-03-18 12:11:13 +0000 (Thu, 18 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: removed trailing whitespace.
+------------------------------------------------------------------------
+r6729 | vlefevre | 2010-03-18 11:59:57 +0000 (Thu, 18 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6728 | vlefevre | 2010-03-18 11:54:24 +0000 (Thu, 18 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/AUTHORS
+
+Untabified AUTHORS (consistency).
+------------------------------------------------------------------------
+r6727 | schevill | 2010-03-18 11:50:39 +0000 (Thu, 18 Mar 2010) | 4 lines
+Changed paths:
+ M /trunk/ai.c
+
+* Corrected problems regarding the GNU recommendations for formatting source code.
+* Corrected the date of the copyright.
+
+
+------------------------------------------------------------------------
+r6726 | zimmerma | 2010-03-18 09:50:20 +0000 (Thu, 18 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tai.c
+
+[tai.c] added test for large inputs
+
+------------------------------------------------------------------------
+r6725 | zimmerma | 2010-03-18 09:22:02 +0000 (Thu, 18 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+[AUTHORS] added Sylvain Chevillard
+
+------------------------------------------------------------------------
+r6724 | zimmerma | 2010-03-17 21:12:09 +0000 (Wed, 17 Mar 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] added Sylvain as contributor
+
+------------------------------------------------------------------------
+r6723 | schevill | 2010-03-17 17:35:59 +0000 (Wed, 17 Mar 2010) | 18 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/README.dev
+ A /trunk/ai.c
+ A /trunk/algorithm2e.sty
+ M /trunk/algorithms.tex
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tai.c
+
+* Added function mpfr_ai. The implementation is the most naive: it evaluates
+ the series step by step until it can stop.
+ A special strategy is used to detect possible problems when Ai(x) is very
+ close to 0.
+
+* Updated algorithms.tex with the technical description of the implementation
+ of mpfr_ai.
+
+* Added algorithm2e.sty and algorithm2e-compatibility.sty (necessary to
+ compile algorithms.tex now).
+
+* Updated mpfr.texi to let it know this new function.
+
+* Added a basic test file for mpfr_ai. I will add other test cases later.
+
+* Added a small HOWTO to README.dev about how to add a new test file for new
+ functions.
+
+------------------------------------------------------------------------
+r6720 | vlefevre | 2010-03-11 09:43:53 +0000 (Thu, 11 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+GMP_RNDx -> MPFR_RNDx
+------------------------------------------------------------------------
+r6719 | zimmerma | 2010-03-11 09:24:00 +0000 (Thu, 11 Mar 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+[tstrtofr.c] added test for 1.23e, cf
+ http://gmplib.org/list-archives/gmp-bugs/2010-March/001898.html
+
+------------------------------------------------------------------------
+r6718 | vlefevre | 2010-03-11 01:02:58 +0000 (Thu, 11 Mar 2010) | 4 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+[tests/tsqrt.c] Add the test -1 <= x/sqrt(x^2) <= 1, which corresponds
+to -1 <= x/sqrt(x^2+y^2) <= 1 with y = 0. I don't think the test with
+random y is still necessary, though, since even a bad sqrt accuracy
+would not be detected.
+------------------------------------------------------------------------
+r6717 | vlefevre | 2010-03-10 10:07:46 +0000 (Wed, 10 Mar 2010) | 1 line
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+[tests/tsqrt.c] Added a comment about the x/sqrt(x^2+y^2) test.
+------------------------------------------------------------------------
+r6716 | zimmerma | 2010-03-10 09:00:47 +0000 (Wed, 10 Mar 2010) | 4 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+[tsqrt.c] fixed bug reported by Sam Rawlins
+ (https://sympa.inria.fr/sympa/arc/mpfr/2010-03/msg00007.html)
+Note: this "bug" had no noticeable consequences; this can just be seen
+as an incomplete test.
+------------------------------------------------------------------------
+r6715 | zimmerma | 2010-02-26 08:27:10 +0000 (Fri, 26 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] added item
+
+------------------------------------------------------------------------
+r6714 | zimmerma | 2010-02-24 15:49:04 +0000 (Wed, 24 Feb 2010) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] now also recognize "IEEE double, little endian" long-double
+ format (not tested, should happen on ARM)
+
+------------------------------------------------------------------------
+r6713 | zimmerma | 2010-02-24 15:07:39 +0000 (Wed, 24 Feb 2010) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] added recognition of "IEEE double big endian" long double format
+ (tested on gcc40.fsffrance.org and gcc53, both PowerPC's)
+
+------------------------------------------------------------------------
+r6712 | vlefevre | 2010-02-24 12:59:19 +0000 (Wed, 24 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] Added test for long double = double-double (GCC/PowerPC).
+This test cannot currently be reliable, so we just output a warning.
+------------------------------------------------------------------------
+r6711 | zimmerma | 2010-02-23 16:39:02 +0000 (Tue, 23 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] minor grammar fix
+
+------------------------------------------------------------------------
+r6710 | zimmerma | 2010-02-23 16:27:08 +0000 (Tue, 23 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] be more precise about API compatibility
+
+------------------------------------------------------------------------
+r6709 | zimmerma | 2010-02-23 15:54:30 +0000 (Tue, 23 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.h
+
+[mpfr.h] added #define mpfr_get_z_exp mpfr_get_z_2exp for compatibility
+
+------------------------------------------------------------------------
+r6708 | vlefevre | 2010-02-23 01:35:39 +0000 (Tue, 23 Feb 2010) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: added tset_z_exp to the svn:ignore property.
+------------------------------------------------------------------------
+r6707 | zimmerma | 2010-02-22 17:23:27 +0000 (Mon, 22 Feb 2010) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/atan.c
+ M /trunk/cbrt.c
+ M /trunk/cos.c
+ M /trunk/eint.c
+ M /trunk/exp_2.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/pow.c
+ M /trunk/rem1.c
+ M /trunk/root.c
+ M /trunk/set_z.c
+ M /trunk/set_z_exp.c
+ M /trunk/sin_cos.c
+ M /trunk/tests/tset_z_exp.c
+
+changed mpfr_get_z_exp -> mpfr_get_z_2exp (old function)
+ mpfr_set_z_exp -> mpfr_set_z_2exp (new function)
+
+------------------------------------------------------------------------
+r6706 | zimmerma | 2010-02-22 15:45:30 +0000 (Mon, 22 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_z.c
+ A /trunk/set_z_exp.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tset_z_exp.c
+
+added new function mpfr_set_z_exp (companion to mpfr_get_z_exp)
+
+------------------------------------------------------------------------
+r6705 | vlefevre | 2010-02-18 17:05:48 +0000 (Thu, 18 Feb 2010) | 6 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/tests
+ A /trunk/tests/tstdint.c
+
+* Added tests/tstdint.c to test the double inclusion of mpfr.h when only
+ the second occurrence needs <stdint.h> (this can happen when one uses
+ several libraries that use MPFR under different conditions).
+* Added tstdint to the svn:ignore property of "tests".
+* TODO: mentions that tstdint should be added to check_PROGRAMS in
+ the tests/Makefile.am file once this is fixed.
+------------------------------------------------------------------------
+r6701 | vlefevre | 2010-02-18 02:02:55 +0000 (Thu, 18 Feb 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated Section "Internals".
+------------------------------------------------------------------------
+r6700 | vlefevre | 2010-02-16 17:43:28 +0000 (Tue, 16 Feb 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6699 | vlefevre | 2010-02-16 17:02:40 +0000 (Tue, 16 Feb 2010) | 5 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+mpfr.h: disable the INTMAX_C / UINTMAX_C test with C++ compilers as it
+doesn't work well in this case (e.g. possible failure with Boost); see
+ https://sympa.inria.fr/sympa/arc/mpfr/2010-02/msg00025.html
+and the whole discussion.
+mpfr.texi: update.
+------------------------------------------------------------------------
+r6696 | zimmerma | 2010-02-05 07:13:10 +0000 (Fri, 05 Feb 2010) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] removed check for C++ and Fortran compiler (comment said to
+ remove it for libtool >= 2.0)
+
+------------------------------------------------------------------------
+r6695 | zimmerma | 2010-02-01 09:25:46 +0000 (Mon, 01 Feb 2010) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] dummy change to check if we still get commit mails
+
+------------------------------------------------------------------------
+r6694 | zimmerma | 2010-01-29 13:44:58 +0000 (Fri, 29 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] added note about mpfr_set_str
+
+------------------------------------------------------------------------
+r6691 | vlefevre | 2010-01-25 10:54:30 +0000 (Mon, 25 Jan 2010) | 3 lines
+Changed paths:
+ M /trunk/get_patches.sh
+
+Simplified get_patches.sh; minor consequence: the trailing space in
+the string returned by mpfr_get_patches() when there are patches is
+no longer present (this trailing space wasn't desired anyway).
+------------------------------------------------------------------------
+r6687 | vlefevre | 2010-01-25 00:33:37 +0000 (Mon, 25 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: updated message for different gmp.h and libgmp versions.
+See <https://sympa.inria.fr/sympa/arc/mpfr/2010-01/msg00051.html>.
+------------------------------------------------------------------------
+r6686 | vlefevre | 2010-01-20 12:09:45 +0000 (Wed, 20 Jan 2010) | 6 lines
+Changed paths:
+ M /trunk/FAQ.html
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/faq.xsl
+
+FAQ.html, faq.xsl, README, TODO: slightly changed the copyright notice
+to make it consistent with the one of the other files. In short, "and
+the GNU General Public License" has been removed, but it was ambiguous
+(we did not say which version of the GNU GPL) and useless (for GPLv3)
+because the LGPLv3 is compatible with the GPLv3:
+ http://www.fsf.org/licensing/licenses/gpl-faq.html#WhatDoesCompatMean
+------------------------------------------------------------------------
+r6685 | vlefevre | 2010-01-20 11:56:23 +0000 (Wed, 20 Jan 2010) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL:
+ * added copyright notice (at the top, like GMP);
+ * replaced "Installing MPFR" by "Installing GNU MPFR".
+------------------------------------------------------------------------
+r6684 | vlefevre | 2010-01-20 11:48:25 +0000 (Wed, 20 Jan 2010) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/bernoulli.c
+ M /trunk/buildopt.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/digamma.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/examples/divworst.c
+ M /trunk/examples/rndo-add.c
+ M /trunk/examples/sample.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_flt.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/ieee_floats.h
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/isregular.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/min_prec.c
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-longlong.h
+ M /trunk/mpfr-thread.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/scale2.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_flt.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/set_zero.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/digamma
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/random2.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdigamma.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_flt.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmin_prec.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/turandom.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandom.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Copyright notice update: added 2010 with
+ perl -pi -e 's/2009 Free Software/2009, 2010 Free Software/' **/*(^/)
+under zsh, reverting the ChangeLog file and the mbench directory.
+------------------------------------------------------------------------
+r6683 | vlefevre | 2010-01-20 11:35:49 +0000 (Wed, 20 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: added turandom to the svn:ignore property.
+------------------------------------------------------------------------
+r6682 | vlefevre | 2010-01-20 11:33:30 +0000 (Wed, 20 Jan 2010) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: updated paragraphs about the search paths (in particular,
+--with-gmp=/usr/local is no longer chosen as an example as it does
+not work as expected; a note has been added about that).
+------------------------------------------------------------------------
+r6681 | vlefevre | 2010-01-20 09:57:24 +0000 (Wed, 20 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: rewrote a paragraph about search paths.
+------------------------------------------------------------------------
+r6680 | thevenyp | 2010-01-18 18:30:44 +0000 (Mon, 18 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Fix case emin > 0.
+------------------------------------------------------------------------
+r6679 | zimmerma | 2010-01-18 15:28:50 +0000 (Mon, 18 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added more details for random distribution functions
+
+------------------------------------------------------------------------
+r6678 | zimmerma | 2010-01-18 14:30:15 +0000 (Mon, 18 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+[tprintf.c, tfprintf.c] cleaned up previous commit
+
+------------------------------------------------------------------------
+r6677 | vlefevre | 2010-01-18 13:50:17 +0000 (Mon, 18 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/tests/turandom.c
+
+tests/turandom.c: updated a test (if emin > 1 and rnd == MPFR_RNDN,
+then the result is necessarily 0).
+------------------------------------------------------------------------
+r6676 | vlefevre | 2010-01-18 13:39:17 +0000 (Mon, 18 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/tests/turandom.c
+
+tests/turandom.c: more tests in restricted exponent range.
+------------------------------------------------------------------------
+r6675 | vlefevre | 2010-01-18 13:27:04 +0000 (Mon, 18 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+urandom.c: corrected a comment.
+------------------------------------------------------------------------
+r6674 | zimmerma | 2010-01-18 12:37:30 +0000 (Mon, 18 Jan 2010) | 3 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+[tprintf.c,tfprintf.c] print obtained chain in test #8
+ (https://sympa.inria.fr/sympa/arc/mpfr/2009-12/msg00035.html)
+
+------------------------------------------------------------------------
+r6673 | thevenyp | 2010-01-18 09:48:47 +0000 (Mon, 18 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Fix bug in setting random exponent.
+------------------------------------------------------------------------
+r6672 | vlefevre | 2010-01-16 10:13:53 +0000 (Sat, 16 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+urandom.c: added a FIXME comment.
+------------------------------------------------------------------------
+r6671 | vlefevre | 2010-01-15 17:11:08 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+urandom.c: removed unused variable k; updated a comment.
+------------------------------------------------------------------------
+r6670 | thevenyp | 2010-01-15 16:38:11 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Improve generation of random exponent.
+------------------------------------------------------------------------
+r6669 | thevenyp | 2010-01-15 16:36:42 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Fix bug introduced in r6667.
+------------------------------------------------------------------------
+r6668 | zimmerma | 2010-01-15 15:17:18 +0000 (Fri, 15 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added item
+
+------------------------------------------------------------------------
+r6667 | thevenyp | 2010-01-15 14:25:06 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Fix case nextabove(0) in reduced exponent range.
+------------------------------------------------------------------------
+r6666 | thevenyp | 2010-01-15 10:06:20 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/tests/turandom.c
+
+[tests/turandom.c] Change accumulation of ternary value in the loop, it was not portable in system with sign and magnitude representation for integers.
+------------------------------------------------------------------------
+r6665 | thevenyp | 2010-01-15 09:51:31 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Move generation of a random rounding bit in a separate function.
+------------------------------------------------------------------------
+r6664 | thevenyp | 2010-01-15 09:49:14 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Remove trailing whitespace.
+------------------------------------------------------------------------
+r6663 | thevenyp | 2010-01-15 09:32:43 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+[urandom.c] Call mpfr_nextabove in maximum exponent range.
+------------------------------------------------------------------------
+r6662 | vlefevre | 2010-01-15 04:21:01 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+urandom.c: added a FIXME so that it is not forgotten.
+------------------------------------------------------------------------
+r6661 | vlefevre | 2010-01-15 02:01:52 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6659 | vlefevre | 2010-01-15 01:57:05 +0000 (Fri, 15 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: require bash.
+------------------------------------------------------------------------
+r6658 | vlefevre | 2010-01-14 16:03:37 +0000 (Thu, 14 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/urandom.c
+
+urandom.c: clean-up (avoid a useless goto).
+------------------------------------------------------------------------
+r6657 | vlefevre | 2010-01-14 15:22:37 +0000 (Thu, 14 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a paragraph (use MPFR_ASSERTN, not printf + exit).
+------------------------------------------------------------------------
+r6656 | thevenyp | 2010-01-14 12:16:15 +0000 (Thu, 14 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Cosmetic change.
+------------------------------------------------------------------------
+r6655 | thevenyp | 2010-01-14 11:55:05 +0000 (Thu, 14 Jan 2010) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/turandom.c
+ M /trunk/urandom.c
+
+[urandom.c, mpfr.texi] Change the behavior of mpfr_urandom to the usual mpfr function interface (wrt the ternary value and the out-of-range behavior).
+[tests/turandom.c] Check new behavior and add a test for the inclusion in [0, 1].
+
+------------------------------------------------------------------------
+r6654 | thevenyp | 2010-01-13 18:12:54 +0000 (Wed, 13 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/turandom.c (from /trunk/tests/trandom.c:6653)
+ A /trunk/urandom.c (from /trunk/urandomb.c:6653)
+
+New function mpfr_urandom.
+------------------------------------------------------------------------
+r6652 | vlefevre | 2010-01-11 15:42:05 +0000 (Mon, 11 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a note about patches and the autotools.
+------------------------------------------------------------------------
+r6650 | vlefevre | 2010-01-10 23:24:54 +0000 (Sun, 10 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+Added mpfrlint test for the required autoconf versions (see r6649).
+------------------------------------------------------------------------
+r6649 | zimmerma | 2010-01-10 10:27:09 +0000 (Sun, 10 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/acinclude.m4
+
+[README.dev] required version of autoconf did not agree with acinclude.m4
+
+------------------------------------------------------------------------
+r6648 | vlefevre | 2010-01-08 21:44:07 +0000 (Fri, 08 Jan 2010) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: replaced BITS_PER_MP_LIMB by GMP_NUMB_BITS (should have
+been done in r6645).
+------------------------------------------------------------------------
+r6647 | vlefevre | 2010-01-08 21:37:05 +0000 (Fri, 08 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: check that GMP_LIMB_BITS isn't used.
+------------------------------------------------------------------------
+r6646 | vlefevre | 2010-01-08 21:36:26 +0000 (Fri, 08 Jan 2010) | 1 line
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/algorithms.tex
+ M /trunk/atan.c
+ M /trunk/check.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/configure.in
+ M /trunk/div-short.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/extract.c
+ M /trunk/frac.c
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_f.c
+ M /trunk/get_flt.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/gmp_op.c
+ M /trunk/init2.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinteger.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/min_prec.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/rec_sqrt.c
+ M /trunk/rint.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_f.c
+ M /trunk/set_ld.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sin_cos.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_ui.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/random2.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tuneup.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/zeta_ui.c
+
+Replaced GMP_LIMB_BITS by GMP_NUMB_BITS to use only one of these macros.
+------------------------------------------------------------------------
+r6645 | zimmerma | 2010-01-08 20:04:27 +0000 (Fri, 08 Jan 2010) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] put back test BITS_PER_MP_LIMB == BYTES_PER_MP_LIMB * CHAR_BIT
+ (this is done only with --with-gmp-build, and BYTES_PER_MP_LIMB
+ is defined in this case in gmp-impl.h, at least in GMP 5)
+
+------------------------------------------------------------------------
+r6644 | zimmerma | 2010-01-08 19:13:48 +0000 (Fri, 08 Jan 2010) | 4 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/algorithms.tex
+ M /trunk/atan.c
+ M /trunk/check.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/configure.in
+ M /trunk/div-short.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/extract.c
+ M /trunk/frac.c
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_f.c
+ M /trunk/get_flt.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/gmp_op.c
+ M /trunk/init2.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinteger.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/min_prec.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/rec_sqrt.c
+ M /trunk/rint.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_f.c
+ M /trunk/set_ld.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_ui.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/random2.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tuneup.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/zeta_ui.c
+
+BITS_PER_MP_LIMB -> GMP_LIMB_BITS
+got rid of BYTES_PER_MP_LIMB in configure.in (no longer defined by GMP)
+Note[VL] (mpfr-impl.h): a mpn_sqr_n() macro is defined to use mpn_mul
+if it is not already defined (in gmp-impl.h from GMP 4.x).
+------------------------------------------------------------------------
+r6643 | vlefevre | 2009-12-23 19:10:15 +0000 (Wed, 23 Dec 2009) | 2 lines
+Changed paths:
+ M /trunk/mbench/Makefile
+
+[mbench/Makefile] Patch from Patrick Pelissier to solve the -I problem
+with GCC.
+------------------------------------------------------------------------
+r6642 | vlefevre | 2009-12-21 00:44:35 +0000 (Mon, 21 Dec 2009) | 1 line
+Changed paths:
+ M /trunk/mbench/Makefile
+
+[mbench/Makefile] Added a comment (warning about the use of -I).
+------------------------------------------------------------------------
+r6641 | zimmerma | 2009-12-20 10:26:22 +0000 (Sun, 20 Dec 2009) | 2 lines
+Changed paths:
+ M /trunk/mbench/Makefile
+
+patch from Patrick Pelissier
+
+------------------------------------------------------------------------
+r6640 | zimmerma | 2009-12-18 14:57:19 +0000 (Fri, 18 Dec 2009) | 8 lines
+Changed paths:
+ M /trunk/exp_2.c
+ M /trunk/mparam_h.in
+ M /trunk/scale2.c
+ M /trunk/tuneup.c
+
+[scale2.c] added missing include (compilation with --with-gmp-build did fail)
+[exp_2.c] small improvements in Smith method: compute x^{2i} as (x^i)^2 instead
+ of x^{i-1} * x. The error analysis is unchanged.
+[tuneup.c] fix for sin_cos threshold (we had a problem since mpfr_sin_cos
+ was calling mpfr_cos, which was calling mpfr_sincos_fast in some
+ cases
+[mparam_h.in] put new thresholds for Core 2 64-bit
+
+------------------------------------------------------------------------
+r6633 | zimmerma | 2009-12-11 09:41:47 +0000 (Fri, 11 Dec 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] reversed order for case "quad, mais en little endian" for
+ coherence with other cases
+
+------------------------------------------------------------------------
+r6632 | zimmerma | 2009-12-10 21:05:50 +0000 (Thu, 10 Dec 2009) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-impl.h
+
+patch to recognize IEEE quad, little endian format for "long double"
+
+------------------------------------------------------------------------
+r6631 | zimmerma | 2009-12-10 15:43:28 +0000 (Thu, 10 Dec 2009) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/get_d.c
+ M /trunk/get_flt.c
+ M /trunk/mpfr-impl.h
+ M /trunk/scale2.c
+
+[scale2.c] now mpfr_scale2 is included in mpfr-impl.h, instead of #including
+ "scale2.c" twice (thus it was compiled twice)
+
+------------------------------------------------------------------------
+r6628 | vlefevre | 2009-12-07 11:53:04 +0000 (Mon, 07 Dec 2009) | 7 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+sin_cos.c: in case of tiny inputs, keep the flags. In practice, this
+fixes the following bug in mpfr_sin_cos (shown by the latest additions
+to tsin_cos.c): if emin is the minimal exponent (MPFR_EMIN_MIN), the
+absolute value of the input is the minimum positive number and the
+rounding mode is toward 0 (or equivalent), then the underflow flag is
+dropped. The other exception cases (e.g., in case of reduced exponent
+range) are handled by mpfr_check_range().
+------------------------------------------------------------------------
+r6627 | vlefevre | 2009-12-07 11:21:51 +0000 (Mon, 07 Dec 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: in consistency(), better error message.
+------------------------------------------------------------------------
+r6626 | vlefevre | 2009-12-07 11:15:46 +0000 (Mon, 07 Dec 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: in consistency(), improved testing on underflow case.
+------------------------------------------------------------------------
+r6625 | vlefevre | 2009-12-07 10:29:57 +0000 (Mon, 07 Dec 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: in consistency(), added testing on underflow case.
+------------------------------------------------------------------------
+r6624 | vlefevre | 2009-12-07 10:22:33 +0000 (Mon, 07 Dec 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: in consistency(), fixed flags testing.
+------------------------------------------------------------------------
+r6623 | vlefevre | 2009-12-07 10:16:17 +0000 (Mon, 07 Dec 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: in consistency(), test also the flags.
+------------------------------------------------------------------------
+r6622 | vlefevre | 2009-12-07 10:10:13 +0000 (Mon, 07 Dec 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: in consistency(), test also the returned value
+(the one that gives inexact-related information).
+------------------------------------------------------------------------
+r6619 | zimmerma | 2009-11-30 15:12:30 +0000 (Mon, 30 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfits.c
+
+[tfits.c] converted to GNU coding style
+
+------------------------------------------------------------------------
+r6612 | vlefevre | 2009-11-30 11:57:07 +0000 (Mon, 30 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release".
+------------------------------------------------------------------------
+r6602 | vlefevre | 2009-11-30 02:17:23 +0000 (Mon, 30 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/uceil_exp2.c
+
+uceil_exp2.c: fixed indentation.
+------------------------------------------------------------------------
+r6599 | vlefevre | 2009-11-29 03:17:53 +0000 (Sun, 29 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: got rid of broken code when _GMP_IEEE_FLOATS was defined
+(broken aliasing rules, yielding failures with GCC 4.5.0 20091119).
+------------------------------------------------------------------------
+r6598 | zimmerma | 2009-11-27 06:38:45 +0000 (Fri, 27 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+[tset_ld.c] now perform tests even if old gcc bug is present
+
+------------------------------------------------------------------------
+r6597 | zimmerma | 2009-11-26 16:38:26 +0000 (Thu, 26 Nov 2009) | 4 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+[tget_d.c] removed workaround for old gcc bug. Comment was:
+ /* workaround for gcc bug on m68040-unknown-netbsd1.4.1,
+ where DBL_MIN gives (1-2^(-52))/2^1022 */
+
+------------------------------------------------------------------------
+r6596 | zimmerma | 2009-11-26 16:26:06 +0000 (Thu, 26 Nov 2009) | 9 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tmul.c
+
+[tadd.c, tmul.c] got rid of workaround for old gcc bug. Comment was:
+/* Parameter "z1" of check() used to be last in the argument list, but that
+ tickled a bug in 32-bit sparc gcc 2.95.2. A "double" in that position is
+ passed on the stack at an address which is 4mod8, but the generated code
+ didn't take into account that alignment, resulting in bus errors. The
+ easiest workaround is to move it to the start of the arg list (where it's
+ passed in registers), this macro does that. FIXME: Change the actual
+ calls to check(), rather than using a macro. */
+
+------------------------------------------------------------------------
+r6595 | zimmerma | 2009-11-26 15:58:02 +0000 (Thu, 26 Nov 2009) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+[strtofr.c] removed patch for old FreeBsd/Alpha bug
+ (http://www.freebsd.org/cgi/query-pr.cgi?pr=72024)
+
+------------------------------------------------------------------------
+r6594 | vlefevre | 2009-11-26 14:15:51 +0000 (Thu, 26 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+[pow_si.c] Updated comment added in r4355 concerning a bug
+in Sun's compiler for Solaris/x86.
+------------------------------------------------------------------------
+r6593 | vlefevre | 2009-11-26 13:38:38 +0000 (Thu, 26 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/strtofr.c
+
+Updated comments concerning the old FreeBSD bug 72024 on LONG_MIN / 1.
+------------------------------------------------------------------------
+r6587 | vlefevre | 2009-11-25 12:16:22 +0000 (Wed, 25 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+[tfprintf.c,tprintf.c] Fixed other types in function with variable
+arguments (even though there were no warnings on the tested machine).
+------------------------------------------------------------------------
+r6586 | vlefevre | 2009-11-25 12:00:43 +0000 (Wed, 25 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+[tfprintf.c,tprintf.c] Fixed types in function with variable arguments.
+------------------------------------------------------------------------
+r6585 | zimmerma | 2009-11-25 11:03:20 +0000 (Wed, 25 Nov 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+[tfprintf.c,tprintf.c] applied patch from Philippe Theveny
+[acinclude.m4] removed check for %zu, no longer needed
+
+------------------------------------------------------------------------
+r6582 | zimmerma | 2009-11-25 10:20:53 +0000 (Wed, 25 Nov 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+[acinclude.m4] added test for %zu
+[tfprintf.c,tprintf.c] added #ifdef's for NPRINTF_ZU
+
+------------------------------------------------------------------------
+r6580 | vlefevre | 2009-11-25 10:16:29 +0000 (Wed, 25 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: corrected a comment.
+------------------------------------------------------------------------
+r6577 | vlefevre | 2009-11-25 09:46:52 +0000 (Wed, 25 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tstckintc.c
+
+tests/tstckintc.c: fixed types for the printf %p format specifier.
+------------------------------------------------------------------------
+r6576 | zimmerma | 2009-11-25 08:33:58 +0000 (Wed, 25 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_flt.c
+
+[tget_flt.c] replaced %a by %.8e
+
+------------------------------------------------------------------------
+r6575 | zimmerma | 2009-11-25 08:23:23 +0000 (Wed, 25 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_ld_2exp.c
+
+[tget_d.c,tget_ld_2exp.c] replaced %a and %La by %.16e and %.16Le
+
+------------------------------------------------------------------------
+r6574 | zimmerma | 2009-11-25 08:05:41 +0000 (Wed, 25 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+[tget_d.c] removed C99-specific instruction
+
+------------------------------------------------------------------------
+r6573 | zimmerma | 2009-11-25 07:51:47 +0000 (Wed, 25 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+[nightly-test] added -ansi -pedantic-errors
+
+------------------------------------------------------------------------
+r6571 | vlefevre | 2009-11-24 17:59:14 +0000 (Tue, 24 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: completed the GMP CC/CFLAGS detection.
+------------------------------------------------------------------------
+r6570 | vlefevre | 2009-11-24 17:52:04 +0000 (Tue, 24 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: added a test to check for CC and CFLAGS in gmp.h only
+when the user doesn't redefine them and he isn't cross-compiling.
+------------------------------------------------------------------------
+r6569 | vlefevre | 2009-11-24 17:32:43 +0000 (Tue, 24 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: improved the GMP CC/CFLAGS detection.
+------------------------------------------------------------------------
+r6568 | vlefevre | 2009-11-24 16:52:57 +0000 (Tue, 24 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: try to fix the GMP CC/CFLAGS detection. Not finished.
+------------------------------------------------------------------------
+r6567 | vlefevre | 2009-11-24 15:48:35 +0000 (Tue, 24 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: replaced "test ... -o ..." (obsolete in POSIX)
+by "test ... || test ...".
+------------------------------------------------------------------------
+r6566 | vlefevre | 2009-11-24 15:44:44 +0000 (Tue, 24 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: replaced "test ... -a ..." (obsolete in POSIX)
+by "test ... && test ...".
+------------------------------------------------------------------------
+r6564 | vlefevre | 2009-11-24 15:23:00 +0000 (Tue, 24 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: made instructions more clear.
+------------------------------------------------------------------------
+r6561 | vlefevre | 2009-11-23 13:55:54 +0000 (Mon, 23 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release".
+------------------------------------------------------------------------
+r6560 | vlefevre | 2009-11-23 13:51:21 +0000 (Mon, 23 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: last things to do when making a release.
+------------------------------------------------------------------------
+r6557 | vlefevre | 2009-11-22 23:29:45 +0000 (Sun, 22 Nov 2009) | 10 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+sin_cos.c: fixed a potential bug by changing a rnd_mode into MPFR_RNDZ
+in mpfr_can_round. Indeed, in r4574, the change from
+ if (!mpfr_can_round (c, m, GMP_RNDZ, rnd_mode, MPFR_PREC (z)))
+to
+ if (!mpfr_can_round (c, m, GMP_RNDN, rnd_mode,
+ MPFR_PREC (z) + (rnd_mode == GMP_RNDN)))
+looks wrong to me: in RNDN, the extra bit due to rnd_mode == GMP_RNDN
+changes a RNDN worst case into a RNDZ worst case.
+Note: The second mpfr_can_round with the same problem has been fixed
+in r6513.
+------------------------------------------------------------------------
+r6556 | vlefevre | 2009-11-22 22:44:40 +0000 (Sun, 22 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: ported bug20091122 from the 2.4 branch to the trunk.
+But no failure in the trunk.
+------------------------------------------------------------------------
+r6550 | vlefevre | 2009-11-20 21:40:00 +0000 (Fri, 20 Nov 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tconst_pi.c
+
+tests/tconst_pi.c: fixed types for C++.
+------------------------------------------------------------------------
+r6545 | vlefevre | 2009-11-20 12:48:49 +0000 (Fri, 20 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Changeset r6162 broke Solaris builds. Fixed that by no longer checking
+INTMAX_MAX and UINTMAX_MAX to detect use of <stdint.h> / <inttypes.h>.
+------------------------------------------------------------------------
+r6535 | zimmerma | 2009-11-01 21:22:16 +0000 (Sun, 01 Nov 2009) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+[cos.c] fixed case where reduced argument is zero
+
+------------------------------------------------------------------------
+r6534 | vlefevre | 2009-10-30 15:13:05 +0000 (Fri, 30 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+tcos.c: added a testcase yielding an assertion failure (this bug makes
+tsin_cos fail).
+------------------------------------------------------------------------
+r6533 | vlefevre | 2009-10-30 15:05:28 +0000 (Fri, 30 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: ported the consistency test from the 2.4 branch.
+This yields an assertion failure (Linux/x86_64).
+------------------------------------------------------------------------
+r6527 | zimmerma | 2009-10-30 10:09:56 +0000 (Fri, 30 Oct 2009) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/cache.c
+ M /trunk/tests/tconst_pi.c
+
+[cache.c] fixed bug with directed rounding
+[tconst_pi.c] added test for bug with directed rounding
+
+------------------------------------------------------------------------
+r6524 | vlefevre | 2009-10-21 13:38:30 +0000 (Wed, 21 Oct 2009) | 1 line
+Changed paths:
+ M /trunk/exceptions.c
+
+exceptions.c: improved a comment.
+------------------------------------------------------------------------
+r6523 | vlefevre | 2009-10-21 13:21:04 +0000 (Wed, 21 Oct 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added an overflow test.
+------------------------------------------------------------------------
+r6522 | vlefevre | 2009-10-21 13:13:54 +0000 (Wed, 21 Oct 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added an overflow test in RNDZ.
+------------------------------------------------------------------------
+r6521 | zimmerma | 2009-10-20 07:21:23 +0000 (Tue, 20 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added efficiency item
+
+------------------------------------------------------------------------
+r6520 | zimmerma | 2009-10-19 08:16:45 +0000 (Mon, 19 Oct 2009) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+[lngamma.c] fixed typo, added comments about argument reduction, and replaced
+ code using doubles
+
+------------------------------------------------------------------------
+r6519 | zimmerma | 2009-10-19 06:57:02 +0000 (Mon, 19 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added efficiency item
+
+------------------------------------------------------------------------
+r6518 | zimmerma | 2009-10-15 11:19:20 +0000 (Thu, 15 Oct 2009) | 4 lines
+Changed paths:
+ M /trunk/exp.c
+
+[exp.c] binary splitting is now used for prec >= MPFR_EXP_THRESHOLD
+ (instead of prec > MPFR_EXP_THRESHOLD before). This is more
+ consistent with the other thresholds.
+
+------------------------------------------------------------------------
+r6517 | zimmerma | 2009-10-15 11:07:26 +0000 (Thu, 15 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added efficiency item
+
+------------------------------------------------------------------------
+r6516 | zimmerma | 2009-10-15 10:30:55 +0000 (Thu, 15 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] added /* bits */ for MPFR_EXP_THRESHOLD and MPFR_EXP_2_THRESHOLD
+
+------------------------------------------------------------------------
+r6514 | zimmerma | 2009-10-13 08:11:10 +0000 (Tue, 13 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+[tsin_cos.c] removed useless instruction, and added comments
+
+------------------------------------------------------------------------
+r6513 | zimmerma | 2009-10-13 06:57:06 +0000 (Tue, 13 Oct 2009) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+
+[sin_cos.c] fixed call to mpfr_can_round (rounding mode was wrong)
+[tsin_cos.c] added new test
+
+------------------------------------------------------------------------
+r6512 | zimmerma | 2009-10-13 06:37:15 +0000 (Tue, 13 Oct 2009) | 3 lines
+Changed paths:
+ M /trunk/li2.c
+ M /trunk/tests/tli2.c
+
+[li2.c] fixed bug when x is near 0
+[tli2.c] added new test
+
+------------------------------------------------------------------------
+r6510 | vlefevre | 2009-10-09 07:29:54 +0000 (Fri, 09 Oct 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: mp_rnd_t -> mpfr_rnd_t.
+------------------------------------------------------------------------
+r6509 | vlefevre | 2009-10-09 07:27:36 +0000 (Fri, 09 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: added a comment about bug20091008, corresponding to
+r6507; in fact, the bug concerns only the return value (see r6444).
+------------------------------------------------------------------------
+r6507 | zimmerma | 2009-10-08 07:51:49 +0000 (Thu, 08 Oct 2009) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+
+[sin_cos.c] fixed error analysis
+[tsin_cos.c] added new test
+
+------------------------------------------------------------------------
+r6506 | vlefevre | 2009-10-07 14:18:35 +0000 (Wed, 07 Oct 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: mp_rnd_t -> mpfr_rnd_t.
+------------------------------------------------------------------------
+r6505 | vlefevre | 2009-10-07 12:06:35 +0000 (Wed, 07 Oct 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tests/tsin_cos.c: removed trailing spaces.
+------------------------------------------------------------------------
+r6504 | zimmerma | 2009-10-07 08:58:51 +0000 (Wed, 07 Oct 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+[tsin_cos.c] changed binary to hexadecimal string (was too long for C89)
+
+------------------------------------------------------------------------
+r6503 | zimmerma | 2009-10-07 07:05:13 +0000 (Wed, 07 Oct 2009) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+
+[sin_cos.c] fixed bug introduced in r6447 (some variables had their precision not updated in Ziv's loop)
+[tsin_cos.c] added a new test
+
+------------------------------------------------------------------------
+r6498 | vlefevre | 2009-09-29 14:44:22 +0000 (Tue, 29 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+------------------------------------------------------------------------
+r6497 | zimmerma | 2009-09-29 11:28:00 +0000 (Tue, 29 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/round_prec.c
+ M /trunk/tests/tcan_round.c
+
+[mpfr.texi] added note about mpfr_can_round
+[tcan_round.c] added more tests
+
+------------------------------------------------------------------------
+r6490 | zimmerma | 2009-09-24 06:16:52 +0000 (Thu, 24 Sep 2009) | 4 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] added item for new releases: we should say if they are binary
+ and/or API compatible with previous releases (we often forgot
+ to say it in the past)
+
+------------------------------------------------------------------------
+r6489 | vlefevre | 2009-09-23 15:09:42 +0000 (Wed, 23 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: added tget_flt to the svn:ignore property.
+------------------------------------------------------------------------
+r6488 | vlefevre | 2009-09-23 15:08:39 +0000 (Wed, 23 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+tests/Makefile.am: added information about LOADLIBES.
+------------------------------------------------------------------------
+r6487 | zimmerma | 2009-09-23 13:32:35 +0000 (Wed, 23 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] put back LOADLIBES=... (enables to compile a program foo.c
+ in the test directory by simply doing "make foo")
+
+------------------------------------------------------------------------
+r6486 | zimmerma | 2009-09-23 06:21:27 +0000 (Wed, 23 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+[atan.c] updated the comments
+
+------------------------------------------------------------------------
+r6485 | vlefevre | 2009-09-22 15:56:16 +0000 (Tue, 22 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/atan.c
+
+atan.c: added a FIXME comment.
+------------------------------------------------------------------------
+r6484 | vlefevre | 2009-09-22 15:51:15 +0000 (Tue, 22 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/atan.c
+
+atan.c: added some assertions.
+------------------------------------------------------------------------
+r6483 | zimmerma | 2009-09-22 13:58:25 +0000 (Tue, 22 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/algorithms.tex
+ M /trunk/atan.c
+
+[atan.c] implemented argument reduction (cf error analysis in algorithms.tex)
+
+------------------------------------------------------------------------
+r6482 | zimmerma | 2009-09-21 07:34:07 +0000 (Mon, 21 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+[tests/Makefile.am] removed LOADLIBES=...
+
+------------------------------------------------------------------------
+r6480 | vlefevre | 2009-09-20 23:31:37 +0000 (Sun, 20 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: check that lines aren't too long.
+------------------------------------------------------------------------
+r6478 | vlefevre | 2009-09-20 19:07:03 +0000 (Sun, 20 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: line-wrap libmpfr_la_SOURCES (M-q with Emacs) for
+compatibility with some vendor grep.
+------------------------------------------------------------------------
+r6476 | vlefevre | 2009-09-20 19:00:11 +0000 (Sun, 20 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/tests/Makefile.am
+
+Makefile.am, tests/Makefile.am: patch from Ralf Wildenhues.
+http://lists.gnu.org/archive/html/bug-automake/2009-09/msg00033.html
+------------------------------------------------------------------------
+r6475 | vlefevre | 2009-09-18 15:00:09 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+
+mpfr-impl.h, sin_cos.c, tests/tsin_cos.c: mp_rnd_t -> mpfr_rnd_t.
+------------------------------------------------------------------------
+r6474 | vlefevre | 2009-09-18 14:55:57 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/sin_cos.c
+
+sin_cos.c: GMP_RNDx -> MPFR_RNDx.
+------------------------------------------------------------------------
+r6473 | vlefevre | 2009-09-18 14:54:38 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/sin_cos.c
+
+sin_cos.c: untabified.
+------------------------------------------------------------------------
+r6471 | vlefevre | 2009-09-18 14:45:47 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/frac.c
+ M /trunk/tests/tfrac.c
+
+frac.c, tests/tfrac.c: fixed underflow case in mpfr_frac and added
+testcase.
+------------------------------------------------------------------------
+r6470 | zimmerma | 2009-09-18 14:03:56 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/atan.c
+
+[acos.c] initial working precision was too small
+
+------------------------------------------------------------------------
+r6469 | vlefevre | 2009-09-18 13:56:21 +0000 (Fri, 18 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/modf.c
+
+modf.c: no longer extend the exponent range at all, since there are
+no intermediate computations (note: the mpfr_frac bug that has just
+been fixed affected this change in modf.c).
+------------------------------------------------------------------------
+r6467 | vlefevre | 2009-09-18 13:50:21 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/frac.c
+
+[frac.c] Patch r6456 was incorrect: the problem with the non-significant
+bits had to be dealt with only in the case t = r. This is now fixed.
+------------------------------------------------------------------------
+r6466 | vlefevre | 2009-09-18 13:47:10 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: reverted overflow case test (was incorrect because the
+input was too large).
+------------------------------------------------------------------------
+r6465 | vlefevre | 2009-09-18 13:42:12 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: also test the overflow case.
+------------------------------------------------------------------------
+r6464 | vlefevre | 2009-09-18 13:33:43 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: more tests (case where the fractional part rounds to 1).
+------------------------------------------------------------------------
+r6463 | zimmerma | 2009-09-18 13:31:56 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] added item
+
+------------------------------------------------------------------------
+r6461 | zimmerma | 2009-09-18 13:10:35 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.texi
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/tuneup.c
+
+[sin.c,cos.c] use mpfr_sincos_fast when prec >= MPFR_SINCOS_THRESHOLD
+
+------------------------------------------------------------------------
+r6460 | vlefevre | 2009-09-18 12:03:38 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: more tests (there are also problems in rounding away
+from zero or equivalent).
+------------------------------------------------------------------------
+r6459 | zimmerma | 2009-09-18 11:59:23 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tuneup.c
+
+added tuning mechanism for mpfr_sin_cos
+
+------------------------------------------------------------------------
+r6458 | vlefevre | 2009-09-18 11:46:28 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: also test the ternary value (it is incorrect too).
+------------------------------------------------------------------------
+r6456 | vlefevre | 2009-09-18 11:27:48 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/frac.c
+
+frac.c: fixed bug in mpfr_frac (the non-significant bits in low limb
+were not cleared).
+------------------------------------------------------------------------
+r6455 | vlefevre | 2009-09-18 11:19:11 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: improved the testcase so that it triggers the bug for
+both 32 bits and 64 bits.
+------------------------------------------------------------------------
+r6454 | vlefevre | 2009-09-18 11:16:00 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: added a comment for latest testcase.
+------------------------------------------------------------------------
+r6453 | vlefevre | 2009-09-18 11:09:03 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+tests/tfrac.c: added testcase for bug in mpfr_frac.
+------------------------------------------------------------------------
+r6451 | vlefevre | 2009-09-18 10:38:19 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tmodf.c
+
+tests/tmodf.c: typo in error message.
+------------------------------------------------------------------------
+r6450 | vlefevre | 2009-09-18 10:26:26 +0000 (Fri, 18 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/modf.c
+
+modf.c: extending the exponent range in the first two cases is useless
+because there are no intermediate computations (just a mpfr_set). Let's
+do that only for the general case.
+------------------------------------------------------------------------
+r6449 | vlefevre | 2009-09-18 10:23:07 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tmodf.c
+
+tests/tmodf.c: added overflow tests.
+------------------------------------------------------------------------
+r6448 | vlefevre | 2009-09-18 09:27:10 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/modf.c
+
+modf.c: corrected a comment (rounding can yield an overflow, but not
+an underflow).
+------------------------------------------------------------------------
+r6447 | zimmerma | 2009-09-18 09:08:01 +0000 (Fri, 18 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+
+[sin_cos.c] added asymptotically fast code, with threshold currently hardcoded
+ at 20000 bits, should be determined by tuneup.c
+
+------------------------------------------------------------------------
+r6446 | vlefevre | 2009-09-18 09:00:24 +0000 (Fri, 18 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_flt.c
+
+Deleted trailing spaces.
+------------------------------------------------------------------------
+r6445 | zimmerma | 2009-09-18 08:13:43 +0000 (Fri, 18 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/modf.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tmodf.c
+
+[modf.c] changed semantics of return value in accordance with mpfr_sin_cos
+
+------------------------------------------------------------------------
+r6444 | zimmerma | 2009-09-17 11:30:18 +0000 (Thu, 17 Sep 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/sin_cos.c
+ M /trunk/sinh_cosh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tsin_cos.c
+
+[sin_cos.c] more precise meaning of the return value
+[sinh_cosh.c] idem as above
+[taway.c] fixed to check the more precise return value
+
+------------------------------------------------------------------------
+r6443 | zimmerma | 2009-09-16 06:17:47 +0000 (Wed, 16 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] t was not initialized in Newton's example
+
+------------------------------------------------------------------------
+r6442 | zimmerma | 2009-09-15 13:48:15 +0000 (Tue, 15 Sep 2009) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ D /trunk/get_binary32.c
+ A /trunk/get_flt.c (from /trunk/get_binary32.c:6441)
+ D /trunk/set_binary32.c
+ A /trunk/set_flt.c (from /trunk/set_binary32.c:6441)
+ M /trunk/tests/Makefile.am
+ D /trunk/tests/tget_binary32.c
+ A /trunk/tests/tget_flt.c (from /trunk/tests/tget_binary32.c:6441)
+
+changed _binary32 into _flt for file names too:
+ svn mv get_binary32.c get_flt.c
+ svn mv set_binary32.c set_flt.c
+ svn mv tests/tget_binary32.c tests/tget_flt.c
+
+------------------------------------------------------------------------
+r6441 | zimmerma | 2009-09-15 13:42:49 +0000 (Tue, 15 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.texi
+
+[TODO] removed an item
+[mpfr.texi] added an example for mpfr_prec_round
+
+------------------------------------------------------------------------
+r6440 | zimmerma | 2009-09-15 13:26:11 +0000 (Tue, 15 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+[NEWS] added mpfr_set_flt and mpfr_get_flt
+
+------------------------------------------------------------------------
+r6439 | zimmerma | 2009-09-15 13:17:40 +0000 (Tue, 15 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/get_binary32.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_binary32.c
+ M /trunk/tests/tget_binary32.c
+
+changed suffix _binary32 -> _flt
+[get_binary32.c] fixed a bug in subnormal range
+
+------------------------------------------------------------------------
+r6437 | vlefevre | 2009-09-15 13:15:23 +0000 (Tue, 15 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: bug fix.
+------------------------------------------------------------------------
+r6435 | vlefevre | 2009-09-15 13:13:28 +0000 (Tue, 15 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6433 | vlefevre | 2009-09-15 13:12:38 +0000 (Tue, 15 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: execute svn in C locale.
+------------------------------------------------------------------------
+r6431 | vlefevre | 2009-09-15 13:10:50 +0000 (Tue, 15 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: check mpfr.texi's UPDATED-MONTH.
+------------------------------------------------------------------------
+r6428 | zimmerma | 2009-09-15 12:21:15 +0000 (Tue, 15 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+[tget_d.c] fixed FIXME
+
+------------------------------------------------------------------------
+r6427 | vlefevre | 2009-09-15 12:12:35 +0000 (Tue, 15 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+tget_d.c code is C99-only (bug introduced in r6424). Please fix!
+------------------------------------------------------------------------
+r6426 | zimmerma | 2009-09-15 11:42:27 +0000 (Tue, 15 Sep 2009) | 2 lines
+Changed paths:
+ A /trunk/get_binary32.c
+
+[get_binary32.c] also forgot in previous commit
+
+------------------------------------------------------------------------
+r6425 | zimmerma | 2009-09-15 11:41:52 +0000 (Tue, 15 Sep 2009) | 2 lines
+Changed paths:
+ A /trunk/set_binary32.c
+
+[set_binary32.c] file forgot in previous commit
+
+------------------------------------------------------------------------
+r6424 | zimmerma | 2009-09-15 11:37:40 +0000 (Tue, 15 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ A /trunk/ieee_floats.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/scale2.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tget_binary32.c
+ M /trunk/tests/tget_d.c
+
+added new functions mpfr_set_binary32 and mpfr_get_binary32
+fixed bug in mpfr_get_d and mpfr_get_decimal64 for RNDA
+
+------------------------------------------------------------------------
+r6423 | zimmerma | 2009-09-15 08:27:20 +0000 (Tue, 15 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] improved description of mpfr_sum, and fixed typo
+
+------------------------------------------------------------------------
+r6421 | vlefevre | 2009-09-14 16:29:44 +0000 (Mon, 14 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: added mpfr_regular_p macro.
+------------------------------------------------------------------------
+r6419 | zimmerma | 2009-09-14 14:12:03 +0000 (Mon, 14 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+[sum.c] added reference
+
+------------------------------------------------------------------------
+r6418 | zimmerma | 2009-09-14 13:10:57 +0000 (Mon, 14 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/get_ld.c
+ M /trunk/tests/tget_ld_2exp.c
+
+[get_ld.c] fixed bug reported by Nelson Beebe
+ https://sympa.inria.fr/sympa/arc/mpfr/2009-05/msg00061.html
+
+------------------------------------------------------------------------
+r6417 | zimmerma | 2009-09-14 09:29:55 +0000 (Mon, 14 Sep 2009) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/isregular.c
+ M /trunk/iszero.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tisnan.c
+
+[isregular.c] new function mpfr_regular_p
+[iszero.c] fixed typo in comment
+[tests/tisnan.c] added tests for mpfr_regular_p
+
+------------------------------------------------------------------------
+r6415 | vlefevre | 2009-09-11 22:03:10 +0000 (Fri, 11 Sep 2009) | 6 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: changeset r6414 was incorrect, in particular under Linux
+(at least some platforms), where wint_t is an unsigned int, not an int.
+Instead, let's detect whether integer promotion will occur or not, even
+though the ISO C99 standard requires a wint_t type that doesn't yield
+an integer promotion (7.24.1#2), because mingw32 defines wint_t as an
+unsigned short (thus with integer promotion).
+------------------------------------------------------------------------
+r6414 | zimmerma | 2009-09-11 07:52:33 +0000 (Fri, 11 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+[vasprintf.c] https://sympa.inria.fr/sympa/arc/mpfr/2009-09/msg00012.html
+ (changed __wint_type into int)
+
+------------------------------------------------------------------------
+r6413 | vlefevre | 2009-09-08 08:49:33 +0000 (Tue, 08 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tdigamma.c
+
+tests/tdigamma.c: added missing void in prototype.
+------------------------------------------------------------------------
+r6412 | zimmerma | 2009-09-08 08:35:04 +0000 (Tue, 08 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/digamma.c
+ M /trunk/tests/tdigamma.c
+
+[digamma.c] forgot to set sign for Psi(+Inf)
+
+------------------------------------------------------------------------
+r6411 | zimmerma | 2009-09-04 12:29:27 +0000 (Fri, 04 Sep 2009) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/bernoulli.c
+ M /trunk/digamma.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/mpfr-impl.h
+
+changed function into bernoulli.c (which was static, included 3 times) into
+an internal function mpfr_bernoulli_internal
+
+------------------------------------------------------------------------
+r6410 | zimmerma | 2009-09-03 06:45:11 +0000 (Thu, 03 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] removed psi(=digamma)
+
+------------------------------------------------------------------------
+r6409 | vlefevre | 2009-09-02 23:17:32 +0000 (Wed, 02 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/data/digamma
+
+tests/data/digamma: for the special values, use the new mode '*'
+(exact cases) instead of 'n'.
+------------------------------------------------------------------------
+r6408 | vlefevre | 2009-09-02 23:16:03 +0000 (Wed, 02 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: added special support for exact cases in data_check (to test
+all the rounding modes and check the ternary value).
+------------------------------------------------------------------------
+r6407 | vlefevre | 2009-09-02 23:02:29 +0000 (Wed, 02 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/div.c
+ M /trunk/exp2.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-longlong.h
+ M /trunk/mpn_exp.c
+ M /trunk/pow.c
+ M /trunk/pow_z.c
+ M /trunk/rec_sqrt.c
+ M /trunk/rint.c
+ M /trunk/round_near_x.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tsqrt.c
+
+towards -> toward (consistency).
+------------------------------------------------------------------------
+r6404 | vlefevre | 2009-09-02 12:13:23 +0000 (Wed, 02 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: added tdigamma to svn:ignore property.
+------------------------------------------------------------------------
+r6403 | vlefevre | 2009-09-02 12:11:05 +0000 (Wed, 02 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/digamma.c
+
+digamma.c: moved a comment.
+------------------------------------------------------------------------
+r6402 | zimmerma | 2009-09-02 12:08:05 +0000 (Wed, 02 Sep 2009) | 4 lines
+Changed paths:
+ M /trunk/digamma.c
+ M /trunk/tests/data/digamma
+ M /trunk/tests/tests.c
+
+[digamma.c] fixed bug (emin/emax were not restored)
+[data/digamma] added special values
+[tests/tests.c] fix to allow putting nan in data/* files
+
+------------------------------------------------------------------------
+r6401 | zimmerma | 2009-09-02 11:56:48 +0000 (Wed, 02 Sep 2009) | 3 lines
+Changed paths:
+ A /trunk/tests/data/digamma
+ M /trunk/tests/tdigamma.c
+
+[data/digamma] unitary test file for mpfr_digamma
+[tdigamma.c] now use data/digamma
+
+------------------------------------------------------------------------
+r6400 | vlefevre | 2009-09-02 11:54:53 +0000 (Wed, 02 Sep 2009) | 1 line
+Changed paths:
+ M /trunk/digamma.c
+
+Removed trailing whitespace.
+------------------------------------------------------------------------
+r6399 | zimmerma | 2009-09-02 11:39:14 +0000 (Wed, 02 Sep 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+bernoulli.c goes into EXTRA_DIST
+
+------------------------------------------------------------------------
+r6398 | zimmerma | 2009-09-02 11:38:07 +0000 (Wed, 02 Sep 2009) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/algorithms.tex
+ A /trunk/bernoulli.c
+ A /trunk/digamma.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tdigamma.c
+
+[digamma.c] new function mpfr_digamma
+[lngamma.c,li2.c] factored computation of Bernoulli numbers in new file
+ bernoulli.c (also used by digamma.c)
+
+------------------------------------------------------------------------
+r6397 | zimmerma | 2009-08-27 09:27:10 +0000 (Thu, 27 Aug 2009) | 8 lines
+Changed paths:
+ M /trunk/cbrt.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/cos.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/get_z.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/pow.c
+ M /trunk/rem1.c
+ M /trunk/root.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/urandomb.c
+ M /trunk/zeta_ui.c
+
+replaced obsolete GMP functions (suggested by Brian Gladman):
+1. mpz_div_2exp ==> mpz_fdiv_q_2exp
+2. mpz_div_ui ==> mpz_fdiv_q_ui
+3. gmp_randinit (state, GMP_RAND_ALG_LC, 128) ==> gmp_randinit_lc_2exp_size (state, 128)
+(Didn't replace mpn_divrem by mpn_tdiv_qr since the parameters differ, and also
+for efficiency reasons.)
+
+
+------------------------------------------------------------------------
+r6396 | vlefevre | 2009-08-26 23:30:06 +0000 (Wed, 26 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: fixed locale_da_DK test.
+------------------------------------------------------------------------
+r6394 | zimmerma | 2009-08-26 20:13:50 +0000 (Wed, 26 Aug 2009) | 3 lines
+Changed paths:
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+
+[csch.c,coth.c,csc.c,cot.c] fixed bug for tiny input and RNDA (result was
+ rounded to zero instead of away)
+
+------------------------------------------------------------------------
+r6393 | vlefevre | 2009-08-26 17:01:54 +0000 (Wed, 26 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: bug fix (uncommented an "exit(1);").
+------------------------------------------------------------------------
+r6390 | zimmerma | 2009-08-26 15:28:25 +0000 (Wed, 26 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tgeneric.c] revert previous change, bug is elsewhere
+
+------------------------------------------------------------------------
+r6389 | zimmerma | 2009-08-26 15:23:51 +0000 (Wed, 26 Aug 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+[tgeneric.c] temporary fix in mpfr_can_round call (mpfr_can_round does not
+ correctly handle MPFR_RNDA)
+
+------------------------------------------------------------------------
+r6381 | vlefevre | 2009-08-26 08:48:37 +0000 (Wed, 26 Aug 2009) | 5 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+set_ld.c: replaced a struct by a union. The struct was triggering the
+following warning with GCC 4.4:
+ dereferencing type-punned pointer will break strict-aliasing rules
+(possibly due to possible memory alignment problems). The old code
+looked strange anyway and unions are exactly for such kind of things.
+------------------------------------------------------------------------
+r6380 | zimmerma | 2009-08-26 08:10:51 +0000 (Wed, 26 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tset.c
+
+[tset.c] removed unused variables
+
+------------------------------------------------------------------------
+r6378 | vlefevre | 2009-08-25 12:23:42 +0000 (Tue, 25 Aug 2009) | 4 lines
+Changed paths:
+ M /trunk/tests/tcmp_ld.c
+
+tcmp_ld.c: use "long double" constants.
+Note: this might solve the tcmp_ld failure reported on
+http://www.linuxquestions.org/questions/linux-from-scratch-13/mpfr-2.4.1-check-failures-in-lfs-6.5-rc2-746538/
+(not tested).
+------------------------------------------------------------------------
+r6376 | vlefevre | 2009-08-24 13:21:03 +0000 (Mon, 24 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: update (new function mpfr_set_zero, added in r6339).
+------------------------------------------------------------------------
+r6375 | vlefevre | 2009-08-24 13:01:15 +0000 (Mon, 24 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: NaN has a sign bit (in its binary representation),
+but as a FP datum, it does not have a sign.
+------------------------------------------------------------------------
+r6374 | zimmerma | 2009-08-24 12:48:30 +0000 (Mon, 24 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] added mention of unspecified NaN sign bit for mpfr_set_nan
+
+------------------------------------------------------------------------
+r6372 | vlefevre | 2009-08-21 21:58:15 +0000 (Fri, 21 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: do not use @code for roundTiesToAway and binary64 as this is
+not code and the IEEE 754-2008 standard doesn't use special typography.
+------------------------------------------------------------------------
+r6369 | vlefevre | 2009-08-21 21:43:16 +0000 (Fri, 21 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: the sign bit of a NaN is unspecified.
+------------------------------------------------------------------------
+r6368 | vlefevre | 2009-08-18 15:51:08 +0000 (Tue, 18 Aug 2009) | 7 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/README
+ A /trunk/examples
+ A /trunk/examples/ReadMe
+ A /trunk/examples/divworst.c
+ A /trunk/examples/rndo-add.c
+ A /trunk/examples/sample.c
+
+Add examples into $docdir (without using a subdir, as this would be
+a bit bloated just to add a few files).
+ * Added "examples" directory with a ReadMe file and 3 examples.
+ * Makefile.am: added files from the "examples" directory and changed
+ dist_doc_DATA into nobase_dist_doc_DATA so that the "examples"
+ directory is not stripped in the target directory $docdir.
+ * README: added "examples/".
+------------------------------------------------------------------------
+r6367 | vlefevre | 2009-08-18 13:46:15 +0000 (Tue, 18 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/get_str.c
+
+get_str.c: corrected copyright notice, incorrectly modified in r6364.
+------------------------------------------------------------------------
+r6366 | thevenyp | 2009-08-12 14:30:48 +0000 (Wed, 12 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Fix typo.
+
+------------------------------------------------------------------------
+r6365 | thevenyp | 2009-08-12 14:10:33 +0000 (Wed, 12 Aug 2009) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+get_str.c: Format a comment.
+
+------------------------------------------------------------------------
+r6364 | thevenyp | 2009-08-12 14:07:24 +0000 (Wed, 12 Aug 2009) | 4 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+get_str.c vasprintf.c: Add support for the rounding away from zero mode.
+mpfr.texi: MPFR_RNDA mode support in printf functions.
+tests/tsprintf.c tests/tget_str.c: Test MPFR_RNDA support.
+
+------------------------------------------------------------------------
+r6363 | vlefevre | 2009-08-06 00:21:17 +0000 (Thu, 06 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: update.
+------------------------------------------------------------------------
+r6362 | vlefevre | 2009-08-06 00:18:37 +0000 (Thu, 06 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.texi
+
+Install some documentation files.
+------------------------------------------------------------------------
+r6360 | vlefevre | 2009-08-05 11:39:30 +0000 (Wed, 05 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated section "Installing MPFR".
+------------------------------------------------------------------------
+r6358 | vlefevre | 2009-08-05 10:39:20 +0000 (Wed, 05 Aug 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: corrected a spelling mistake.
+------------------------------------------------------------------------
+r6356 | vlefevre | 2009-08-05 10:24:16 +0000 (Wed, 05 Aug 2009) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.in
+
+Since GNU Automake 1.11 is available on too few platforms, removed its
+requirement (reverted to 1.10 requirement: 1.10.1 was needed only for
+dist-lzma, which has been removed). Instead, added hardcoded dist-xz
+support (tested with both Automake 1.10.2 and Automake 1.11).
+------------------------------------------------------------------------
+r6354 | vlefevre | 2009-08-04 00:55:30 +0000 (Tue, 04 Aug 2009) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: replaced dist-lzma by dist-xz (the xz format is the
+successor of the lzma format); as a consequence, automake 1.11 is
+needed.
+------------------------------------------------------------------------
+r6353 | vlefevre | 2009-07-30 18:06:49 +0000 (Thu, 30 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/tests/Makefile.am
+
+Makefile.am, tests/Makefile.am: added copyright notice (similar to
+the one of the generated Makefile.in file).
+------------------------------------------------------------------------
+r6352 | vlefevre | 2009-07-30 17:59:36 +0000 (Thu, 30 Jul 2009) | 3 lines
+Changed paths:
+ M /trunk/COPYING
+ M /trunk/README
+
+Since COPYING.LESSER makes a reference to the GPLv3, updated COPYING
+to the GPLv3. Autotools files are now distributed under the same license
+as MPFR (to avoid any reference to the GPLv2).
+------------------------------------------------------------------------
+r6351 | vlefevre | 2009-07-30 17:47:39 +0000 (Thu, 30 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ A /trunk/COPYING.LESSER (from /trunk/COPYING.LIB:6350)
+ D /trunk/COPYING.LIB
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/buildopt.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/mbench/Makefile
+ M /trunk/mbench/generate.c
+ M /trunk/mbench/mfv5-arprec.cc
+ M /trunk/mbench/mfv5-cln.cc
+ M /trunk/mbench/mfv5-crlibm.cc
+ M /trunk/mbench/mfv5-libc.cc
+ M /trunk/mbench/mfv5-lidia.cc
+ M /trunk/mbench/mfv5-mpf.cc
+ M /trunk/mbench/mfv5-mpfr.cc
+ M /trunk/mbench/mfv5-ntl.cc
+ M /trunk/mbench/mfv5-pari.cc
+ M /trunk/mbench/mfv5-void.cc
+ M /trunk/mbench/mfv5.cc
+ M /trunk/mbench/mfv5.h
+ M /trunk/mbench/mpfr-gfx.c
+ M /trunk/mbench/mpfr-v4.c
+ M /trunk/mbench/mpfr-v6.c
+ M /trunk/mbench/timp.h
+ M /trunk/min_prec.c
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-thread.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/set_zero.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/random2.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tbuildopt.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmin_prec.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Renamed COPYING.LIB as COPYING.LESSER (GNU Coding Standards, #7.3)
+and updated all the references (except in ChangeLog).
+------------------------------------------------------------------------
+r6350 | vlefevre | 2009-07-30 17:38:46 +0000 (Thu, 30 Jul 2009) | 1 line
+Changed paths:
+ M /trunk
+
+Added algorithms.fdb_latexmk to svn:ignore property.
+------------------------------------------------------------------------
+r6349 | thevenyp | 2009-07-30 16:30:24 +0000 (Thu, 30 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tset.c
+
+tests/tset.c: With revision 6339, some tests were moved and added in the function check_special but this one was not called.
+
+------------------------------------------------------------------------
+r6348 | thevenyp | 2009-07-30 16:22:55 +0000 (Thu, 30 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+tests/Makefile.am: Strech check_PROGRAMS list to ease insertion of new tests.
+
+------------------------------------------------------------------------
+r6347 | thevenyp | 2009-07-30 16:03:04 +0000 (Thu, 30 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Makefile.am: Sort tests in alphabetical order except the very first ones which are needed by the test suite itself.
+
+------------------------------------------------------------------------
+r6340 | thevenyp | 2009-07-20 14:40:40 +0000 (Mon, 20 Jul 2009) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c mpfr.texi: Change behavior with %Rf and an empty precision field. The default precision is now 6 with %Rf and %Rg.
+tests/tprintf.c tests/tfprintf.c tests/tsprintf.c: Change tests with empty precision field and %Rf.
+
+------------------------------------------------------------------------
+r6339 | thevenyp | 2009-07-20 09:22:08 +0000 (Mon, 20 Jul 2009) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/set_zero.c
+ M /trunk/tests/tset.c
+
+Makefile.am mpfr.h mpfr.texi set_zero.c: New function mpfr_set_zero.
+tests/tset.c: Replace all MPFR_ASSERTN with verbose message. Add tests for mpfr_set_zero.
+
+------------------------------------------------------------------------
+r6336 | zimmerma | 2009-07-15 00:30:44 +0000 (Wed, 15 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] hint about patch command
+
+------------------------------------------------------------------------
+r6335 | zimmerma | 2009-07-14 08:37:32 +0000 (Tue, 14 Jul 2009) | 3 lines
+Changed paths:
+ M /trunk/mpn_exp.c
+
+[mpn_exp.c] reverted previous change (MPN_ZERO is a macro for memset, which
+ does not forbid zero size)
+
+------------------------------------------------------------------------
+r6334 | zimmerma | 2009-07-14 07:47:57 +0000 (Tue, 14 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/tests/tcoth.c
+
+[coth.c, tcoth.c] fixed coth(+/0) which was wrong (reported by Christopher Creutzig)
+
+------------------------------------------------------------------------
+r6333 | zimmerma | 2009-07-14 07:39:38 +0000 (Tue, 14 Jul 2009) | 3 lines
+Changed paths:
+ M /trunk/mpn_exp.c
+
+[mpn_exp.c] fixed bug reported by David Kirkby on Solaris (GMP compiled with
+ Solaris compiler)
+
+------------------------------------------------------------------------
+r6330 | vlefevre | 2009-07-08 13:35:34 +0000 (Wed, 08 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: typo in a comment.
+------------------------------------------------------------------------
+r6329 | thevenyp | 2009-07-08 13:24:46 +0000 (Wed, 08 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug with %Rf, non-zero precision and a value rounded up to the next power of ten.
+
+------------------------------------------------------------------------
+r6328 | vlefevre | 2009-07-08 10:44:31 +0000 (Wed, 08 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: deleted trailing spaces.
+------------------------------------------------------------------------
+r6326 | vlefevre | 2009-07-08 10:42:02 +0000 (Wed, 08 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: added tests of some halfway cases.
+------------------------------------------------------------------------
+r6325 | thevenyp | 2009-07-08 09:46:52 +0000 (Wed, 08 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug in precision 0 with format %.0Rf (0.5 rounds to 0).
+
+------------------------------------------------------------------------
+r6322 | vlefevre | 2009-07-08 07:39:56 +0000 (Wed, 08 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: added a test that triggers an assertion failure.
+------------------------------------------------------------------------
+r6319 | vlefevre | 2009-07-08 07:17:20 +0000 (Wed, 08 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: fixed a test and added more tests for %.0Rf with the even
+rounding rule (shows a bug added in the latest corrections).
+------------------------------------------------------------------------
+r6316 | vlefevre | 2009-07-07 08:18:45 +0000 (Tue, 07 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: completed the test on emax (for %Ra and %Rb).
+Everything is OK.
+------------------------------------------------------------------------
+r6315 | vlefevre | 2009-07-07 07:55:06 +0000 (Tue, 07 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: my test was incorrect (I forgot the R), sorry.
+Still completing it...
+------------------------------------------------------------------------
+r6314 | vlefevre | 2009-07-07 07:40:22 +0000 (Tue, 07 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: comment (so that the test can be ported to the 2.4 branch).
+------------------------------------------------------------------------
+r6313 | vlefevre | 2009-07-07 07:38:00 +0000 (Tue, 07 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: started to write a test for emax, showing a bug (random
+output).
+------------------------------------------------------------------------
+r6311 | vlefevre | 2009-07-06 12:44:41 +0000 (Mon, 06 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update with "LC_ALL=en_US.UTF8 TZ=UTC svn log -rHEAD:0 -v".
+------------------------------------------------------------------------
+r6307 | vlefevre | 2009-07-06 11:17:09 +0000 (Mon, 06 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6305 | vlefevre | 2009-07-06 11:15:38 +0000 (Mon, 06 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi consistency: @var{stdout} -> @code{stdout}.
+------------------------------------------------------------------------
+r6303 | vlefevre | 2009-07-06 11:04:50 +0000 (Mon, 06 Jul 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: do not use a potential function call in SAFE_ABS macro.
+------------------------------------------------------------------------
+r6301 | thevenyp | 2009-07-06 08:36:59 +0000 (Mon, 06 Jul 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c tests/tsprintf.c: deleted trailing spaces.
+
+------------------------------------------------------------------------
+r6298 | thevenyp | 2009-06-29 13:09:42 +0000 (Mon, 29 Jun 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug when the value to be printed is rounded to the next power of ten with %Rf or %Rg (continuation of fix in r6278).
+tests/tsprintf.c: Add tests for rounding to next power of ten bug with %Rf or %Rg.
+
+------------------------------------------------------------------------
+r6297 | vlefevre | 2009-06-26 15:47:03 +0000 (Fri, 26 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/cmp2.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/get_z_exp.c
+ M /trunk/hypot.c
+ M /trunk/mpn_exp.c
+ M /trunk/round_prec.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/vasprintf.c
+
+mp_exp_unsigned_t -> mpfr_uexp_t (internal type only).
+------------------------------------------------------------------------
+r6296 | vlefevre | 2009-06-26 15:40:06 +0000 (Fri, 26 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: check the use of the obsolete mp_rnd_t type.
+------------------------------------------------------------------------
+r6295 | vlefevre | 2009-06-26 15:35:01 +0000 (Fri, 26 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/README.dev
+ M /trunk/TODO
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/eint.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_z.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/inp_str.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/minmax.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_f.c
+ M /trunk/set_ld.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setsign.c
+ M /trunk/si_op.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/vasprintf.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+mp_rnd_t -> mpfr_rnd_t
+------------------------------------------------------------------------
+r6294 | vlefevre | 2009-06-26 15:19:14 +0000 (Fri, 26 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/add.c
+ M /trunk/agm.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/frac.c
+ M /trunk/hypot.c
+ M /trunk/inp_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/next.c
+ M /trunk/pow_si.c
+ M /trunk/rec_sqrt.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/tests/random2.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tui_div.c
+ M /trunk/urandomb.c
+
+Suppressed MPFR_CLEAR_FLAGS (no longer did anything).
+------------------------------------------------------------------------
+r6290 | vlefevre | 2009-06-23 02:17:04 +0000 (Tue, 23 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6287 | vlefevre | 2009-06-23 02:06:27 +0000 (Tue, 23 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: fixed description of mpfr_get_str (clash with variables,
+inconsistent cases in the info format).
+------------------------------------------------------------------------
+r6286 | vlefevre | 2009-06-23 01:56:01 +0000 (Tue, 23 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/get_str.c
+
+get_str.c: added a space.
+------------------------------------------------------------------------
+r6283 | vlefevre | 2009-06-21 20:54:34 +0000 (Sun, 21 Jun 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: corrected comments.
+------------------------------------------------------------------------
+r6282 | thevenyp | 2009-06-19 19:55:18 +0000 (Fri, 19 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: convert GMP_RNDx to MPFR_RNDx.
+
+------------------------------------------------------------------------
+r6280 | thevenyp | 2009-06-19 16:40:57 +0000 (Fri, 19 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: Add brace to disambiguate nested if, and remove unused variable.
+
+------------------------------------------------------------------------
+r6279 | thevenyp | 2009-06-19 15:57:09 +0000 (Fri, 19 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tests/tfprintf.c tests/tprintf.c: Do not test very small values with %f.
+
+------------------------------------------------------------------------
+r6278 | thevenyp | 2009-06-19 15:55:57 +0000 (Fri, 19 Jun 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug when the value to be printed is rounded to the next power of ten with %Rf or %Rg.
+tests/tsprintf.c: Add tests for rounding to next power of ten bug.
+
+------------------------------------------------------------------------
+r6277 | zimmerma | 2009-06-18 12:34:24 +0000 (Thu, 18 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added new functions to implement
+
+------------------------------------------------------------------------
+r6276 | thevenyp | 2009-06-16 11:14:48 +0000 (Tue, 16 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/sinh_cosh.c
+
+sinh_cosh.c: precision of intermediate computation no more depends on precision of input variables.
+
+------------------------------------------------------------------------
+r6275 | vlefevre | 2009-06-15 01:58:34 +0000 (Mon, 15 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: new MPFR_VALUE_OF macro, now used by mpfr_get_prec and
+mpfr_get_exp macros (this is cleaner than the old hack).
+------------------------------------------------------------------------
+r6274 | vlefevre | 2009-06-14 11:57:18 +0000 (Sun, 14 Jun 2009) | 5 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: Make sure results of calculations on constants used with
+the fesetround() test are not precomputed by GCC (occurs on MIPS).
+Patch from Maciej W. Rozycki.
+ https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00036.html
+ http://article.gmane.org/gmane.comp.lib.mpfr.general/174
+------------------------------------------------------------------------
+r6272 | zimmerma | 2009-06-13 02:00:58 +0000 (Sat, 13 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+[algorithms.tex] bounds for get_str were checked by Mark Dickinson
+
+------------------------------------------------------------------------
+r6271 | zimmerma | 2009-06-12 04:25:44 +0000 (Fri, 12 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+[algorithms.tex] fixed typo
+
+------------------------------------------------------------------------
+r6270 | zimmerma | 2009-06-12 04:17:46 +0000 (Fri, 12 Jun 2009) | 4 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/mpfr.texi
+
+[algorithms.tex] fixed and completed up to b=62 table of bounds for get_str
+[mpfr.texi] fixed description of case n=0 for get_str (case of powers of two
+ bases was not coherent with the code)
+
+------------------------------------------------------------------------
+r6269 | zimmerma | 2009-06-10 18:52:10 +0000 (Wed, 10 Jun 2009) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+
+[algorithms.tex] analyzed precisely the cases where the value is m+1 instead
+ of m
+
+------------------------------------------------------------------------
+r6268 | vlefevre | 2009-06-10 05:21:05 +0000 (Wed, 10 Jun 2009) | 11 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: reverted incorrect patch r6267 that makes the test
+no longer work on x86 (with traditional FPU, no SSE), where one
+should get
+ checking for gcc float-conversion bug... yes, use -ffloat-store
+instead of
+ checking for gcc float-conversion bug... no
+Indeed the "volatile" has the effect to have all the intermediate
+results x stored into memory, i.e. it is more or less equivalent
+to the -ffloat-store option, so that it does not allow one to test
+whether -ffloat-store is needed or not (which is the goal of this
+test).
+------------------------------------------------------------------------
+r6267 | zimmerma | 2009-06-09 22:02:10 +0000 (Tue, 09 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+[acinclude.m4] patch from Maciej W. Rozycki on mpfr mailing-list, 9 Jun 2009
+
+------------------------------------------------------------------------
+r6266 | zimmerma | 2009-06-09 18:42:04 +0000 (Tue, 09 Jun 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/data/j0
+ M /trunk/tests/data/j1
+ M /trunk/tests/data/y0
+ M /trunk/tests/data/y1
+
+added more test cases for the Bessel functions (from John Harrison paper at
+Arith19)
+
+------------------------------------------------------------------------
+r6265 | thevenyp | 2009-06-04 17:15:24 +0000 (Thu, 04 Jun 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: Binary output with no digit after the decimal point is now supported. Fix bug when the binary or hexadecimal output value is rounded to the next power of the base. This also change outputs like 0xf.f with format string "%.0Ra" from 8p+1 to 1p+4 (as does gnu libc's printf).
+tests/tsprintf.c: add check for rounding to the next base power and fix some test value with %.0Ra (now output 1p+4 instead of 8p+3).
+
+------------------------------------------------------------------------
+r6264 | thevenyp | 2009-06-03 09:01:22 +0000 (Wed, 03 Jun 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr-longlong.h
+
+mpfr-longlong.h: Update to newer GMP version (changeset 12418:12a1d0bf21f0 Sun Mar 01 23:47:31 2009 +0100), merging modifications from r4657.
+
+------------------------------------------------------------------------
+r6263 | vlefevre | 2009-05-29 13:53:06 +0000 (Fri, 29 May 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: do not use GMP's namespace for identifiers defined in MPFR.
+------------------------------------------------------------------------
+r6261 | vlefevre | 2009-05-29 13:05:24 +0000 (Fri, 29 May 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added: do not use the GMP namespaces...
+------------------------------------------------------------------------
+r6259 | vlefevre | 2009-05-29 12:27:38 +0000 (Fri, 29 May 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: rewrote a comment.
+------------------------------------------------------------------------
+r6258 | thevenyp | 2009-05-29 07:37:23 +0000 (Fri, 29 May 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug, "%%" was not correctly displayed when used alone or before a mpfr_t output.
+tests/tfprintf.c tests/tprintf.c: Fix expected values for tests with "%%".
+
+------------------------------------------------------------------------
+r6257 | thevenyp | 2009-05-29 06:56:02 +0000 (Fri, 29 May 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Restate subsection Formatted Output Functions/Format String.
+
+------------------------------------------------------------------------
+r6256 | thevenyp | 2009-05-28 07:33:43 +0000 (Thu, 28 May 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: details on use of 'P' type in mpfr_printf.
+
+------------------------------------------------------------------------
+r6252 | thevenyp | 2009-05-27 14:59:54 +0000 (Wed, 27 May 2009) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: remind bug fixes since version 2.4.0.
+
+------------------------------------------------------------------------
+r6248 | thevenyp | 2009-05-27 13:17:03 +0000 (Wed, 27 May 2009) | 2 lines
+Changed paths:
+ M /trunk/set_d64.c
+
+set_d64.c: Partial revert of r6190 to fix problem in a simpler way: the decimal digits can be stored in array of char (no need to be unsigned).
+
+------------------------------------------------------------------------
+r6245 | vlefevre | 2009-05-27 02:26:50 +0000 (Wed, 27 May 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6241 | vlefevre | 2009-05-27 02:20:51 +0000 (Wed, 27 May 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfmod.c
+
+tests/tfmod.c: deleted trailing whitespace.
+------------------------------------------------------------------------
+r6240 | thevenyp | 2009-05-22 10:44:03 +0000 (Fri, 22 May 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tests/tatan.c: Add test triggering underflow (test coverage is now 100%).
+
+------------------------------------------------------------------------
+r6237 | vlefevre | 2009-05-20 21:54:03 +0000 (Wed, 20 May 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tests/tgeneric.c: for the second computation, increase the precision
+of the inputs in order to trigger the mpfr_fmod bug fixed in r6230
+(and potentially other bugs). Thanks to Eric Veach for the idea.
+------------------------------------------------------------------------
+r6236 | vlefevre | 2009-05-20 21:34:52 +0000 (Wed, 20 May 2009) | 1 line
+Changed paths:
+ M /trunk/tests
+
+Added tbuildopt to svn:ignore property of tests.
+------------------------------------------------------------------------
+r6234 | thevenyp | 2009-05-20 15:28:07 +0000 (Wed, 20 May 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfmod.c
+
+tests/tfmod.c: complete tests with special values.
+
+------------------------------------------------------------------------
+r6233 | thevenyp | 2009-05-20 15:26:47 +0000 (Wed, 20 May 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfmod.c
+
+tests/tfmod.c: code simplification + check ternary value too.
+
+------------------------------------------------------------------------
+r6232 | vlefevre | 2009-05-20 10:34:33 +0000 (Wed, 20 May 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfmod.c
+
+tests/tfmod.c: replaced NULL by (mpfr_ptr) 0 in mpfr_inits2/mpfr_clears.
+------------------------------------------------------------------------
+r6231 | vlefevre | 2009-05-20 10:32:07 +0000 (Wed, 20 May 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/tfmod.c
+
+tests/mpfr-test.h: added mpfr_cmp_ui0 macro (check that x is not a NaN).
+tests/tfmod.c (bug20090519): check that the results are not NaN's and
+replaced GMP_RNDN by MPFR_RNDN.
+------------------------------------------------------------------------
+r6230 | zimmerma | 2009-05-20 10:17:17 +0000 (Wed, 20 May 2009) | 3 lines
+Changed paths:
+ M /trunk/rem1.c
+ M /trunk/tests/tfmod.c
+
+[tests/tfmod.c] added testcase for bug reported by Eric Veach
+[rem1.c] fixed bug reported by Eric Veach
+
+------------------------------------------------------------------------
+r6229 | zimmerma | 2009-05-19 08:20:15 +0000 (Tue, 19 May 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added one item
+
+------------------------------------------------------------------------
+r6220 | lfousse | 2009-05-13 20:33:03 +0000 (Wed, 13 May 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Clarify the fact that mpfr_sum guarantees correct rounding.
+
+------------------------------------------------------------------------
+r6211 | vlefevre | 2009-05-13 15:40:36 +0000 (Wed, 13 May 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: updated a comment.
+------------------------------------------------------------------------
+r6210 | thevenyp | 2009-05-13 15:37:35 +0000 (Wed, 13 May 2009) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: Add a warning comment (removed in r6026).
+[merge -c 6209 from branch 2.4]
+
+------------------------------------------------------------------------
+r6196 | vlefevre | 2009-05-13 00:02:10 +0000 (Wed, 13 May 2009) | 2 lines
+Changed paths:
+ M /trunk/fms.c
+
+fms.c: improve the performance of memory allocations in small precision
+(almost identical to changeset 6195 for fma.c).
+------------------------------------------------------------------------
+r6195 | vlefevre | 2009-05-12 23:54:31 +0000 (Tue, 12 May 2009) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: patch by Patrick Pélissier to improve the performance of
+memory allocations in small precision.
+------------------------------------------------------------------------
+r6192 | thevenyp | 2009-05-05 17:13:37 +0000 (Tue, 05 May 2009) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/dump.c
+ M /trunk/get_d64.c
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/out_str.c
+ M /trunk/printf.c
+ M /trunk/set_d.c
+ M /trunk/strtofr.c
+ M /trunk/swap.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tversion.c
+ M /trunk/vasprintf.c
+
+Put '#include <string.h>' in mpfr-impl.h, remove it elsewhere.
+Other cleanup of header inclusion.
+Other change (by mistake): corrections in algorithms.tex
+------------------------------------------------------------------------
+r6191 | vlefevre | 2009-05-05 15:42:32 +0000 (Tue, 05 May 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: corrections / limit to 80 characters per line.
+------------------------------------------------------------------------
+r6190 | thevenyp | 2009-05-05 14:37:42 +0000 (Tue, 05 May 2009) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+
+get_d64.c set_d64.c: Fix types.
+
+------------------------------------------------------------------------
+r6189 | thevenyp | 2009-05-05 14:34:41 +0000 (Tue, 05 May 2009) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/tests/tpow_all.c
+
+printf.c tests/tpow_all.c: <string.h> is not automatically included when compiling with --with-gmp-build option.
+
+------------------------------------------------------------------------
+r6188 | thevenyp | 2009-05-05 14:06:43 +0000 (Tue, 05 May 2009) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ A /trunk/buildopt.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tbuildopt.c
+
+NEWS Makefile.am mpfr.h mpfr.texi buildopt.c: New functions mpfr_buildopt_tls_p and mpfr_buildopt_decimal_p.
+tests/Makefile.am tests/tbuildopt.c: Add tests for mpfr_buildopt_tls_p and mpfr_buildopt_decimal_p.
+
+------------------------------------------------------------------------
+r6187 | vlefevre | 2009-05-05 13:55:21 +0000 (Tue, 05 May 2009) | 1 line
+Changed paths:
+ M /trunk/atan.c
+
+atan.c: added comments after checking r6186.
+------------------------------------------------------------------------
+r6186 | thevenyp | 2009-05-05 10:07:47 +0000 (Tue, 05 May 2009) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/tests/tatan.c
+
+atan.c: expand exponent range when computing arctan(Inf) and arctan(+-1).
+tests/tatan.c: Check underflow of arctan(Inf) and arctan(1) with reduced exponent range.
+
+------------------------------------------------------------------------
+r6185 | vlefevre | 2009-05-04 16:27:56 +0000 (Mon, 04 May 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tests/tatan.c: replaced GMP_RNDN by MPFR_RNDN.
+------------------------------------------------------------------------
+r6182 | vlefevre | 2009-04-29 16:19:26 +0000 (Wed, 29 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/tests/tget_f.c
+
+Removed trailing spaces.
+------------------------------------------------------------------------
+r6181 | zimmerma | 2009-04-29 16:07:29 +0000 (Wed, 29 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+[atan.c] fixed bug when x is very near but differs from 1
+
+------------------------------------------------------------------------
+r6180 | vlefevre | 2009-04-29 15:41:23 +0000 (Wed, 29 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tests/tatan.c: added testcase for bug found by Christopher Creutzig
+(atan2_different_prec).
+------------------------------------------------------------------------
+r6177 | vlefevre | 2009-04-22 12:46:41 +0000 (Wed, 22 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c (data_check): try to open the data file first from the
+build directory, then from the source directory.
+------------------------------------------------------------------------
+r6176 | vlefevre | 2009-04-22 12:00:23 +0000 (Wed, 22 Apr 2009) | 4 lines
+Changed paths:
+ M /trunk/init2.c
+
+init2.c: check that mp_bits_per_limb == BITS_PER_MP_LIMB (useful
+in case GMP is upgraded with a different ABI, e.g. 32 vs mode32
+on PowerPC 64). Without such a check, MPFR can give incorrect
+results if the ABI's don't match.
+------------------------------------------------------------------------
+r6175 | vlefevre | 2009-04-22 08:33:57 +0000 (Wed, 22 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tmul.c
+
+Improved fix for problem dealt with in r6174: use function src_fopen()
+(from tests.c) instead of a macro MPFR_SRCDIR.
+------------------------------------------------------------------------
+r6174 | vlefevre | 2009-04-22 08:13:40 +0000 (Wed, 22 Apr 2009) | 10 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tmul.c
+
+Fixed problem when the srcdir value contains a word that is #define'd
+by the C implementation (test failure) or a comma (worse, the build of
+the tests terminates with an error). This can happen only when objdir
+and srcdir are different directories.
+ * tests/Makefile.am (tmul_CPPFLAGS): Put srcdir pathname in quotes.
+ * tests/tmul.c (MPFR_SRCDIR): Make the default a string.
+ (QUOTE, NAME): Delete.
+ (check_regression): Don't QUOTE MPFR_SRCDIR.
+Thanks to Sandra Loosemore for the patch.
+https://sympa.inria.fr/sympa/arc/mpfr/2009-04/msg00038.html
+------------------------------------------------------------------------
+r6173 | thevenyp | 2009-04-15 17:07:42 +0000 (Wed, 15 Apr 2009) | 3 lines
+Changed paths:
+ M /trunk/get_f.c
+ M /trunk/tests/tget_f.c
+
+get_f.c: remove dead code (x and z always have the same number of limbs).
+tests/tget_f.c: Add tests with every rounding mode, add tests with random values.
+
+------------------------------------------------------------------------
+r6172 | thevenyp | 2009-04-15 09:34:54 +0000 (Wed, 15 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+tests/tget_f.c: Fix typos, better error messages.
+
+------------------------------------------------------------------------
+r6171 | thevenyp | 2009-04-14 14:34:20 +0000 (Tue, 14 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/get_f.c
+ M /trunk/tests/tget_f.c
+
+tests/tget_f.c get_f.c: Set result to the maximum value when the mpfr_t is plus infinity and set correct ternary value.
+
+------------------------------------------------------------------------
+r6170 | thevenyp | 2009-04-14 14:29:16 +0000 (Tue, 14 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+tests/tget_f.c: Fix typo, increase size of y so that x and y have different limb size (they had the same size on MacOS X-32bits).
+
+------------------------------------------------------------------------
+r6168 | vlefevre | 2009-04-10 08:29:47 +0000 (Fri, 10 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: update concerning intmax_t after the change in r6166.
+------------------------------------------------------------------------
+r6166 | vlefevre | 2009-04-10 08:23:33 +0000 (Fri, 10 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: for intmax_t, also test _STDINT_H and _STDINT_H_.
+[merged changeset r6165 from the 2.4 branch]
+------------------------------------------------------------------------
+r6164 | vlefevre | 2009-04-10 08:10:37 +0000 (Fri, 10 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r6162 | vlefevre | 2009-04-10 08:09:47 +0000 (Fri, 10 Apr 2009) | 5 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+mpfr.h: for the intmax_t detection, also test INTMAX_MAX / UINTMAX_MAX
+(this may be useful for users of C++ compilers, if they have defined
+__STDC_LIMIT_MACROS but not __STDC_CONSTANT_MACROS).
+mpfr.texi: improvement concerning the use of intmax_t and uintmax_t.
+[merged changesets r6160 and r6161 from the 2.4 branch]
+------------------------------------------------------------------------
+r6159 | zimmerma | 2009-04-09 07:40:14 +0000 (Thu, 09 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] updated Notes on AIX/PowerPC
+
+------------------------------------------------------------------------
+r6158 | thevenyp | 2009-04-08 14:59:21 +0000 (Wed, 08 Apr 2009) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/get_f.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_f.c
+
+NEWS mpfr.texi get_f.c: mpfr_get_f now returns the usual ternary value.
+tests/tget_f.c: test the ternary value and the erange flag.
+
+------------------------------------------------------------------------
+r6157 | vlefevre | 2009-04-08 14:25:26 +0000 (Wed, 08 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/get_z.c
+ M /trunk/tests/tget_z.c
+
+tests/tget_z.c: do not assume specific values of the ternary value.
+get_z.c: simplified code.
+------------------------------------------------------------------------
+r6156 | vlefevre | 2009-04-08 14:19:23 +0000 (Wed, 08 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: s/an inexact value/a ternary value/
+------------------------------------------------------------------------
+r6155 | thevenyp | 2009-04-08 12:53:37 +0000 (Wed, 08 Apr 2009) | 4 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/get_z.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_z.c
+
+NEWS mpfr.texi get_z.c: mpfr_get_z now returns an inexact value.
+mpfr.h: change prototype of mpfr_get_z.
+tests/tget_z.c: test inexact value.
+
+------------------------------------------------------------------------
+r6154 | zimmerma | 2009-04-08 11:10:46 +0000 (Wed, 08 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+[mpf2mpfr.h] added comment for #endif
+
+------------------------------------------------------------------------
+r6153 | thevenyp | 2009-04-08 11:09:14 +0000 (Wed, 08 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+mpf2mpfr.h: fix typo
+
+------------------------------------------------------------------------
+r6152 | vlefevre | 2009-04-02 16:03:05 +0000 (Thu, 02 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/get_z.c
+
+get_z.c: fixed title in comment.
+------------------------------------------------------------------------
+r6151 | vlefevre | 2009-04-01 14:22:03 +0000 (Wed, 01 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/get_z.c
+
+get_z.c: detect out-of-range precision (such a detection could be missed
+if mpfr_exp_t > mpfr_prec_t).
+------------------------------------------------------------------------
+r6150 | vlefevre | 2009-04-01 14:07:29 +0000 (Wed, 01 Apr 2009) | 2 lines
+Changed paths:
+ M /trunk/get_z.c
+ M /trunk/mpfr.h
+
+Removed the comment from mpfr.h added in r6149, and patched get_z.c
+(safer code is better than a comment).
+------------------------------------------------------------------------
+r6149 | vlefevre | 2009-04-01 14:02:14 +0000 (Wed, 01 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: important comment to validate the change done in r6147.
+------------------------------------------------------------------------
+r6148 | vlefevre | 2009-04-01 13:46:30 +0000 (Wed, 01 Apr 2009) | 1 line
+Changed paths:
+ M /trunk/get_z_exp.c
+
+get_z_exp.c: updated comments.
+------------------------------------------------------------------------
+r6147 | zimmerma | 2009-04-01 13:26:42 +0000 (Wed, 01 Apr 2009) | 3 lines
+Changed paths:
+ M /trunk/get_z.c
+ M /trunk/tests/tget_z.c
+
+[get_z.c] simplified the code, removed the FIXME
+[tget_z.c] added new test
+
+------------------------------------------------------------------------
+r6146 | zimmerma | 2009-04-01 13:11:13 +0000 (Wed, 01 Apr 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_z.c
+
+[mpfr.texi] completed documentation of mpfr_get_z_exp (was incomplete for 0)
+[tget_z.c] added test case for 0 with emin > 0 (should give 100% coverage for
+ get_z.c)
+
+------------------------------------------------------------------------
+r6145 | thevenyp | 2009-03-30 14:47:28 +0000 (Mon, 30 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tset_str.c
+ M /trunk/vasprintf.c
+
+strtofr.c tests/tset_str.c: Code simplification (sizeof (char) is always 1).
+vasprintf.c: Cast into size_t (just in case).
+
+------------------------------------------------------------------------
+r6144 | thevenyp | 2009-03-30 12:15:40 +0000 (Mon, 30 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: Code simplification (sizeof (char) is always 1).
+
+------------------------------------------------------------------------
+r6143 | thevenyp | 2009-03-27 09:34:03 +0000 (Fri, 27 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+acinclude.m4: remove definition of va_copy, just detect its presence.
+printf.c vasprintf.c: #define a replacement of va_copy if needed (in the same way as gmp).
+
+------------------------------------------------------------------------
+r6142 | thevenyp | 2009-03-26 15:09:38 +0000 (Thu, 26 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: Change MPFR_FUNC_PRINTF_SPEC (renamed MPFR_FUNC_GMP_PRINTF_SPEC) so that it actually checks output.
+
+------------------------------------------------------------------------
+r6141 | thevenyp | 2009-03-25 17:53:50 +0000 (Wed, 25 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/out_str.c
+ M /trunk/tests/inp_str.data
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_str.c
+
+Change base upper limit in string conversion up to 62.
+
+------------------------------------------------------------------------
+r6140 | zimmerma | 2009-03-25 12:13:58 +0000 (Wed, 25 Mar 2009) | 4 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_str.c
+
+[mpfr.texi] fixed documentation of mpfr_get_str which was wrong
+[tget_str.c] added test cases for odd base and tie breaking case
+[get_str.c] fixed typos in comments
+
+------------------------------------------------------------------------
+r6139 | zimmerma | 2009-03-25 08:54:17 +0000 (Wed, 25 Mar 2009) | 5 lines
+Changed paths:
+ M /trunk/tests/random2.c
+
+[tests/random2.c] added missing mpfr-test.h (revealed by nightly tests), and
+ removed mpfr-impl.h (already included in mpfr-test.h)
+ I have also removed MPFR_NEED_LONGLONG_H: I don't see why it
+ is needed, and all tests pass.
+
+------------------------------------------------------------------------
+r6138 | thevenyp | 2009-03-24 17:19:55 +0000 (Tue, 24 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Add a note on mpfr_printf output in binary with precision one.
+
+------------------------------------------------------------------------
+r6137 | thevenyp | 2009-03-24 16:51:17 +0000 (Tue, 24 Mar 2009) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/random2.c
+ M /trunk/tests/tests.c
+ M /trunk/urandomb.c
+
+urandomb.c mpfr-gmp.c mpfr-gmp.h: mpfr_rand_raw is now in urandom.c.
+mpfr-impl.h: mpfr_rand_raw is now always build as an internal function.
+TODO tests/tests.c tests/random2.c: Use mpfr_rand_raw instead of _gmp_rand
+
+------------------------------------------------------------------------
+r6136 | thevenyp | 2009-03-24 15:10:52 +0000 (Tue, 24 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ D /trunk/random2.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ A /trunk/tests/random2.c (from /trunk/random2.c:6135)
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+
+Move mpfr_random2 to tests directory, remove it from API.
+
+------------------------------------------------------------------------
+r6135 | thevenyp | 2009-03-24 14:29:04 +0000 (Tue, 24 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Improve documentation in Formatted Output Functions/Format String subsection.
+
+------------------------------------------------------------------------
+r6134 | vlefevre | 2009-03-24 11:33:41 +0000 (Tue, 24 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/sin.c
+
+cos.c, sin.c: added MPFR_ASSERTN for huge expx.
+------------------------------------------------------------------------
+r6132 | vlefevre | 2009-03-21 00:52:31 +0000 (Sat, 21 Mar 2009) | 6 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tstrtofr.c
+
+mpfr.texi: corrected mpfr_strtofr documentation ("NAN()" is accepted).
+tests/tstrtofr.c: added a test for "NAN()".
+Note: the code follows the ISO C99 standard for strtod, as explained
+in the mpfr_strtofr documentation, so that the code was correct.
+[merged changeset 6131 from the 2.4 branch and changed GMP_RNDN into
+MPFR_RNDN]
+------------------------------------------------------------------------
+r6130 | vlefevre | 2009-03-19 02:11:38 +0000 (Thu, 19 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: added some tests for acinclude.m4 and configure.in (sh).
+------------------------------------------------------------------------
+r6128 | vlefevre | 2009-03-19 02:03:29 +0000 (Thu, 19 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Applied patch from Ralf Wildenhues.
+ * configure.in: Avoid unportable (and unneeded) shell quoting.
+ * acinclude.m4: Avoid non-POSIX shell construct.
+------------------------------------------------------------------------
+r6126 | vlefevre | 2009-03-18 11:15:05 +0000 (Wed, 18 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tmin_prec.c
+
+tests/tmin_prec.c: replaced GMP_RNDN by MPFR_RNDN.
+------------------------------------------------------------------------
+r6125 | vlefevre | 2009-03-16 18:38:03 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+tests/tset_ld.c: removed unused variable.
+------------------------------------------------------------------------
+r6124 | thevenyp | 2009-03-16 17:46:18 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+tests/tset_ld.c: Add test case for the bug fixed with r6101.
+
+------------------------------------------------------------------------
+r6123 | vlefevre | 2009-03-16 15:50:58 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tmin_prec.c
+
+tests/tmin_prec.c: added tests.
+------------------------------------------------------------------------
+r6122 | vlefevre | 2009-03-16 15:43:39 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+------------------------------------------------------------------------
+r6121 | vlefevre | 2009-03-16 15:40:48 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/min_prec.c
+
+min_prec.c: fixed another bug (the code was incorrect with >= 2 limbs).
+------------------------------------------------------------------------
+r6120 | vlefevre | 2009-03-16 15:37:10 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tmin_prec.c
+
+tests/tmin_prec.c: bug fix (side effects in MPFR_ASSERTN), new tests.
+------------------------------------------------------------------------
+r6119 | vlefevre | 2009-03-16 15:28:11 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a note about assertions and code with side effects.
+------------------------------------------------------------------------
+r6118 | thevenyp | 2009-03-16 15:23:46 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+tests/tfprintf.c: Use a value less than 2^31-1 compatible (thus < LONG_MAX) in bug_20090316 (cf r6112).
+
+------------------------------------------------------------------------
+r6117 | vlefevre | 2009-03-16 15:07:50 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tmin_prec.c
+
+Replaced GMP_RND* by MPFR_RND*.
+------------------------------------------------------------------------
+r6116 | zimmerma | 2009-03-16 12:50:24 +0000 (Mon, 16 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tmin_prec.c
+
+[tests/tmin_prec.c] new file contributed from Laurent Fousse
+[tests/Makefile.am] added tmin_prec
+
+------------------------------------------------------------------------
+r6115 | vlefevre | 2009-03-16 12:35:27 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/min_prec.c
+
+min_prec.c: removed a useless test.
+------------------------------------------------------------------------
+r6114 | vlefevre | 2009-03-16 12:30:20 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/min_prec.c
+
+min_prec.c: fixed another bug.
+------------------------------------------------------------------------
+r6113 | thevenyp | 2009-03-16 12:26:29 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: Add more debug assertion on the buffer size.
+
+------------------------------------------------------------------------
+r6112 | thevenyp | 2009-03-16 12:03:43 +0000 (Mon, 16 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug_20090316 (in buffer_cat, the buffer was 1 character too small in some cases).
+tests/tfprintf.c: Add test for bug_20090316.
+
+------------------------------------------------------------------------
+r6111 | vlefevre | 2009-03-16 11:57:41 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+tests/tadd.c: changed GMP_RND* (from r6071) into MPFR_RND*; this should
+have been done when porting the patch from the 2.4 branch.
+------------------------------------------------------------------------
+r6110 | thevenyp | 2009-03-16 10:25:16 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: Use new environment variable MPFR_CHECK_LARGEMEM for memory expensive test.
+
+------------------------------------------------------------------------
+r6109 | vlefevre | 2009-03-16 10:12:57 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/min_prec.c
+
+min_prec.c: bug fixed by Laurent.
+------------------------------------------------------------------------
+r6108 | thevenyp | 2009-03-16 10:01:24 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: Fix typo.
+
+------------------------------------------------------------------------
+r6107 | vlefevre | 2009-03-16 09:32:21 +0000 (Mon, 16 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/min_prec.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Fixed the prototype of mpfr_min_prec (should return a mpfr_prec_t)
+and its description.
+------------------------------------------------------------------------
+r6106 | vlefevre | 2009-03-16 09:26:54 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/min_prec.c
+
+min_prec.c: fixed a bug (but the code should be improved).
+------------------------------------------------------------------------
+r6105 | vlefevre | 2009-03-16 09:23:46 +0000 (Mon, 16 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/min_prec.c
+
+min_prec.c: simplified the singular cases (see other functions).
+------------------------------------------------------------------------
+r6104 | lfousse | 2009-03-15 20:44:23 +0000 (Sun, 15 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Add protoype for mpfr_min_prec in mpfr.h.
+
+------------------------------------------------------------------------
+r6103 | lfousse | 2009-03-15 20:34:33 +0000 (Sun, 15 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation for mpfr_min_prec.
+
+------------------------------------------------------------------------
+r6102 | lfousse | 2009-03-15 20:34:00 +0000 (Sun, 15 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/min_prec.c
+
+New function mpfr_min_prec.
+
+------------------------------------------------------------------------
+r6101 | vlefevre | 2009-03-15 03:17:06 +0000 (Sun, 15 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+get_ld.c: fixed bugs in the case HAVE_LDOUBLE_IEEE_EXT_LITTLE (one found
+by Steve Kargl, and another one concerning the mpfr_set_emax value).
+------------------------------------------------------------------------
+r6100 | thevenyp | 2009-03-13 17:58:59 +0000 (Fri, 13 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: This is probably dead code, but being uncertain, put an assert here.
+
+------------------------------------------------------------------------
+r6099 | thevenyp | 2009-03-13 17:55:13 +0000 (Fri, 13 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: As the buffer helper functions are not used in the current code with a zero parameter len, do not handle this case anymore, check that these cases do not happened in MPFR_ASSERTD macros, add some additional assert to ensure consistency.
+
+------------------------------------------------------------------------
+r6098 | thevenyp | 2009-03-13 17:47:57 +0000 (Fri, 13 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: make clear that string_buffer.curr is a pointer to the null terminating character, fix the only place where it was not handle so.
+
+------------------------------------------------------------------------
+r6097 | thevenyp | 2009-03-13 17:36:20 +0000 (Fri, 13 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug.
+
+------------------------------------------------------------------------
+r6096 | thevenyp | 2009-03-13 17:30:10 +0000 (Fri, 13 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+tests/tprintf.c: Add an expensive test where the output number has more than INT_MAX characters.
+vasprintf.c: Fix the bug triggered by the new test in tsprintf.c.
+
+------------------------------------------------------------------------
+r6095 | thevenyp | 2009-03-13 17:17:42 +0000 (Fri, 13 Mar 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+
+mpfr.texi: Do cosmetic changes and add some details on printf behavior when the precision field is empty.
+tests/tsprintf.c: improve code coverage.
+tests/tprintf.c: improve code coverage, check the behavior describe in mpfr.texi.
+
+------------------------------------------------------------------------
+r6091 | vlefevre | 2009-03-12 12:54:29 +0000 (Thu, 12 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/zeta_ui.c
+
+zeta_ui.c: correction r6090 was incorrect as there was another problem:
+the 3rd argument of mpz_divexact_ui is an unsigned long, not a limb.
+So, fixed the shift count (assuming no padding bits in unsigned long).
+------------------------------------------------------------------------
+r6090 | vlefevre | 2009-03-12 12:45:21 +0000 (Thu, 12 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/zeta_ui.c
+
+zeta_ui.c bug fix: a shift count could be >= width of type (if a limb is
+a long long and long long is twice the size of a long). This problem was
+detected by a warning on gcc40 with CFLAGS="-mpowerpc64 -mcpu=970 -O2".
+------------------------------------------------------------------------
+r6088 | vlefevre | 2009-03-10 01:11:36 +0000 (Tue, 10 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: added missing cast to void * for %p.
+------------------------------------------------------------------------
+r6086 | vlefevre | 2009-03-09 15:51:27 +0000 (Mon, 09 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+tests/tfprintf.c: added missing cast to void * for %p.
+------------------------------------------------------------------------
+r6084 | vlefevre | 2009-03-09 15:42:51 +0000 (Mon, 09 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: fixed bug in CONSUME_VA_ARG for case MP_LIMB_ARG (%Mu).
+------------------------------------------------------------------------
+r6082 | vlefevre | 2009-03-09 14:09:10 +0000 (Mon, 09 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: GMP with ABI=mode32 should be tested on 64-bit PowerPC.
+------------------------------------------------------------------------
+r6081 | thevenyp | 2009-03-06 18:07:12 +0000 (Fri, 06 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: now return -1 when the format string is invalid (undefined behavior in standard C99)
+tests/tprintf.c: Additional checks with invalid format strings.
+
+------------------------------------------------------------------------
+r6080 | thevenyp | 2009-03-06 18:01:24 +0000 (Fri, 06 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Add missing conversion specifier accepted with mpfr_t variable.
+
+------------------------------------------------------------------------
+r6079 | vlefevre | 2009-03-06 13:03:44 +0000 (Fri, 06 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/add1.c
+
+add1.c: assertions on the argument values should use MPFR_ASSERTN.
+------------------------------------------------------------------------
+r6077 | zimmerma | 2009-03-06 11:50:19 +0000 (Fri, 06 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/cache.c
+
+[cache.c] improved comment for mpfr_init_cache
+
+------------------------------------------------------------------------
+r6076 | zimmerma | 2009-03-06 11:44:10 +0000 (Fri, 06 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+
+[add1.c] transformed switch() into if-then-else, to get 100% coverage
+
+------------------------------------------------------------------------
+r6074 | vlefevre | 2009-03-06 00:45:57 +0000 (Fri, 06 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/cache.c
+
+untabify
+------------------------------------------------------------------------
+r6073 | vlefevre | 2009-03-06 00:40:20 +0000 (Fri, 06 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/update-faq
+
+update-faq: change GMP_RND into MPFR_RND from the version on the web
+(since MPFR 3.0 hasn't been released yet, the FAQ still uses the 2.x
+API).
+------------------------------------------------------------------------
+r6071 | vlefevre | 2009-03-05 23:46:45 +0000 (Thu, 05 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tadd.c
+
+tests/tadd.c: completed the code coverage (case bk == 0 in add1.c).
+------------------------------------------------------------------------
+r6070 | zimmerma | 2009-03-05 19:44:05 +0000 (Thu, 05 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/mpfr-impl.h
+
+[mpfr-impl.h,cache.c] commented out mpfr_init_cache
+
+------------------------------------------------------------------------
+r6069 | zimmerma | 2009-03-05 16:37:19 +0000 (Thu, 05 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/const_catalan.c
+
+[const_catalan.c] decreased initial Ziv precision to get 100% coverage
+
+------------------------------------------------------------------------
+r6068 | zimmerma | 2009-03-05 16:28:13 +0000 (Thu, 05 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/cmp2.c
+ M /trunk/tests/tcmp2.c
+
+[cmp2.c] added comments
+[tcmp2.c] added test to improve coverage to 100%
+
+------------------------------------------------------------------------
+r6067 | zimmerma | 2009-03-05 14:12:32 +0000 (Thu, 05 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/tests/tatan.c
+
+[atan2.c,tatan.c] reduced Ziv's initial precision and added test to have
+ 100% coverage of atan2.c
+
+------------------------------------------------------------------------
+r6066 | zimmerma | 2009-03-05 13:43:18 +0000 (Thu, 05 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+[atan.c] coverage should now be 100%
+
+------------------------------------------------------------------------
+r6065 | zimmerma | 2009-03-04 17:09:02 +0000 (Wed, 04 Mar 2009) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+[algorithms.bib] added new reference
+[TODO] added pointers
+
+------------------------------------------------------------------------
+r6059 | vlefevre | 2009-03-04 12:59:50 +0000 (Wed, 04 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+
+mpfr-gmp.c (mpfr_assert_fail): output "MPFR" too in assertion failure
+messages.
+------------------------------------------------------------------------
+r6057 | vlefevre | 2009-03-04 01:33:17 +0000 (Wed, 04 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/mpfrlint
+
+Updated mpfrlint script.
+------------------------------------------------------------------------
+r6056 | vlefevre | 2009-03-04 01:06:47 +0000 (Wed, 04 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated month.
+------------------------------------------------------------------------
+r6055 | vlefevre | 2009-03-04 01:02:26 +0000 (Wed, 04 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: say that the license has changed.
+------------------------------------------------------------------------
+r6054 | vlefevre | 2009-03-03 17:32:00 +0000 (Tue, 03 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+Updated NEWS (function mpfr_random has been removed).
+------------------------------------------------------------------------
+r6053 | zimmerma | 2009-03-03 16:51:07 +0000 (Tue, 03 Mar 2009) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/TODO
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/div.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/eint.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_ld.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/modf.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/replace_all
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sech.c
+ M /trunk/set_ld.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/vasprintf.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+GMP_RNDX -> MPFR_RNDX
+
+------------------------------------------------------------------------
+r6051 | vlefevre | 2009-03-03 14:05:38 +0000 (Tue, 03 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/tests
+
+tests: added taway to svn:ignore property.
+------------------------------------------------------------------------
+r6050 | vlefevre | 2009-03-03 14:03:06 +0000 (Tue, 03 Mar 2009) | 1 line
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/COPYING.LIB
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/mbench/Makefile
+ M /trunk/mbench/README
+ M /trunk/mbench/generate.c
+ M /trunk/mbench/mfv5-arprec.cc
+ M /trunk/mbench/mfv5-cln.cc
+ M /trunk/mbench/mfv5-crlibm.cc
+ M /trunk/mbench/mfv5-libc.cc
+ M /trunk/mbench/mfv5-lidia.cc
+ M /trunk/mbench/mfv5-mpf.cc
+ M /trunk/mbench/mfv5-mpfr.cc
+ M /trunk/mbench/mfv5-ntl.cc
+ M /trunk/mbench/mfv5-pari.cc
+ M /trunk/mbench/mfv5-void.cc
+ M /trunk/mbench/mfv5.cc
+ M /trunk/mbench/mfv5.h
+ M /trunk/mbench/mpfr-gfx.c
+ M /trunk/mbench/mpfr-v4.c
+ M /trunk/mbench/mpfr-v6.c
+ M /trunk/mbench/timp.h
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-longlong.h
+ M /trunk/mpfr-thread.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/random2.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/speed.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Update to LGPL v3+, as decided by the main MPFR developers.
+------------------------------------------------------------------------
+r6043 | vlefevre | 2009-02-27 15:46:06 +0000 (Fri, 27 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/add.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/rem1.c
+ M /trunk/round_near_x.c
+ M /trunk/set_z.c
+ M /trunk/tests/taway.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Untabified and deleted trailing spaces (for patches).
+------------------------------------------------------------------------
+r6041 | zimmerma | 2009-02-27 14:33:12 +0000 (Fri, 27 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/rint.c
+ M /trunk/tests/tget_sj.c
+
+[rint.c] fixed a bug incorporated with the round away mode
+[tget_sj.c] fixed the tests for round away
+
+------------------------------------------------------------------------
+r6040 | zimmerma | 2009-02-27 14:11:22 +0000 (Fri, 27 Feb 2009) | 5 lines
+Changed paths:
+ M /trunk/rint.c
+ M /trunk/set_z.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/taway.c
+
+[rint.c] fixed bug with round away
+[taway.c] new test file for round away (with random values)
+[tests/Makefile.am] added taway
+[set_z.c] GNU style
+
+------------------------------------------------------------------------
+r6037 | thevenyp | 2009-02-27 13:38:30 +0000 (Fri, 27 Feb 2009) | 5 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: Change test5rm (formerly test4rm) so that it checks the new
+GMP_RNDA rounding mode, and that the corresponding rounding towards infinity
+is checked with GMP_RNDZ or with GMP_RNDA in one-pass mode (now, two-pass
+mode). Remove a comment about a warning from gcc solved with r5057.
+
+------------------------------------------------------------------------
+r6036 | zimmerma | 2009-02-27 13:27:41 +0000 (Fri, 27 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/rem1.c
+ M /trunk/tests/tremquo.c
+
+[rem1.c] fixed bug found in adding tests for round away
+
+------------------------------------------------------------------------
+r6035 | zimmerma | 2009-02-27 06:36:54 +0000 (Fri, 27 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+[add.c] added comment for 0 + 0 with round away
+
+------------------------------------------------------------------------
+r6034 | vlefevre | 2009-02-26 23:02:57 +0000 (Thu, 26 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+tests/texceptions.c: removed obsolete comments from r2427.
+------------------------------------------------------------------------
+r6033 | zimmerma | 2009-02-26 21:28:42 +0000 (Thu, 26 Feb 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/tsub.c
+
+[mpfr.h] added comment about order of rounding modes
+[texceptions.c] added comments, fixed typo
+[tsub.c] added test, fixed typo
+
+------------------------------------------------------------------------
+r6032 | thevenyp | 2009-02-26 18:21:14 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+
+Add tests with round away mode.
+
+------------------------------------------------------------------------
+r6031 | vlefevre | 2009-02-26 17:25:26 +0000 (Thu, 26 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version to 3.0.0-dev.
+------------------------------------------------------------------------
+r6030 | zimmerma | 2009-02-26 15:47:06 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/TODO
+ M /trunk/add1.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/div_ui.c
+ M /trunk/erf.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/hypot.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/print_rnd_mode.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/set_rnd.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+added round to away (still experimental)
+
+------------------------------------------------------------------------
+r6026 | zimmerma | 2009-02-26 10:31:39 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+[mpfr.h] added comments for rounding modes
+
+------------------------------------------------------------------------
+r6022 | vlefevre | 2009-02-26 01:41:26 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/m4
+
+Added svn:ignore property on the m4 directory (these .m4 files are
+generated automatically).
+------------------------------------------------------------------------
+r6021 | vlefevre | 2009-02-26 01:36:06 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: updated -version-info (since mpfr_random has been removed,
+we already know its value).
+------------------------------------------------------------------------
+r6019 | vlefevre | 2009-02-26 01:26:45 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: do not check libtool -version-info value if the VERSION
+file contains "-dev".
+------------------------------------------------------------------------
+r6018 | vlefevre | 2009-02-26 01:16:02 +0000 (Thu, 26 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: In a "make dist", check that libtool -version-info value
+is up-to-date (this is a heuristic only).
+------------------------------------------------------------------------
+r6016 | vlefevre | 2009-02-26 00:36:25 +0000 (Thu, 26 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release" -- it is important to read
+this section entirely before making any release (even if some steps
+may be skipped for some particular releases).
+------------------------------------------------------------------------
+r6010 | vlefevre | 2009-02-25 22:06:27 +0000 (Wed, 25 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: do not use VLA's (C99 only).
+------------------------------------------------------------------------
+r6003 | vlefevre | 2009-02-25 14:24:06 +0000 (Wed, 25 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: update about patches.
+------------------------------------------------------------------------
+r5999 | vlefevre | 2009-02-25 12:44:51 +0000 (Wed, 25 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: coding style: removed spurious spaces.
+------------------------------------------------------------------------
+r5997 | vlefevre | 2009-02-25 12:16:17 +0000 (Wed, 25 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated month.
+------------------------------------------------------------------------
+r5996 | vlefevre | 2009-02-25 12:14:38 +0000 (Wed, 25 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/printf.c
+
+printf.c: fixed assertion failures in the case buffer == NULL and
+size == 0 (see r5995). Also replaced MPFR_ASSERTD(buf != NULL) by
+MPFR_ASSERTN(buf != NULL) since buf is provided as an argument.
+------------------------------------------------------------------------
+r5995 | vlefevre | 2009-02-25 12:12:52 +0000 (Wed, 25 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: added mpfr_snprintf/mpfr_vsnprintf tests with
+buffer == NULL and size == 0 (as allowed in C99 snprintf/vsnprintf
+and by the MPFR documentation).
+------------------------------------------------------------------------
+r5994 | thevenyp | 2009-02-25 09:58:15 +0000 (Wed, 25 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Fix typos.
+
+------------------------------------------------------------------------
+r5993 | vlefevre | 2009-02-24 19:40:06 +0000 (Tue, 24 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/tuneup.c
+
+tuneup.c: untabified.
+------------------------------------------------------------------------
+r5992 | thevenyp | 2009-02-24 18:04:04 +0000 (Tue, 24 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/tests/tsprintf.c
+
+printf.c: Fix wrong return value, mpfr_snprintf and mpfr_vsnprintf functions must always return the number of character that would be written if the parameter n had been sufficiently large (it previously returned zero when n == 0).
+tests/tsprintf.c: Fix test of mpfr_snprintf and mpfr_vsnprintf (the wrong return value was checked).
+
+------------------------------------------------------------------------
+r5991 | vlefevre | 2009-02-24 15:38:37 +0000 (Tue, 24 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/printf.c
+
+printf.c: fix buffer overflow in mpfr_snprintf and mpfr_vsnprintf.
+------------------------------------------------------------------------
+r5990 | vlefevre | 2009-02-24 15:37:33 +0000 (Tue, 24 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: added a test showing a buffer overflow in mpfr_vsnprintf.
+------------------------------------------------------------------------
+r5989 | vlefevre | 2009-02-24 15:30:06 +0000 (Tue, 24 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: added a test showing a buffer overflow in mpfr_snprintf.
+------------------------------------------------------------------------
+r5985 | vlefevre | 2009-02-23 12:21:47 +0000 (Mon, 23 Feb 2009) | 12 lines
+Changed paths:
+ M /trunk/tests/tests.c
+ M /trunk/tests/tversion.c
+ M /trunk/update-version
+
+Changed how the test of MPFR_VERSION_MAJOR, MPFR_VERSION_MINOR and
+MPFR_VERSION_PATCHLEVEL vs MPFR_VERSION_STRING is performed.
+Detailed explanations:
+ The test was enabled only in release tarballs (suffix not present),
+ where tests/tversion.c normally contained a "#if 1" (though this
+ is not the case in the MPFR 2.4.0 tarball). In patches, this test
+ should be disabled by changing the "#if 1" into "#if 0", due to
+ the suffix. But as one should be able to apply any patches (in any
+ order), this method was not satisfactory. The test has been moved
+ from tests/tversion.c to tests/tests.c (in function test_version),
+ and the suffix is now ignored in this test; the change of #if has
+ been removed from the update-version script.
+------------------------------------------------------------------------
+r5981 | vlefevre | 2009-02-20 21:51:01 +0000 (Fri, 20 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: corrected update-version usage for patches.
+------------------------------------------------------------------------
+r5978 | vlefevre | 2009-02-20 16:04:19 +0000 (Fri, 20 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+------------------------------------------------------------------------
+r5975 | zimmerma | 2009-02-20 15:11:17 +0000 (Fri, 20 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/mparam_h.in
+ M /trunk/tuneup.c
+
+[mparam_h.in] added default thresholds for sparc64
+[tuneup.c] print gcc patchlevel
+
+------------------------------------------------------------------------
+r5970 | vlefevre | 2009-02-19 01:10:31 +0000 (Thu, 19 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/speed.c
+ M /trunk/tests/texp.c
+
+speed.c, tests/texp.c: untabified.
+------------------------------------------------------------------------
+r5969 | vlefevre | 2009-02-19 01:08:00 +0000 (Thu, 19 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: improved mpfr_strtofr documentation (completing r5965).
+------------------------------------------------------------------------
+r5967 | zimmerma | 2009-02-18 21:31:24 +0000 (Wed, 18 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] added tuning for powerpc64
+
+------------------------------------------------------------------------
+r5966 | thevenyp | 2009-02-18 17:06:02 +0000 (Wed, 18 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: fix typo.
+
+------------------------------------------------------------------------
+r5965 | thevenyp | 2009-02-18 16:55:21 +0000 (Wed, 18 Feb 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+strtofr.c: accept bases up to 62.
+mpfr.texi: modify mpfr_strtofr documentation accordingly.
+tests/tstrtofr.c: add tests for bases 62, 60, and 61.
+
+------------------------------------------------------------------------
+r5964 | thevenyp | 2009-02-17 16:52:33 +0000 (Tue, 17 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+mparam_h.in: Change core2/64bit parameters.
+
+------------------------------------------------------------------------
+r5963 | vlefevre | 2009-02-17 16:46:56 +0000 (Tue, 17 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+Checks whether C99 length modifiers 'hh' and 'll' are supported by the
+system ('hh' is absent on alpha-OSF1-V5, bug reported by Kate Minola).
+[Merged changeset 5956 from the 2.4 branch.]
+------------------------------------------------------------------------
+r5962 | zimmerma | 2009-02-17 16:31:46 +0000 (Tue, 17 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+[texp.c] yet another better fix
+
+------------------------------------------------------------------------
+r5961 | zimmerma | 2009-02-17 16:23:41 +0000 (Tue, 17 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+[texp.c] fixed previous patch and added comment
+
+------------------------------------------------------------------------
+r5960 | zimmerma | 2009-02-17 16:19:25 +0000 (Tue, 17 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+[texp.c] fixed corner case test
+
+------------------------------------------------------------------------
+r5958 | vlefevre | 2009-02-16 14:27:52 +0000 (Mon, 16 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: improved latest change.
+------------------------------------------------------------------------
+r5957 | vlefevre | 2009-02-16 14:25:10 +0000 (Mon, 16 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: mentioned update-version for patches.
+------------------------------------------------------------------------
+r5955 | zimmerma | 2009-02-11 10:09:36 +0000 (Wed, 11 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mbench/mpfr-gfx.c
+
+[mpfr-gfx.c] added -p option to produce a Postscript file
+
+------------------------------------------------------------------------
+r5954 | zimmerma | 2009-02-10 21:02:22 +0000 (Tue, 10 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] added thresholds for ARM
+
+------------------------------------------------------------------------
+r5953 | zimmerma | 2009-02-10 17:39:27 +0000 (Tue, 10 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] added description of how to tune MPFR
+
+------------------------------------------------------------------------
+r5952 | zimmerma | 2009-02-10 15:52:48 +0000 (Tue, 10 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] added another example of using mpfr-gfx
+
+------------------------------------------------------------------------
+r5951 | zimmerma | 2009-02-10 15:50:40 +0000 (Tue, 10 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/mbench/Makefile
+
+[Makefile] modified Makefile to compile statically, and to allow also
+ build directories of GMP/MPFR
+
+------------------------------------------------------------------------
+r5950 | thevenyp | 2009-02-10 14:21:45 +0000 (Tue, 10 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mbench/mpfr-gfx.c
+
+mbench/mpfr-gfx.c: add option -rPREC_RATIO for geometric progression.
+
+------------------------------------------------------------------------
+r5949 | zimmerma | 2009-02-10 12:10:46 +0000 (Tue, 10 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] updated Itanium parameters (now for Itanium2)
+
+------------------------------------------------------------------------
+r5948 | zimmerma | 2009-02-10 11:26:25 +0000 (Tue, 10 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] added symbol __itanium__ for Itanium[12]
+
+------------------------------------------------------------------------
+r5947 | zimmerma | 2009-02-09 21:50:22 +0000 (Mon, 09 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/mbench/mpfr-gfx.c
+
+[README.dev] fixed typo
+[mpfr-gfx.c] added comments in the code (might be useful)
+
+------------------------------------------------------------------------
+r5946 | zimmerma | 2009-02-09 20:25:42 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] added pointer to mbench to check the thresholds
+
+------------------------------------------------------------------------
+r5945 | zimmerma | 2009-02-09 20:17:46 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mbench/mpfr-gfx.c
+
+[mpfr-gfx.c] now also produces a plot.gnuplot file together with plot.data
+
+------------------------------------------------------------------------
+r5944 | zimmerma | 2009-02-09 16:18:50 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] updated default thresholds with gmp-4.2.4
+
+------------------------------------------------------------------------
+r5943 | zimmerma | 2009-02-09 16:16:33 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/tuneup.c
+
+[tuneup.c] fixed typo
+
+------------------------------------------------------------------------
+r5942 | zimmerma | 2009-02-09 14:34:34 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+[Makefile.am] added stuff to compile speed program
+
+------------------------------------------------------------------------
+r5941 | zimmerma | 2009-02-09 14:22:20 +0000 (Mon, 09 Feb 2009) | 5 lines
+Changed paths:
+ A /trunk/speed.c
+
+[speed.c] preliminary program to check the tuning of mpfr (based on tuneup.c)
+ So far it only measures mpfr_mul up to 1000 bits, with increment
+ ratio of 1.1. Requires --with-gmp-build like tuneup.
+ Feel free to improve!
+
+------------------------------------------------------------------------
+r5940 | zimmerma | 2009-02-09 13:26:07 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] allow __tune_ia64__ in addition to __ia64
+
+------------------------------------------------------------------------
+r5937 | zimmerma | 2009-02-09 08:16:08 +0000 (Mon, 09 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+[mparam_h.in] replaced __pentium4 by __tune_pentium4__, ...
+
+------------------------------------------------------------------------
+r5936 | zimmerma | 2009-02-08 21:58:11 +0000 (Sun, 08 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mparam_h.in
+
+[acinclude.m4] removed detection of HAVE_HOST_CORE2
+[mparam_h.in] replaced HAVE_HOST_CORE2 by __tune_core2__
+
+------------------------------------------------------------------------
+r5930 | thevenyp | 2009-02-06 14:06:54 +0000 (Fri, 06 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+
+tests/mpf_compat.h: complete r5922 adding missing mpz_init/mpz_clear.
+
+------------------------------------------------------------------------
+r5927 | vlefevre | 2009-02-06 11:57:57 +0000 (Fri, 06 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+TODO: updated efficiency items.
+------------------------------------------------------------------------
+r5926 | zimmerma | 2009-02-06 11:18:48 +0000 (Fri, 06 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added 2 efficiency items
+
+------------------------------------------------------------------------
+r5925 | vlefevre | 2009-02-06 00:02:35 +0000 (Fri, 06 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: moved MPFR_DECL_INIT specification into Section
+"Initialization Functions" (now in the standard MPFR API),
+and removed now empty Section "Advanced Functions".
+------------------------------------------------------------------------
+r5924 | vlefevre | 2009-02-05 14:40:38 +0000 (Thu, 05 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/mparam_h.in
+
+mparam_h.in: updated comment to mention -march=native and -mtune=native.
+------------------------------------------------------------------------
+r5923 | vlefevre | 2009-02-05 11:42:26 +0000 (Thu, 05 Feb 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: updated a comment concerning MPFR_DECL_INIT.
+------------------------------------------------------------------------
+r5922 | zimmerma | 2009-02-05 08:01:46 +0000 (Thu, 05 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+ M /trunk/tests/mpf_compat.h
+
+[mpf2mpfr.h] added mpz_set_f (reported by Francois Morain)
+
+------------------------------------------------------------------------
+r5921 | zimmerma | 2009-02-05 07:26:51 +0000 (Thu, 05 Feb 2009) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.texi
+
+[mpfr.texi] moved mpfr_inits, mpfr_inits2, mpfr_clears to supported functions
+[TODO] added new info about MPIR
+
+------------------------------------------------------------------------
+r5920 | zimmerma | 2009-02-04 19:46:50 +0000 (Wed, 04 Feb 2009) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+[TODO] added info to distinguish GMP and MPIR
+
+------------------------------------------------------------------------
+r5893 | vlefevre | 2009-01-26 17:04:26 +0000 (Mon, 26 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated the version on the trunk.
+------------------------------------------------------------------------
+r5888 | zimmerma | 2009-01-25 12:50:42 +0000 (Sun, 25 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+[nightly-test] removed --disable-alloca (GMP option)
+
+------------------------------------------------------------------------
+r5887 | vlefevre | 2009-01-25 00:19:30 +0000 (Sun, 25 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: --disable-alloca is a GMP configure option.
+------------------------------------------------------------------------
+r5886 | thevenyp | 2009-01-21 15:01:25 +0000 (Wed, 21 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: remove tests against libc's printf with "%a" (not in ISO C90), and with "%p" (implementation defined).
+[merge -c 5885 from branches/2.4]
+
+------------------------------------------------------------------------
+r5883 | vlefevre | 2009-01-21 12:43:57 +0000 (Wed, 21 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: avoid a compiler bug under Mac OS X Tiger + Xcode (&x == &x
+is false) that makes tset_d fail; this problem was introduced in r5880.
+------------------------------------------------------------------------
+r5880 | vlefevre | 2009-01-20 22:12:11 +0000 (Tue, 20 Jan 2009) | 6 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tset_ld.c
+
+Fixed bug reported by Chris Saunders: if _GMP_IEEE_FLOATS is defined,
+the build of tset_ld.c fails because DOUBLE_ISNAN expects a lvalue.
+* mpfr-impl.h: documented that for such macros, the argument must
+ be a lvalue, and always make sure that it is a lvalue (so that
+ a failure doesn't depend on the environment).
+* tests/tset_ld.c: fixed the bug.
+------------------------------------------------------------------------
+r5879 | vlefevre | 2009-01-20 15:08:45 +0000 (Tue, 20 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+tests/tversion.c: be more tolerant when checking whether gmp.h version
+and libgmp version are the same (in case patch level is 0).
+------------------------------------------------------------------------
+r5878 | vlefevre | 2009-01-20 12:47:05 +0000 (Tue, 20 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+tests/tset_ld.c: added explanation of NaN-related failures in case
+MPFR_NANISNAN is defined.
+------------------------------------------------------------------------
+r5875 | vlefevre | 2009-01-20 00:43:20 +0000 (Tue, 20 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tstrtofr.c
+
+Added missing void's.
+------------------------------------------------------------------------
+r5874 | vlefevre | 2009-01-20 00:35:41 +0000 (Tue, 20 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: removed a blank line (for consistency with the
+2.4 branch).
+------------------------------------------------------------------------
+r5873 | vlefevre | 2009-01-20 00:33:09 +0000 (Tue, 20 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: deleted trailing spaces.
+------------------------------------------------------------------------
+r5869 | vlefevre | 2009-01-19 23:57:53 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: comment for DOUBLE_ISNAN with MPFR_NANISNAN defined.
+------------------------------------------------------------------------
+r5868 | vlefevre | 2009-01-19 23:42:33 +0000 (Mon, 19 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+tests/tset_d.c: fixed test of mpfr_set_d on -0 with gcc -ffast-math
+(the -d for d = 0.0 was giving 0.0, hence a spurious failure).
+------------------------------------------------------------------------
+r5867 | vlefevre | 2009-01-19 23:34:54 +0000 (Mon, 19 Jan 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tset_ld.c
+
+mpfr-impl.h: the DOUBLE_ISNAN macro wasn't working with gcc -ffast-math
+(at least on x86_64); fixed that by adding another test.
+tests/tset_ld.c: Isnan_ld wasn't working either; also the NaN test was
+incorrect. Now, the failure on NaN is correctly reported.
+------------------------------------------------------------------------
+r5866 | vlefevre | 2009-01-19 22:44:45 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tset_d.c
+
+tests/tcmp_d.c, tests/tcmp_ld.c, tests/tset_d.c: corrected message.
+------------------------------------------------------------------------
+r5865 | vlefevre | 2009-01-19 22:37:27 +0000 (Mon, 19 Jan 2009) | 4 lines
+Changed paths:
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tset_d.c
+
+tests/tcmp_d.c, tests/tcmp_ld.c, tests/tset_d.c: added explanations
+of NaN-related failures in case MPFR_NANISNAN is defined.
+Note: in tset_d.c, moved the NaN test before the signed-zero test
+to catch the failure on the NaN first.
+------------------------------------------------------------------------
+r5864 | vlefevre | 2009-01-19 22:23:26 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: improved warning message.
+------------------------------------------------------------------------
+r5863 | vlefevre | 2009-01-19 22:16:15 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: updated "In case of problem".
+------------------------------------------------------------------------
+r5862 | vlefevre | 2009-01-19 22:12:09 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: added a warning message for the NAN != NAN test.
+------------------------------------------------------------------------
+r5860 | thevenyp | 2009-01-19 19:59:12 +0000 (Mon, 19 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tset_d.c
+
+tcmp_d.c tset_d.c tcmp_ld.c: Remove tests with NaN when MPFR_NANISNAN is defined.
+tests.c: Add a warning in a comment that Isnan always returns 0 on systems where MPFR_NANISNAN is defined.
+
+------------------------------------------------------------------------
+r5855 | thevenyp | 2009-01-19 18:14:55 +0000 (Mon, 19 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: do not support 't' when NPRINTF_T is defined, HAVE_STDINT_H -> _MPFR_H_HAVE_INTMAX_T.
+
+------------------------------------------------------------------------
+r5853 | thevenyp | 2009-01-19 17:05:13 +0000 (Mon, 19 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+tests/tfprintf.c: renumber tests (there was two tests #9).
+
+------------------------------------------------------------------------
+r5852 | vlefevre | 2009-01-19 16:56:17 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+tests/tfprintf.c: %c takes an int argument, not a char (see C standard).
+------------------------------------------------------------------------
+r5851 | vlefevre | 2009-01-19 16:53:56 +0000 (Mon, 19 Jan 2009) | 4 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+
+tests/tprintf.c, tests/tsprintf.c:
+ * %c takes an int argument, not a char (see C standard), even though
+ this may be equivalent due to integer promotion.
+ * Add void in prototypes of functions taking no arguments.
+------------------------------------------------------------------------
+r5844 | vlefevre | 2009-01-19 15:46:41 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated references to the GMP manual.
+------------------------------------------------------------------------
+r5843 | vlefevre | 2009-01-19 15:31:54 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: typo in comment.
+------------------------------------------------------------------------
+r5842 | vlefevre | 2009-01-19 15:30:52 +0000 (Mon, 19 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added .info extension in cross-references, to avoid the bug
+reported here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484740
+------------------------------------------------------------------------
+r5841 | vlefevre | 2009-01-19 14:34:22 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added a reference to a texinfo bug in a comment.
+------------------------------------------------------------------------
+r5840 | vlefevre | 2009-01-19 14:02:49 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added missing @code{}.
+------------------------------------------------------------------------
+r5839 | vlefevre | 2009-01-19 14:01:13 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: don't -> do not, doesn't -> does not, won't -> will not.
+------------------------------------------------------------------------
+r5838 | vlefevre | 2009-01-19 13:58:50 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: improved Section "Format String".
+------------------------------------------------------------------------
+r5837 | thevenyp | 2009-01-19 13:51:45 +0000 (Mon, 19 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: check if native types are really processed by libc printf.
+
+------------------------------------------------------------------------
+r5836 | vlefevre | 2009-01-19 13:31:27 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: no longer mentions HAVE_QUAD_T since it is no longer used.
+------------------------------------------------------------------------
+r5835 | thevenyp | 2009-01-19 12:50:08 +0000 (Mon, 19 Jan 2009) | 5 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr.texi
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+mpfr.texi: Explicit list of type supported by mpfr_printf functions.
+acinclude.m4: Remove detection of type modifier 'q'.
+vasprintf.c: Remove support of type modifier 'q'.
+tests/tfprintf.c tests/tprintf.c: Remove tests with type modifier 'q'.
+
+------------------------------------------------------------------------
+r5834 | thevenyp | 2009-01-19 11:05:10 +0000 (Mon, 19 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/configure.in
+
+INSTALL: Warn that --with-gmp, --with-gmp-include/--with-gmp-lib, and --with-gmp-build options are mutually exclusive.
+configure.in: Check and fail if --with-gmp, --with-gmp-include/--with-gmp-lib, or --with-gmp-build are use simultaneously.
+
+------------------------------------------------------------------------
+r5833 | vlefevre | 2009-01-19 10:08:58 +0000 (Mon, 19 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: include <sys/fpu.h> only if need be.
+------------------------------------------------------------------------
+r5831 | zimmerma | 2009-01-16 15:32:11 +0000 (Fri, 16 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] made difference between mpfr_set_str and mpfr_strtofr clearer
+ (after remark from Luis Rivera)
+
+------------------------------------------------------------------------
+r5830 | zimmerma | 2009-01-16 15:24:45 +0000 (Fri, 16 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] fixed order -> kind (typo found by Luis Rivera, thanks)
+
+------------------------------------------------------------------------
+r5828 | thevenyp | 2009-01-16 13:35:04 +0000 (Fri, 16 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tfprintf.c tprintf.c: Test double with "%f" instead of "%e" so as to avoid failure due to exponent "e+000" on MS Windows.
+
+------------------------------------------------------------------------
+r5827 | thevenyp | 2009-01-16 13:06:27 +0000 (Fri, 16 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+tests/tfprintf.c tests/tsprintf.c tests/tprintf.c acinclude.m4 vasprintf.c: No longer check libc's printf.
+
+------------------------------------------------------------------------
+r5826 | thevenyp | 2009-01-16 09:53:15 +0000 (Fri, 16 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+
+acinclude.m4: Check if %Ld specification is supported (not always the case with MS Windows)
+tests/tfprintf.c tests/tprintf.c tests/tsprintf.c: do not check %Ld specification when not available.
+
+------------------------------------------------------------------------
+r5825 | thevenyp | 2009-01-16 09:26:18 +0000 (Fri, 16 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/fits_intmax.c
+ M /trunk/fits_uintmax.c
+ M /trunk/get_sj.c
+ M /trunk/get_uj.c
+ M /trunk/set_sj.c
+ M /trunk/set_uj.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/vasprintf.c
+
+get_uj.c get_sj.c tests/tset_sj.c tests/tfits.c fits_intmax.c fits_uintmax.c set_uj.c set_sj.c: make #include-s for intmax_t uniform.
+vasprintf.c: make #include-s for intmax_t uniform and use _MPFR_H_HAVE_INTMAX_T instead of HAVE_INTMAX_T.
+
+------------------------------------------------------------------------
+r5823 | thevenyp | 2009-01-15 13:24:35 +0000 (Thu, 15 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tfprintf.c tprintf.c: Remove tests with u_quad_t (on Solaris 10, quad_t exists but u_quad_t doesn't, bug reported by Michael Abshoff).
+
+------------------------------------------------------------------------
+r5822 | thevenyp | 2009-01-15 13:17:14 +0000 (Thu, 15 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tfprintf.c tprintf.c: Fix included headers, type intmax_t may be defined in inttypes.h or in stdint.h (see autoconf manual 5.6.1 Portability of Headers).
+
+------------------------------------------------------------------------
+r5821 | vlefevre | 2009-01-15 10:13:44 +0000 (Thu, 15 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update with "LC_ALL=en_US.UTF8 TZ=UTC svn log -rHEAD:0 -v".
+------------------------------------------------------------------------
+r5817 | vlefevre | 2009-01-15 02:22:45 +0000 (Thu, 15 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: deleted trailing spaces.
+------------------------------------------------------------------------
+r5816 | vlefevre | 2009-01-15 02:21:57 +0000 (Thu, 15 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: be more tolerant when checking whether gmp.h version
+and libgmp version are the same (in case patch level is 0).
+------------------------------------------------------------------------
+r5814 | vlefevre | 2009-01-15 01:56:55 +0000 (Thu, 15 Jan 2009) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/ChangeLog
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/mbench/Makefile
+ M /trunk/mbench/generate.c
+ M /trunk/mbench/mfv5-arprec.cc
+ M /trunk/mbench/mfv5-cln.cc
+ M /trunk/mbench/mfv5-crlibm.cc
+ M /trunk/mbench/mfv5-libc.cc
+ M /trunk/mbench/mfv5-lidia.cc
+ M /trunk/mbench/mfv5-mpf.cc
+ M /trunk/mbench/mfv5-mpfr.cc
+ M /trunk/mbench/mfv5-ntl.cc
+ M /trunk/mbench/mfv5-pari.cc
+ M /trunk/mbench/mfv5-void.cc
+ M /trunk/mbench/mfv5.cc
+ M /trunk/mbench/mfv5.h
+ M /trunk/mbench/mpfr-gfx.c
+ M /trunk/mbench/mpfr-v4.c
+ M /trunk/mbench/mpfr-v6.c
+ M /trunk/mbench/timp.h
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-thread.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/random2.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Copyright notice update: added 2009 with
+ perl -pi -e 's/2008 Free Software/2008, 2009 Free Software/' **/*(^/)
+under zsh.
+------------------------------------------------------------------------
+r5813 | vlefevre | 2009-01-14 00:46:45 +0000 (Wed, 14 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tsqrt.c
+
+Fixed remaining printf format strings.
+------------------------------------------------------------------------
+r5812 | vlefevre | 2009-01-14 00:27:06 +0000 (Wed, 14 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tsub1sp.c
+
+tests/tadd1sp.c, tests/tsub1sp.c: fixed function prototypes.
+------------------------------------------------------------------------
+r5811 | vlefevre | 2009-01-14 00:23:44 +0000 (Wed, 14 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/teq.c
+ M /trunk/tests/tests.c
+
+tests/teq.c, tests/tests.c: fixed printf format strings.
+------------------------------------------------------------------------
+r5810 | vlefevre | 2009-01-14 00:06:00 +0000 (Wed, 14 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+tests/tcmp2.c: fixed printf format strings.
+------------------------------------------------------------------------
+r5809 | vlefevre | 2009-01-13 23:59:17 +0000 (Tue, 13 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+tests/tset_str.c: fixed printf format string.
+------------------------------------------------------------------------
+r5804 | vlefevre | 2009-01-12 17:30:00 +0000 (Mon, 12 Jan 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: consistency changes and corrections concerning the "erange"
+flag (do not use @code{} as this is not an identifier, @emph{} is used
+as this is not an English word -- but @emph{} should probably be used
+too for the other flag names).
+------------------------------------------------------------------------
+r5803 | vlefevre | 2009-01-12 17:18:45 +0000 (Mon, 12 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: typo.
+------------------------------------------------------------------------
+r5801 | thevenyp | 2009-01-12 16:01:14 +0000 (Mon, 12 Jan 2009) | 5 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+acinclude.m4: New macro MPFR_CHECK_PRINTF_SPEC looking for support of the "%jd", "%qd", and "%td" conversion specifications in printf and gmp_printf.
+configure.in: Call MPFR_CHECK_PRINTF_SPEC when we can link against a suitable gmp library and run test programs at compile time, otherwise (for instance, when cross compiling), everything is enable by default.
+vasprintf.c: Disable support for length modifiers not supported by libc's printf ('j' and 'q' for this time).
+tests/tprintf.c, tests/tfprintf.c: Disable tests for length modifiers not supported by gmp_printf ('j', 'q', and 't' for this time).
+
+------------------------------------------------------------------------
+r5800 | thevenyp | 2009-01-12 14:16:22 +0000 (Mon, 12 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Fix typo.
+
+------------------------------------------------------------------------
+r5795 | vlefevre | 2009-01-08 15:36:55 +0000 (Thu, 08 Jan 2009) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: update to January 2009.
+------------------------------------------------------------------------
+r5794 | vlefevre | 2009-01-08 15:34:27 +0000 (Thu, 08 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tsprintf.c
+
+Removed useless #include of gmp.h from tests/tfprintf.c and
+tests/tsprintf.c for consistency.
+------------------------------------------------------------------------
+r5788 | thevenyp | 2009-01-08 11:56:10 +0000 (Thu, 08 Jan 2009) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tfprintf.c
+ M /trunk/vasprintf.c
+
+tests/tfprintf.c: Make tests with 'M' specifier optional.
+mpfr.texi: Add a warning that gmp may not support 'M' specifier.
+vasprintf.c: Add warning comment about 'M' specifier.
+
+------------------------------------------------------------------------
+r5787 | thevenyp | 2009-01-08 11:52:52 +0000 (Thu, 08 Jan 2009) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: Fix wrong definition of rounding specifiers.
+
+------------------------------------------------------------------------
+r5786 | vlefevre | 2008-12-30 13:57:11 +0000 (Tue, 30 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/out_str.c
+
+out_str.c: added assert (check that base is in the required range).
+------------------------------------------------------------------------
+r5785 | vlefevre | 2008-12-26 14:10:24 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: suggest "-Wformat=2".
+------------------------------------------------------------------------
+r5784 | vlefevre | 2008-12-26 14:02:55 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/zeta.c
+
+zeta.c: fixed types for printf when DEBUG is defined.
+------------------------------------------------------------------------
+r5783 | vlefevre | 2008-12-26 13:57:32 +0000 (Fri, 26 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+sub1sp.c: fixed types for printf when WANT_ASSERT >= 2 and
+when DEBUG is defined.
+------------------------------------------------------------------------
+r5782 | vlefevre | 2008-12-26 13:50:14 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/sub1.c
+
+sub1.c: fixed types for printf when DEBUG is defined.
+------------------------------------------------------------------------
+r5781 | vlefevre | 2008-12-26 13:44:28 +0000 (Fri, 26 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/set_d64.c
+
+set_d64.c: set T[] to unsigned int (instead of int) since its values
+are printed with %u.
+------------------------------------------------------------------------
+r5780 | vlefevre | 2008-12-26 13:36:13 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/add1sp.c
+
+add1sp.c: fixed types for printf when DEBUG is defined.
+------------------------------------------------------------------------
+r5779 | vlefevre | 2008-12-26 13:33:05 +0000 (Fri, 26 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: fixed MPFR_UNSIGNED_MINUS_MODULO logic and added missing
+parentheses.
+------------------------------------------------------------------------
+r5778 | vlefevre | 2008-12-26 13:06:14 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/div.c
+
+div.c: fixed types for fprintf when DEBUG and/or DEBUG2 is defined.
+------------------------------------------------------------------------
+r5777 | vlefevre | 2008-12-26 12:56:09 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/div.c
+
+div.c: fixed #ifdef.
+------------------------------------------------------------------------
+r5775 | vlefevre | 2008-12-26 12:39:03 +0000 (Fri, 26 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/round_p.c
+
+round_p.c: fixed types for fprintf when WANT_ASSERT >= 2 (since
+mp_prec_t is unsigned, it's better to use unsigned long).
+------------------------------------------------------------------------
+r5774 | vlefevre | 2008-12-26 12:02:07 +0000 (Fri, 26 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/round_p.c
+
+round_p.c: fixed types for fprintf when WANT_ASSERT >= 2.
+------------------------------------------------------------------------
+r5772 | zimmerma | 2008-12-22 10:40:24 +0000 (Mon, 22 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.tex] improve documentation of %P
+
+------------------------------------------------------------------------
+r5768 | vlefevre | 2008-12-18 15:59:55 +0000 (Thu, 18 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+Deleted trailing spaces.
+------------------------------------------------------------------------
+r5762 | thevenyp | 2008-12-17 16:07:32 +0000 (Wed, 17 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: clean-up code, improve comment, and put optional tests in tail so that they fail last.
+
+------------------------------------------------------------------------
+r5761 | thevenyp | 2008-12-17 15:55:20 +0000 (Wed, 17 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: Add two regression tests.
+
+------------------------------------------------------------------------
+r5760 | thevenyp | 2008-12-16 15:56:42 +0000 (Tue, 16 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr.texi
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+acinclude.m4, vasprintf.c, tests/tfprintf.c, tests/tprintf.c, mpfr.texi: quad_t support
+
+------------------------------------------------------------------------
+r5759 | thevenyp | 2008-12-16 15:51:59 +0000 (Tue, 16 Dec 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tests/tfprintf.c: code clean-up and output improvement.
+tests/tprintf.c: code clean-up.
+Note that unsigned long long variable is not set to 1 instead of -1 which was architecture dependent.
+
+------------------------------------------------------------------------
+r5758 | vlefevre | 2008-12-16 13:56:28 +0000 (Tue, 16 Dec 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c:
+ * stdout_redirect is a boolean (i.e., 0 or 1).
+ * output freopen(..., stdout) error message to stderr.
+------------------------------------------------------------------------
+r5757 | thevenyp | 2008-12-16 13:10:05 +0000 (Tue, 16 Dec 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tfprintf.c: more user-friendly messages.
+tprintf.c: more user-friendly messages. Warning: because stdout might be redirected, error messages are printed to stderr.
+
+------------------------------------------------------------------------
+r5756 | vlefevre | 2008-12-15 23:38:21 +0000 (Mon, 15 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: more explanations on the precision field for mpfr_printf.
+------------------------------------------------------------------------
+r5755 | vlefevre | 2008-12-15 17:37:05 +0000 (Mon, 15 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/tests/tsprintf.c
+
+untabify and remove trailing spaces
+------------------------------------------------------------------------
+r5754 | thevenyp | 2008-12-15 17:07:40 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: more explanations on the precision field.
+
+------------------------------------------------------------------------
+r5753 | thevenyp | 2008-12-15 16:19:26 +0000 (Mon, 15 Dec 2008) | 5 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr.texi
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+mpfr.texi: Clearly mention that the length modifier 'q' is unsupported by mpfr-*printf.
+vasprintf.c: Do not take quad_t as a long long but as an insupported length modifier.
+acinclude.m4: Remove check for quad_t.
+tests/tprintf.c tests/tfprintf.c: Remove tests with 'q' length modifier.
+
+------------------------------------------------------------------------
+r5751 | vlefevre | 2008-12-15 14:52:54 +0000 (Mon, 15 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tests/tstrtofr.c: fixed a test (in case |res| > 1).
+------------------------------------------------------------------------
+r5750 | vlefevre | 2008-12-15 14:35:01 +0000 (Mon, 15 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tests/tstrtofr.c: fixed alignment bug in error message.
+------------------------------------------------------------------------
+r5749 | zimmerma | 2008-12-15 13:44:25 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+[nightly-test] added MPFR_CHECK_LIBC_PRINTF
+
+------------------------------------------------------------------------
+r5748 | thevenyp | 2008-12-15 13:43:52 +0000 (Mon, 15 Dec 2008) | 4 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/acinclude.m4
+ M /trunk/vasprintf.c
+
+acinclude.m4: Check for quad_t.
+vasprintf.c: Accept length modifier 'q' if HAVE_QUAD_T is defined (instead of HAVE_LONG_LONG).
+README.dev: Add notice for new HAVE_QUAD_T macro.
+
+------------------------------------------------------------------------
+r5747 | zimmerma | 2008-12-15 13:43:40 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] added warning about usage of mpfr_init
+
+------------------------------------------------------------------------
+r5746 | vlefevre | 2008-12-15 13:39:35 +0000 (Mon, 15 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: _MPFR_H_HAVE_INTMAX_T -> HAVE_STDINT_H for <stdint.h>.
+------------------------------------------------------------------------
+r5745 | thevenyp | 2008-12-15 13:33:22 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: Tests against libc's sprintf function are no more executed unless the MPFR_CHECK_LIBC_PRINTF is defined.
+
+------------------------------------------------------------------------
+r5744 | thevenyp | 2008-12-15 13:27:49 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: move bugs 20080610 and 20081214 outside the function random_double.
+
+------------------------------------------------------------------------
+r5743 | vlefevre | 2008-12-15 12:49:58 +0000 (Mon, 15 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: completed comment about the sign of a null exponent.
+------------------------------------------------------------------------
+r5742 | vlefevre | 2008-12-15 12:44:09 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: added a note saying the L modifier was added in C89 (source:
+C99 rationale, Section 7.19.6.1).
+------------------------------------------------------------------------
+r5741 | zimmerma | 2008-12-15 12:17:46 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] more Windows-related changes
+
+------------------------------------------------------------------------
+r5740 | zimmerma | 2008-12-15 11:02:17 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] update on Windows (from Brian Gladman)
+
+------------------------------------------------------------------------
+r5739 | zimmerma | 2008-12-15 09:47:46 +0000 (Mon, 15 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+[configure.in] removed useless comment
+
+------------------------------------------------------------------------
+r5738 | vlefevre | 2008-12-14 15:28:17 +0000 (Sun, 14 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: references to ISO (international) instead of ANSI (American).
+------------------------------------------------------------------------
+r5737 | vlefevre | 2008-12-14 15:18:54 +0000 (Sun, 14 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: corrected a comment.
+------------------------------------------------------------------------
+r5736 | zimmerma | 2008-12-14 09:43:40 +0000 (Sun, 14 Dec 2008) | 3 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+[printf.c,vasprintf.c] include config.h if HAVE_CONFIG_H is defined, to
+ solve problem noticed by Brian Gladman
+
+------------------------------------------------------------------------
+r5735 | vlefevre | 2008-12-14 09:37:05 +0000 (Sun, 14 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: untabified.
+------------------------------------------------------------------------
+r5734 | zimmerma | 2008-12-14 09:27:08 +0000 (Sun, 14 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added hint for using the MinGW runtime
+
+------------------------------------------------------------------------
+r5733 | zimmerma | 2008-12-14 08:36:37 +0000 (Sun, 14 Dec 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+[tsprintf.c] added new hard-coded test (needs work to overcome error in
+ system asprintf)
+
+------------------------------------------------------------------------
+r5732 | zimmerma | 2008-12-14 08:24:42 +0000 (Sun, 14 Dec 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+[tsprintf.c] fixed hard-coded test (spec was missing), and print values of
+ xi,yi,spec in case of error
+
+------------------------------------------------------------------------
+r5731 | vlefevre | 2008-12-14 00:05:20 +0000 (Sun, 14 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: corrections on r5730.
+------------------------------------------------------------------------
+r5730 | zimmerma | 2008-12-13 10:19:25 +0000 (Sat, 13 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added notes on Windows Vista 64 problem
+
+------------------------------------------------------------------------
+r5727 | vlefevre | 2008-12-12 15:00:33 +0000 (Fri, 12 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/README
+
+README: added "compile" since it is distributed in the tarball.
+------------------------------------------------------------------------
+r5723 | vlefevre | 2008-12-12 14:07:19 +0000 (Fri, 12 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk
+
+Added "compile" to svn:ignore property (this file is installed by
+"automake --add-missing" due to AM_PROG_CC_C_O, added in r5710).
+------------------------------------------------------------------------
+r5722 | vlefevre | 2008-12-12 14:01:33 +0000 (Fri, 12 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: avoid an abort if field width or precision is > INT_MAX.
+------------------------------------------------------------------------
+r5721 | thevenyp | 2008-12-12 14:00:33 +0000 (Fri, 12 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tset_ld.c
+
+tests.c, tset_ld.c, tgeneric.c: Code clean-up based on icc warnings (as in r5492): Use #ifdef BOOL_MACRO instead of #if BOOL_MACRO.
+
+------------------------------------------------------------------------
+r5720 | thevenyp | 2008-12-12 13:54:37 +0000 (Fri, 12 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: remove line 'GCC=' in icc tests which seems to confuse libtool.
+
+------------------------------------------------------------------------
+r5719 | vlefevre | 2008-12-12 12:54:10 +0000 (Fri, 12 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/set_ld.c
+
+set_ld.c: rewrote exp computation.
+------------------------------------------------------------------------
+r5718 | vlefevre | 2008-12-12 12:12:11 +0000 (Fri, 12 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: avoid a possible gcc 4.1.2 bug with -ftrapv.
+------------------------------------------------------------------------
+r5717 | vlefevre | 2008-12-12 11:57:37 +0000 (Fri, 12 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: revert incorrect change in r5713.
+------------------------------------------------------------------------
+r5716 | zimmerma | 2008-12-12 11:47:52 +0000 (Fri, 12 Dec 2008) | 8 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+[set_ld.c] fixed problem with CC=g++ on 64-bit computer:
+$ g++ -v
+Using built-in specs.
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release x86_64-linux-gnu
+Thread model: posix
+gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
+
+------------------------------------------------------------------------
+r5713 | zimmerma | 2008-12-12 10:05:49 +0000 (Fri, 12 Dec 2008) | 3 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+[vasprintf.c] patch to MPFR_ASSERTN(...) call to avoid failure with gcc -ftrapv
+ with gcc 4.1.2 (probably compiler error)
+
+------------------------------------------------------------------------
+r5712 | thevenyp | 2008-12-12 09:20:14 +0000 (Fri, 12 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tmul.c
+
+Makefile.am, tmul.c: Rename macro __SRCDIR to MPFR_SRCDIR.
+
+------------------------------------------------------------------------
+r5710 | thevenyp | 2008-12-11 15:20:56 +0000 (Thu, 11 Dec 2008) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tmul.c
+
+configure.in: Add AM_PROG_CC_C_O needed by tmul_CPPFLAGS.
+tests/Makefile.am: Add tmul.dat in EXTRA_DIST and pass srcdir to tmul.c through tmul_CPPFLAGS.
+tests/tmul.c: Add path to tmul.dat.
+
+------------------------------------------------------------------------
+r5703 | vlefevre | 2008-12-09 16:46:13 +0000 (Tue, 09 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: TLS on darwin may work, but I don't know anything more.
+See thread <http://gcc.gnu.org/ml/gcc/2008-12/msg00107.html>.
+------------------------------------------------------------------------
+r5702 | vlefevre | 2008-12-08 16:02:29 +0000 (Mon, 08 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/README
+
+README: CVS -> Subversion.
+------------------------------------------------------------------------
+r5701 | vlefevre | 2008-12-03 12:40:01 +0000 (Wed, 03 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: format --enable-decimal-float description on 80 columns.
+------------------------------------------------------------------------
+r5700 | vlefevre | 2008-12-03 12:38:06 +0000 (Wed, 03 Dec 2008) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: for --enable-thread-safe, say that the system must support
+it (like what has been done for --enable-logging, just above).
+------------------------------------------------------------------------
+r5699 | vlefevre | 2008-12-03 12:31:28 +0000 (Wed, 03 Dec 2008) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: added details about ---enable-thread-safe and TLS support.
+------------------------------------------------------------------------
+r5698 | vlefevre | 2008-11-28 12:09:08 +0000 (Fri, 28 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/urandomb.c
+
+urandomb.c: added comments and cleaned up code.
+mpfr.texi: improved description of mpfr_urandomb.
+------------------------------------------------------------------------
+r5697 | vlefevre | 2008-11-26 14:39:22 +0000 (Wed, 26 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: changed URL added in r5696 to avoid a redirection.
+------------------------------------------------------------------------
+r5696 | zimmerma | 2008-11-26 14:22:37 +0000 (Wed, 26 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] added official url on ftp.gnu.org
+
+------------------------------------------------------------------------
+r5695 | vlefevre | 2008-11-26 09:16:40 +0000 (Wed, 26 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tmul.c
+
+tests/tmul.c: removed useless variable.
+------------------------------------------------------------------------
+r5694 | vlefevre | 2008-11-26 09:14:38 +0000 (Wed, 26 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tmul.c
+
+tests/tmul.c: made reading a string from file more robust.
+------------------------------------------------------------------------
+r5693 | zimmerma | 2008-11-26 08:14:13 +0000 (Wed, 26 Nov 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+ A /trunk/tests/tmul.dat
+
+[tmul.c] moved long strings to file tmul.dat, so that gcc -ansi
+ -pedantic-errors works (ISO C90 does not support strings of length
+ > 509)
+
+------------------------------------------------------------------------
+r5692 | vlefevre | 2008-11-26 00:55:32 +0000 (Wed, 26 Nov 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tinternals.c
+
+tests/tinternals.c: updated tests for guaranteed C90 support, e.g. with
+gcc -ansi -pedantic-errors (avoid error "string length 'nnn' is greater
+than the length '509' ISO C90 compilers are required to support" because
+expression for #expr in ASSERT_FAIL macro is too long).
+------------------------------------------------------------------------
+r5691 | vlefevre | 2008-11-26 00:48:12 +0000 (Wed, 26 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: in Section "To make a release", suggest -pedantic-errors.
+------------------------------------------------------------------------
+r5690 | vlefevre | 2008-11-22 15:49:07 +0000 (Sat, 22 Nov 2008) | 5 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/agm.c
+ M /trunk/atan.c
+ M /trunk/cos.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/gamma.c
+ M /trunk/get_str.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/modf.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/mulders.c
+ M /trunk/rec_sqrt.c
+ M /trunk/root.c
+ M /trunk/tanh.c
+ M /trunk/vasprintf.c
+ M /trunk/yn.c
+
+r5689 undone: some casts were incorrect (mp_exp_t may be greater than
+mp_prec_t, so that casting a mp_exp_t into a mp_prec_t can introduce a
+bug). There may be bugs in some cases, but the casts fix the symptom,
+not the bug (unless one casts the unsigned type to a signed type that
+is *strictly* larger, which is not possible here).
+------------------------------------------------------------------------
+r5689 | zimmerma | 2008-11-22 09:55:42 +0000 (Sat, 22 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/agm.c
+ M /trunk/atan.c
+ M /trunk/cos.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/gamma.c
+ M /trunk/get_str.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/modf.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/mulders.c
+ M /trunk/rec_sqrt.c
+ M /trunk/root.c
+ M /trunk/tanh.c
+ M /trunk/vasprintf.c
+ M /trunk/yn.c
+
+fixed some signed/unsigned warnings with g++ (please review)
+
+------------------------------------------------------------------------
+r5688 | zimmerma | 2008-11-21 12:53:47 +0000 (Fri, 21 Nov 2008) | 3 lines
+Changed paths:
+ M /trunk/nightly-test
+
+[nightly-test] removed MPFR_CHECK_ALL (no longer used)
+ added possibility to choose compiler (e.g., g++)
+
+------------------------------------------------------------------------
+r5687 | zimmerma | 2008-11-21 12:44:39 +0000 (Fri, 21 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] better check ./configure CC=g++
+
+------------------------------------------------------------------------
+r5686 | thevenyp | 2008-11-21 10:07:53 +0000 (Fri, 21 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+Fix inclusion order: the limit of integer types like size_t are defined in C++ only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included (from ISO C99 7.18.3).
+
+------------------------------------------------------------------------
+r5685 | vlefevre | 2008-11-21 08:27:07 +0000 (Fri, 21 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/README
+
+README: added m4 directory (since it is distributed in the tarball).
+------------------------------------------------------------------------
+r5684 | vlefevre | 2008-11-20 19:29:58 +0000 (Thu, 20 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+
+Forgot to update Makefile.am too (for r5680).
+------------------------------------------------------------------------
+r5683 | vlefevre | 2008-11-20 19:20:18 +0000 (Thu, 20 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: added AC_CONFIG_MACRO_DIR([m4]) for r5680.
+------------------------------------------------------------------------
+r5682 | zimmerma | 2008-11-20 17:14:35 +0000 (Thu, 20 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+
+[mpfr-gmp.c] added comment on recent bug fix on MacOS
+
+------------------------------------------------------------------------
+r5681 | zimmerma | 2008-11-20 10:53:02 +0000 (Thu, 20 Nov 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/texp.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tpow_all.c
+
+[tests] changes to make compilation work with g++ (only fixed errors,
+ several warnings remain)
+
+------------------------------------------------------------------------
+r5680 | vlefevre | 2008-11-20 10:42:50 +0000 (Thu, 20 Nov 2008) | 1 line
+Changed paths:
+ A /trunk/m4
+ A /trunk/m4/size_max.m4
+
+Added m4/size_max.m4 file (from gettext).
+------------------------------------------------------------------------
+r5679 | vlefevre | 2008-11-20 10:26:32 +0000 (Thu, 20 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: paragraph on tentative definitions.
+------------------------------------------------------------------------
+r5678 | zimmerma | 2008-11-20 09:13:09 +0000 (Thu, 20 Nov 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+
+[mpfr-gmp.c] replace tentative definitions by real definitions, solves
+ configure problems with mpc (see http://lists.gforge.inria.fr/pipermail/mpc-discuss/2008-November/000048.html)
+
+------------------------------------------------------------------------
+r5677 | vlefevre | 2008-11-18 01:01:33 +0000 (Tue, 18 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/hypot.c
+
+hypot.c: updated a comment.
+------------------------------------------------------------------------
+r5676 | vlefevre | 2008-11-18 00:40:13 +0000 (Tue, 18 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/tests/thypot.c
+
+tests/thypot.c: added a test.
+------------------------------------------------------------------------
+r5675 | vlefevre | 2008-11-18 00:21:09 +0000 (Tue, 18 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/hypot.c
+
+hypot.c: simplified an expression; cosmetic changes.
+------------------------------------------------------------------------
+r5674 | thevenyp | 2008-11-17 08:43:59 +0000 (Mon, 17 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+hypot.c: Fix underflow problem when diff_exp<=MPFR_EMAX_MAX-2 using fma (provided that mpfr_fma is immune to it).
+
+------------------------------------------------------------------------
+r5673 | thevenyp | 2008-11-17 08:40:52 +0000 (Mon, 17 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: Fix one typo in dilogarithm section.
+
+------------------------------------------------------------------------
+r5672 | vlefevre | 2008-11-12 14:53:07 +0000 (Wed, 12 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+mpfr.texi, NEWS: update concerning mpfr_eq.
+------------------------------------------------------------------------
+r5671 | vlefevre | 2008-11-12 14:09:45 +0000 (Wed, 12 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: improved mpfr_eq documentation.
+------------------------------------------------------------------------
+r5670 | thevenyp | 2008-11-12 12:33:37 +0000 (Wed, 12 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tests/tstrtofr.c: Add more information when test bug20081028 fails.
+
+------------------------------------------------------------------------
+r5669 | thevenyp | 2008-11-07 10:19:42 +0000 (Fri, 07 Nov 2008) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+strtofr.c: Replace non-zero digits look up by a simpler test, using the fact that parse_string did remove zeros at end of pstr->mant.
+tests/tstrtofr.c: Add other test values around 1 for the bug20081028 non regression test.
+
+------------------------------------------------------------------------
+r5668 | vlefevre | 2008-11-07 01:12:36 +0000 (Fri, 07 Nov 2008) | 1 line
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: improved style ("exact" is a boolean).
+------------------------------------------------------------------------
+r5667 | zimmerma | 2008-11-06 16:53:17 +0000 (Thu, 06 Nov 2008) | 4 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+[strtofr.c] new patch (ternary value was still wrong in some cases), should
+ be ok now
+[tstrtofr.c] added new test
+
+------------------------------------------------------------------------
+r5666 | zimmerma | 2008-11-05 17:10:10 +0000 (Wed, 05 Nov 2008) | 2 lines
+Changed paths:
+ M /trunk/mpn_exp.c
+ M /trunk/strtofr.c
+
+[strtofr.c] review of patch added in revision 5660, and added comments
+
+------------------------------------------------------------------------
+r5665 | vlefevre | 2008-10-29 14:31:20 +0000 (Wed, 29 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+Updated NEWS file.
+------------------------------------------------------------------------
+r5662 | vlefevre | 2008-10-29 13:52:17 +0000 (Wed, 29 Oct 2008) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: in r5660, as pstr_size and pstr->prec both have type size_t,
+changed the type of i from mp_size_t to size_t for consistency.
+------------------------------------------------------------------------
+r5661 | vlefevre | 2008-10-29 13:43:14 +0000 (Wed, 29 Oct 2008) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: reverted the change done in r3008, which led to a trivial
+assertion. I think the goal is to make sure that pstr_size (of type
+size_t) can be represented in a mp_exp_t (as required in the code).
+------------------------------------------------------------------------
+r5660 | thevenyp | 2008-10-29 12:05:11 +0000 (Wed, 29 Oct 2008) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: fix bug '[#6604] incorrect directed rounding in mpfr_strtofr'.
+
+------------------------------------------------------------------------
+r5659 | vlefevre | 2008-10-29 02:31:21 +0000 (Wed, 29 Oct 2008) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: replaced $(...) quoting style by "`...`" since the former
+is not supported everywhere (and indeed is not used by the autotools):
+http://swox.com/list-archives/gmp-bugs/2008-October/001185.html
+------------------------------------------------------------------------
+r5658 | vlefevre | 2008-10-29 01:21:29 +0000 (Wed, 29 Oct 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tests/tstrtofr.c: added bug20081028 (bug found by Christoph Lauter
+in mpfr_set_str; this is the corresponding bug in mpfr_strtofr).
+------------------------------------------------------------------------
+r5657 | vlefevre | 2008-10-29 01:10:36 +0000 (Wed, 29 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tests/tstrtofr.c: corrections related to C usage.
+------------------------------------------------------------------------
+r5656 | vlefevre | 2008-10-29 00:59:00 +0000 (Wed, 29 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+tests/tset_str.c: added bug20081028 (bug found by Christoph Lauter).
+------------------------------------------------------------------------
+r5655 | vlefevre | 2008-10-27 03:55:33 +0000 (Mon, 27 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated @dircategory (request by Karl Berry).
+------------------------------------------------------------------------
+r5654 | vlefevre | 2008-10-27 03:27:10 +0000 (Mon, 27 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-thread.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpfrlint
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/random2.c
+ M /trunk/rec_sqrt.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_all.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+This is now GNU MPFR!
+------------------------------------------------------------------------
+r5653 | vlefevre | 2008-10-27 03:10:36 +0000 (Mon, 27 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/README
+
+README: CVS -> Subversion.
+------------------------------------------------------------------------
+r5652 | thevenyp | 2008-10-23 18:40:33 +0000 (Thu, 23 Oct 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: Fix bug with '#' and 'g' flag combination, see also defect report at http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_233.htm.
+tests/tsprintf.c: Fix wrong test value accordingly, add non-regression tests.
+
+------------------------------------------------------------------------
+r5651 | zimmerma | 2008-10-23 07:29:29 +0000 (Thu, 23 Oct 2008) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+
+[get_d64.c,set_d64.c] added reference to TR 24732
+
+------------------------------------------------------------------------
+r5650 | vlefevre | 2008-10-16 08:17:35 +0000 (Thu, 16 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: added a comment about MPFR_SIGN.
+------------------------------------------------------------------------
+r5649 | zimmerma | 2008-10-05 08:51:41 +0000 (Sun, 05 Oct 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+[mpfr.h] fixed typo, and added warning about MPFR_SIGN.
+ Shouldn't we move it in mpfr-impl.h?
+
+------------------------------------------------------------------------
+r5647 | vlefevre | 2008-10-03 11:45:14 +0000 (Fri, 03 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/configure.in
+
+INSTALL, configure.in: corrected documentation of --with-gmp* options.
+------------------------------------------------------------------------
+r5645 | vlefevre | 2008-10-02 11:40:42 +0000 (Thu, 02 Oct 2008) | 1 line
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: gave more details about --with-gmp-build.
+------------------------------------------------------------------------
+r5644 | zimmerma | 2008-10-02 11:17:49 +0000 (Thu, 02 Oct 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+[INSTALL] added warning about usage of --with-gmp-build
+
+------------------------------------------------------------------------
+r5643 | vlefevre | 2008-09-21 11:56:06 +0000 (Sun, 21 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: updated LIA-2 terminology ("pole" was in the latest public draft,
+"infinitary" in the final standard).
+------------------------------------------------------------------------
+r5642 | thevenyp | 2008-09-19 08:50:01 +0000 (Fri, 19 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tests/tstrtofr.c: Remove underflow test unintentionally committed with revision 5640.
+
+------------------------------------------------------------------------
+r5640 | thevenyp | 2008-09-18 16:33:16 +0000 (Thu, 18 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ D /trunk/random.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+
+Remove obsolete mpfr_random function and replace it by mpfr_urandomb in tests.
+
+------------------------------------------------------------------------
+r5639 | thevenyp | 2008-09-18 16:25:31 +0000 (Thu, 18 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+
+Add void in prototype.
+
+------------------------------------------------------------------------
+r5638 | vlefevre | 2008-09-18 13:40:11 +0000 (Thu, 18 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: added comments about the MPFR_FPU_PREC macro.
+------------------------------------------------------------------------
+r5636 | zimmerma | 2008-09-18 12:48:28 +0000 (Thu, 18 Sep 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+[tget_str.c] replaced 'double' input by 'char*' to avoid problems with single
+ precision (partially solves #3353)
+
+------------------------------------------------------------------------
+r5634 | zimmerma | 2008-09-17 12:28:22 +0000 (Wed, 17 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+[README.dev] added item about coverage of releases
+
+------------------------------------------------------------------------
+r5632 | zimmerma | 2008-09-16 12:48:29 +0000 (Tue, 16 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+ M /trunk/Makefile.am
+ M /trunk/algorithms.tex
+ M /trunk/atan.c
+ M /trunk/extract.c
+ M /trunk/mpfr.texi
+
+final got rid of generic.c (bug 6199)
+
+------------------------------------------------------------------------
+r5631 | zimmerma | 2008-09-16 12:37:11 +0000 (Tue, 16 Sep 2008) | 2 lines
+Changed paths:
+ D /trunk/generic.c
+
+[generic.c] removed unused file
+
+------------------------------------------------------------------------
+r5630 | vlefevre | 2008-09-16 09:53:59 +0000 (Tue, 16 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+NEWS, mpfr.texi: documented the fact that mpfr_random and mpfr_random2
+will be suppressed in the next release.
+------------------------------------------------------------------------
+r5629 | vlefevre | 2008-09-16 08:53:00 +0000 (Tue, 16 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update with "LC_ALL=en_US.UTF8 TZ=UTC svn log -rHEAD:0 -v".
+------------------------------------------------------------------------
+r5623 | thevenyp | 2008-09-10 10:00:31 +0000 (Wed, 10 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+tests/tpow_z.c: Check test for bug20080904 with the minimum possible negative exponent so as not to underflow with (future) 128 bits machine.
+
+------------------------------------------------------------------------
+r5620 | vlefevre | 2008-09-06 10:19:10 +0000 (Sat, 06 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: fixed bug20080904 (from tpow_z.c).
+------------------------------------------------------------------------
+r5619 | vlefevre | 2008-09-06 10:08:37 +0000 (Sat, 06 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: added log messages.
+------------------------------------------------------------------------
+r5618 | thevenyp | 2008-09-05 10:10:41 +0000 (Fri, 05 Sep 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+tests/tpow_z.c: Add a test that underflows.
+
+------------------------------------------------------------------------
+r5616 | vlefevre | 2008-09-05 09:05:25 +0000 (Fri, 05 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: updated a comment (for the next automake version).
+------------------------------------------------------------------------
+r5614 | vlefevre | 2008-09-05 08:56:53 +0000 (Fri, 05 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: added a note about mpfr_init_gmp_rand (removed in r4953).
+------------------------------------------------------------------------
+r5613 | vlefevre | 2008-09-04 02:44:04 +0000 (Thu, 04 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: update (about AM_MAINTAINER_MODE).
+------------------------------------------------------------------------
+r5609 | vlefevre | 2008-09-02 15:09:20 +0000 (Tue, 02 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/README
+
+Updated README file.
+------------------------------------------------------------------------
+r5607 | vlefevre | 2008-09-01 11:51:00 +0000 (Mon, 01 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+ D /trunk/patch-libtool
+
+Removed patch-libtool and updated README.dev as libtool has been fixed.
+------------------------------------------------------------------------
+r5606 | vlefevre | 2008-09-01 11:47:16 +0000 (Mon, 01 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS file update (get default $CC and $CFLAGS from gmp.h).
+------------------------------------------------------------------------
+r5605 | vlefevre | 2008-09-01 11:46:24 +0000 (Mon, 01 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: removed a useless blank line.
+------------------------------------------------------------------------
+r5604 | vlefevre | 2008-09-01 11:40:36 +0000 (Mon, 01 Sep 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: reverse-merged r5440 (about __GMP_CC/__GMP_CFLAGS) as said.
+------------------------------------------------------------------------
+r5602 | zimmerma | 2008-08-27 11:43:31 +0000 (Wed, 27 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+[algorithms.tex] the truncation error for rec_sqrt was correct, but the
+reasoning was not detailed enough
+
+------------------------------------------------------------------------
+r5600 | vlefevre | 2008-08-27 10:58:23 +0000 (Wed, 27 Aug 2008) | 3 lines
+Changed paths:
+ A /trunk/patch-aclocal-icc
+
+Added patch-aclocal-icc; this is a port of the patch posted on
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=485421
+for aclocal.m4 when libtool 1.5.26-4 from Debian has been used.
+------------------------------------------------------------------------
+r5599 | zimmerma | 2008-08-27 10:00:35 +0000 (Wed, 27 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/rec_sqrt.c
+ M /trunk/round_p.c
+
+[rec_sqrt.c] fixed bug "bad_case1" (truncation error was forgotten, when
+output precision was smaller than input precision)
+
+------------------------------------------------------------------------
+r5595 | vlefevre | 2008-08-27 08:40:53 +0000 (Wed, 27 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+------------------------------------------------------------------------
+r5593 | vlefevre | 2008-08-26 13:56:06 +0000 (Tue, 26 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/trec_sqrt.c
+
+tests/trec_sqrt.c: enable the tests only with MPFR 2.4.0+.
+------------------------------------------------------------------------
+r5592 | vlefevre | 2008-08-26 13:32:45 +0000 (Tue, 26 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: noted when some changes were applied in 2.3.* versions.
+------------------------------------------------------------------------
+r5590 | vlefevre | 2008-08-25 13:26:32 +0000 (Mon, 25 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: completed information about integer types.
+------------------------------------------------------------------------
+r5589 | vlefevre | 2008-08-25 10:55:38 +0000 (Mon, 25 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added information about mixing signed and unsigned types.
+------------------------------------------------------------------------
+r5588 | vlefevre | 2008-08-25 10:40:09 +0000 (Mon, 25 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/li2.c
+
+li2.c: avoid even more mixing between signed and unsigned types, by
+casting mpfr_prec_t to mp_exp_t in expressions involving mp_exp_t.
+This time the bug is fixed: tli2 no longer freezes in 64 bits.
+------------------------------------------------------------------------
+r5587 | vlefevre | 2008-08-25 10:26:54 +0000 (Mon, 25 Aug 2008) | 4 lines
+Changed paths:
+ M /trunk/li2.c
+
+li2.c: use an "int" instead of "unsigned int" in li2_series() to avoid
+mixing signed and unsigned types, which can yield implicit conversions
+from signed into unsigned, and maybe problems on some platforms. This
+doesn't fix the current freeze of tli2 on 64-bit machines, though.
+------------------------------------------------------------------------
+r5585 | vlefevre | 2008-08-24 23:07:45 +0000 (Sun, 24 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tests/tgeneric.c: changed the way a warning with gcc 4.2+ is avoided
+(r5335), as suggested by Manuel López-Ibáñez on GCC bug 36299.
+------------------------------------------------------------------------
+r5584 | vlefevre | 2008-08-21 10:27:58 +0000 (Thu, 21 Aug 2008) | 2 lines
+Changed paths:
+ A /trunk/tests/data/sqr
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+
+Added data_check support to mpfr_sqr.
+Added bad_cases support to mpfr_sqr and mpfr_sqrt.
+------------------------------------------------------------------------
+r5582 | vlefevre | 2008-08-21 10:17:19 +0000 (Thu, 21 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tsqr.c
+
+tests/tsqr.c: corrected function definitions.
+------------------------------------------------------------------------
+r5581 | vlefevre | 2008-08-21 10:12:49 +0000 (Thu, 21 Aug 2008) | 1 line
+Changed paths:
+ A /trunk/tests/data/rec_sqrt
+ M /trunk/tests/trec_sqrt.c
+
+Added data_check & bad_cases support to mpfr_rec_sqrt.
+------------------------------------------------------------------------
+r5580 | vlefevre | 2008-08-21 10:09:34 +0000 (Thu, 21 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/trec_sqrt.c
+
+tests/trec_sqrt.c: added bad case that makes mpfr_rec_sqrt fail.
+------------------------------------------------------------------------
+r5579 | vlefevre | 2008-08-21 03:03:23 +0000 (Thu, 21 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: as not all ICC versions define the __ICC macro (only
+the __INTEL_COMPILER macro can be defined), define the __MPFR_ICC
+and __MPFR_GNUC macros in another way.
+------------------------------------------------------------------------
+r5578 | vlefevre | 2008-08-21 02:48:41 +0000 (Thu, 21 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: fixed compilation failure when HAVE_DENORMS isn't
+defined, such as with icc 10.1 on Itanium.
+------------------------------------------------------------------------
+r5577 | vlefevre | 2008-08-21 02:43:45 +0000 (Thu, 21 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: to allow random values to be reproducible,
+do not call randlimb several times in a same expression,
+because the evaluation order is unspecified.
+------------------------------------------------------------------------
+r5576 | vlefevre | 2008-08-21 02:38:07 +0000 (Thu, 21 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added test of mpfr_rec_sqrt (only with MPFR 2.4.0+).
+------------------------------------------------------------------------
+r5575 | vlefevre | 2008-08-21 02:35:37 +0000 (Thu, 21 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: removed useless parentheses.
+------------------------------------------------------------------------
+r5574 | vlefevre | 2008-08-21 02:27:56 +0000 (Thu, 21 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/rec_sqrt.c
+
+rec_sqrt.c: added logging support.
+------------------------------------------------------------------------
+r5572 | vlefevre | 2008-08-21 01:27:38 +0000 (Thu, 21 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: replaced "towards" by "toward" for consistency with
+the MPFR manual and the standards.
+------------------------------------------------------------------------
+r5570 | vlefevre | 2008-08-21 01:22:42 +0000 (Thu, 21 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: corrected English usage, spelling and typography
+in the section on mpfr_hypot.
+------------------------------------------------------------------------
+r5566 | vlefevre | 2008-08-20 22:17:34 +0000 (Wed, 20 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+tests/thypot.c: added a test for tiny x and y (already done by the
+generic tests, but not yet in the 2.3 branch in extended exponent
+range).
+------------------------------------------------------------------------
+r5565 | vlefevre | 2008-08-20 21:43:34 +0000 (Wed, 20 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tests/tgeneric.c: for the special cases tested in precision p1
+for n <= 3, set the extended exponent range.
+------------------------------------------------------------------------
+r5564 | vlefevre | 2008-08-20 21:10:29 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/thypot.c
+
+tests/thypot.c: improved error messages.
+------------------------------------------------------------------------
+r5563 | vlefevre | 2008-08-20 20:48:44 +0000 (Wed, 20 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+tests/thypot.c: perform some tests both in the current exponent range
+and in the extended exponent range, so that the lost-overflow bug of
+MPFR 2.3.1 can be triggered on 64-bit machines too.
+------------------------------------------------------------------------
+r5561 | vlefevre | 2008-08-20 19:43:57 +0000 (Wed, 20 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c:
+ * In cmpres(), if z1 and z2 were both zeros, their sign wasn't tested.
+ * Added test of mpfr_sqr and mpfr_sqrt.
+------------------------------------------------------------------------
+r5559 | vlefevre | 2008-08-20 16:24:24 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added a paragraph on MPFR internal data.
+------------------------------------------------------------------------
+r5557 | vlefevre | 2008-08-20 14:11:18 +0000 (Wed, 20 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: fixed the underflow/overflow detection for n < 0 by using
+a method similar to mpfr_pow_z.
+------------------------------------------------------------------------
+r5556 | vlefevre | 2008-08-20 13:21:00 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: added logging support.
+------------------------------------------------------------------------
+r5555 | vlefevre | 2008-08-20 12:58:21 +0000 (Wed, 20 Aug 2008) | 4 lines
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: fixed bug in mpfr_pow_general by computing correct bounds
+on exp(y*ln|x|). ==> tpow no longer fails in bug20080820.
+Note: this bug could affect only underflow cases and possibly cases
+near overflow.
+------------------------------------------------------------------------
+r5554 | vlefevre | 2008-08-20 12:48:53 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: updated comment for bug20080820().
+------------------------------------------------------------------------
+r5553 | vlefevre | 2008-08-20 12:47:40 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: added testcase for bug mentioned in r5552.
+------------------------------------------------------------------------
+r5552 | vlefevre | 2008-08-20 11:41:13 +0000 (Wed, 20 Aug 2008) | 4 lines
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: solves the underflow problem in round-to-nearest by using
+mpfr_pow_general in precision 2 (like in mpfr_pow_pos_z), but this
+currently fails due to a more general bug from r4940 (the rounding
+modes to compute an upper bound on exp(y*ln|x|) are incorrect).
+------------------------------------------------------------------------
+r5551 | vlefevre | 2008-08-20 06:42:16 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: formatting.
+------------------------------------------------------------------------
+r5550 | vlefevre | 2008-08-20 06:36:59 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: moved a log message.
+------------------------------------------------------------------------
+r5549 | vlefevre | 2008-08-20 06:34:52 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: added log messages.
+------------------------------------------------------------------------
+r5548 | vlefevre | 2008-08-20 05:55:56 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added an underflow test of x^y with y integer < 0.
+------------------------------------------------------------------------
+r5547 | vlefevre | 2008-08-20 04:17:03 +0000 (Wed, 20 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: no longer take care of the possibly lost overflow flag, as
+the other functions do not do this either; this general problem has
+been fixed in mpfr_check_range (r5545).
+------------------------------------------------------------------------
+r5545 | vlefevre | 2008-08-20 04:07:16 +0000 (Wed, 20 Aug 2008) | 7 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/exceptions.c
+ M /trunk/mpfr.texi
+
+Fixed the following problem:
+ The overflow flag can be lost in many functions called with the
+ maximum exponent equal to MPFR_EMAX_MAX (this is the default on
+ 32-bit machines) when the temporary result (in a higher precision)
+ is representable but once rounded, it yields an overflow.
+This needed a slight change of behavior of the mpfr_check_range function
+(defined in exceptions.c). Described this change in mpfr.texi and NEWS.
+------------------------------------------------------------------------
+r5544 | vlefevre | 2008-08-20 02:59:16 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: fixed some of the underflow/overflow problems for z < 0.
+------------------------------------------------------------------------
+r5543 | vlefevre | 2008-08-20 02:56:38 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: fixed mpfr_clear in overflow_inv.
+------------------------------------------------------------------------
+r5542 | vlefevre | 2008-08-20 02:50:02 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: more detailed error messages.
+------------------------------------------------------------------------
+r5541 | vlefevre | 2008-08-20 01:23:30 +0000 (Wed, 20 Aug 2008) | 5 lines
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: improved overflow_inv tests to trigger a bug
+in mpfr_pow_z due to incorrect rounding mode settings in r5315:
+on a 64-bit Linux machine, "./tpow_all 1" ends with:
+Bad overflow flag in overflow_inv for mpfr_pow, extended exponent range,
+s = 1, t = 1, GMP_RNDZ
+------------------------------------------------------------------------
+r5540 | vlefevre | 2008-08-20 00:32:17 +0000 (Wed, 20 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: in overflow_inv, reduced t to [0,5] and added tests.
+------------------------------------------------------------------------
+r5539 | vlefevre | 2008-08-19 23:48:19 +0000 (Tue, 19 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: improved error messages.
+------------------------------------------------------------------------
+r5538 | vlefevre | 2008-08-19 23:39:35 +0000 (Tue, 19 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: changed the precisions in overflow_inv for clearer
+output (the reported failures are the same).
+------------------------------------------------------------------------
+r5537 | vlefevre | 2008-08-19 23:34:23 +0000 (Tue, 19 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: information about extended exponent range wasn't
+always output. For simplicity to provide such an information, made
+ext a global variable.
+------------------------------------------------------------------------
+r5536 | vlefevre | 2008-08-19 23:23:10 +0000 (Tue, 19 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added overflow tests for x^(-1). -> Failure.
+------------------------------------------------------------------------
+r5535 | vlefevre | 2008-08-19 00:35:49 +0000 (Tue, 19 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/pow.c
+
+Fixed basic underflow checking in mpfr_pow.
+------------------------------------------------------------------------
+r5534 | vlefevre | 2008-08-18 23:30:59 +0000 (Mon, 18 Aug 2008) | 4 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/lngamma.c
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: defined macro INITIALIZED to declare that some variable
+ is initialized before being used.
+README.dev: described the use of this macro.
+lngamma.c: replaced the dummy initialization by this macro.
+------------------------------------------------------------------------
+r5533 | vlefevre | 2008-08-16 01:04:05 +0000 (Sat, 16 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: updated comments.
+------------------------------------------------------------------------
+r5532 | vlefevre | 2008-08-16 00:48:58 +0000 (Sat, 16 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added tests -> assertion failed in pow.c line 603.
+------------------------------------------------------------------------
+r5531 | vlefevre | 2008-08-15 23:56:47 +0000 (Fri, 15 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added test of mpfr_ui_div.
+------------------------------------------------------------------------
+r5530 | vlefevre | 2008-08-15 23:28:46 +0000 (Fri, 15 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: improved comments.
+------------------------------------------------------------------------
+r5527 | vlefevre | 2008-08-14 16:34:58 +0000 (Thu, 14 Aug 2008) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: additions related to MPFR caches.
+ * Added Section "Memory Handling" mentioning caches.
+ * Added call to mpfr_free_cache in the first example.
+ * Updated description of function mpfr_free_cache.
+------------------------------------------------------------------------
+r5525 | vlefevre | 2008-08-14 10:17:24 +0000 (Thu, 14 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: improved an underflow test to trigger the bug fixed
+in r5453 on 32-bit machines too.
+------------------------------------------------------------------------
+r5524 | vlefevre | 2008-08-14 09:39:24 +0000 (Thu, 14 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/log.c
+
+log.c: fixed a log message.
+------------------------------------------------------------------------
+r5523 | vlefevre | 2008-08-14 09:38:04 +0000 (Thu, 14 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: fixed other log messages.
+------------------------------------------------------------------------
+r5522 | vlefevre | 2008-08-14 09:20:14 +0000 (Thu, 14 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: fixed a log message (the format didn't correspond to the types)
+and improved it.
+------------------------------------------------------------------------
+r5519 | vlefevre | 2008-08-12 22:27:44 +0000 (Tue, 12 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+tests/tdiv.c: completed underflow test by testing negative results too.
+------------------------------------------------------------------------
+r5517 | vlefevre | 2008-08-12 22:03:37 +0000 (Tue, 12 Aug 2008) | 5 lines
+Changed paths:
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/mul_2si.c
+ M /trunk/tests/tmul_2exp.c
+
+mul_2si.c, div_2si.c, div_2ui.c: fixed double-rounding problem in
+rounding to nearest when the rounded result in unbounded exponent
+range is 2^(emin - 2).
+tests/tmul_2exp.c: test x = 15/16 too. Now tmul_2exp no longer fails
+(with the correction in div.c from r5515).
+------------------------------------------------------------------------
+r5516 | vlefevre | 2008-08-12 21:56:55 +0000 (Tue, 12 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+tests/tdiv.c correction: the underflow bug was in case when the
+result had to be zero.
+------------------------------------------------------------------------
+r5515 | vlefevre | 2008-08-12 21:52:25 +0000 (Tue, 12 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+div.c: fixed underflow bug that occurs in rounding to nearest when
+the rounded result in unbounded exponent range is 2^(emin - 2) and
+inex > 0: one got a non-zero result instead of +/-0.
+------------------------------------------------------------------------
+r5514 | vlefevre | 2008-08-12 21:47:44 +0000 (Tue, 12 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+tests/tdiv.c: added a test that triggers a bug in mpfr_div in case of
+underflow in rounding to nearest when the result must be non-zero.
+------------------------------------------------------------------------
+r5513 | vlefevre | 2008-08-12 14:43:50 +0000 (Tue, 12 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/div.c
+
+div.c: added logging support.
+------------------------------------------------------------------------
+r5512 | vlefevre | 2008-08-12 13:54:40 +0000 (Tue, 12 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+tests/tmul_2exp.c: test mpfr_div_2ui too.
+------------------------------------------------------------------------
+r5511 | vlefevre | 2008-08-12 13:37:03 +0000 (Tue, 12 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+tests/tmul_2exp.c: test mpfr_div_2si too.
+------------------------------------------------------------------------
+r5510 | vlefevre | 2008-08-12 13:28:20 +0000 (Tue, 12 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+tests/tmul_2exp.c: updated underflow() test to trigger a double-rounding
+bug in case of underflow.
+------------------------------------------------------------------------
+r5509 | vlefevre | 2008-08-12 13:11:19 +0000 (Tue, 12 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: updated comment (the double-rounding bug triggered by
+underflow_up() is in mpfr_mul_2si).
+------------------------------------------------------------------------
+r5508 | vlefevre | 2008-08-12 13:02:08 +0000 (Tue, 12 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: updated underflow_up() test: added case exp(eps) ~= 1/2,
+which fails due to a double-rounding problem in rescaling the result.
+------------------------------------------------------------------------
+r5507 | vlefevre | 2008-08-12 12:08:10 +0000 (Tue, 12 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: improved comments in underflow_up().
+------------------------------------------------------------------------
+r5505 | vlefevre | 2008-08-11 08:09:14 +0000 (Mon, 11 Aug 2008) | 33 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/pow.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow_all.c
+
+Merged vlefevre branch:
+ svn merge -c-5445 .
+ svn merge -r5436:HEAD .../mpfr/branches/vlefevre
+* pow.c:
+ - Moved the general case from mpfr_pow() to a new internal function
+ mpfr_pow_general().
+ - In this function (from old code), avoid unnecessary overflow test
+ if the intermediate result is not an infinity (which was the case
+ of underflow with non-zero result, thus not an overflow).
+ - Fixed a double-rounding problem that occurred in this function in
+ some underflow cases when rescaling the result.
+ - Added log messages.
+* mpfr-impl.h: added mpfr_pow_general prototype.
+* pow_z.c:
+ - The underflow case of mpfr_pow_pos_z() in rounding to nearest,
+ which was incorrect, is now handled by calling mpfr_pow_general(),
+ which can scale the result thus decide whether the rounded result
+ should be 0 or nextabove(0). To avoid the exact cases of x^y with
+ y integer (not supported by mpfr_pow_general()), rounding is done
+ in precision 2 (this is also faster!).
+ - Fixed underflow-related bug (case exact result = 2^(emin-2), in
+ rounding to nearest).
+ - Added log messages.
+* pow_ui.c:
+ - Swapped parameters x and y for consistency (-> y = x^n).
+ - Fixed the internal overflows and underflows (which could yield
+ spurious overflows/underflows and incorrect results) by using
+ mpfr_pow_z.
+* tests/tpow_all.c:
+ - Test flags in test_others and cmpres; cmpres argument z1 can now
+ be a null pointer (if unknown pure FP value, thus not tested).
+ - Added a test of 2^(emin - i/4) with 0 <= i <= 12, that triggered
+ the bugs mentioned above (and now fixed).
+------------------------------------------------------------------------
+r5503 | vlefevre | 2008-08-11 07:02:01 +0000 (Mon, 11 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+tests/tmul_2exp.c: added underflow tests.
+------------------------------------------------------------------------
+r5502 | vlefevre | 2008-08-11 07:00:17 +0000 (Mon, 11 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+
+Added logging support to mpfr_{mul,div}_2{si,ui}.
+------------------------------------------------------------------------
+r5498 | vlefevre | 2008-08-08 14:29:03 +0000 (Fri, 08 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: added a space for MPFR_LOG_MSG.
+------------------------------------------------------------------------
+r5496 | vlefevre | 2008-08-08 14:20:45 +0000 (Fri, 08 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: corrected MPFR_LOG_MSG example.
+------------------------------------------------------------------------
+r5494 | vlefevre | 2008-08-08 07:27:23 +0000 (Fri, 08 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: added a comment concerning ICC.
+------------------------------------------------------------------------
+r5493 | vlefevre | 2008-08-07 21:56:50 +0000 (Thu, 07 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/get_d64.c
+ M /trunk/li2.c
+ M /trunk/set_d64.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/yn.c
+
+Final code clean-up based on icc warnings.
+------------------------------------------------------------------------
+r5492 | vlefevre | 2008-08-07 21:17:14 +0000 (Thu, 07 Aug 2008) | 7 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/clears.c
+ M /trunk/cos.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_uintmax.c
+ M /trunk/frac.c
+ M /trunk/get_ld.c
+ M /trunk/get_sj.c
+ M /trunk/get_uj.c
+ M /trunk/hypot.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/set_sj.c
+ M /trunk/set_uj.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/volatile.c
+
+Further code clean-up (and consistency) based on icc warnings:
+ * Removed useless code.
+ * Avoid hiding variable declarations.
+ * Use #ifdef BOOL_MACRO instead of #if BOOL_MACRO.
+ * In MPFR_RNDRAW_GEN macro definition, variables declared locally now
+ start with an underscore to avoid possible conflits with parameters
+ (and modified macro calls that use these variables).
+------------------------------------------------------------------------
+r5491 | vlefevre | 2008-08-07 17:13:16 +0000 (Thu, 07 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/round_prec.c
+
+round_prec.c: avoid hiding variable declaration (detected by icc).
+------------------------------------------------------------------------
+r5490 | vlefevre | 2008-08-07 16:30:13 +0000 (Thu, 07 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: fixed Ziv's iteration (code from r3305) by using MPFR_ZIV_NEXT
+(problem detected by icc, because variable "loop" was never used).
+------------------------------------------------------------------------
+r5489 | vlefevre | 2008-08-07 16:15:28 +0000 (Thu, 07 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+mul_ui.c: removed variable that was set but never used (detected by icc,
+but not by gcc, probably because of early optimization).
+------------------------------------------------------------------------
+r5488 | vlefevre | 2008-08-07 16:08:45 +0000 (Thu, 07 Aug 2008) | 4 lines
+Changed paths:
+ M /trunk/inp_str.c
+
+inp_str.c: fixed possible implementation-defined behavior (a value
+from the unsigned char range -- from getc -- was stored in a char,
+and if the char type is signed and the value cannot be represented
+in a char, this is implementation-defined).
+------------------------------------------------------------------------
+r5487 | vlefevre | 2008-08-07 15:36:59 +0000 (Thu, 07 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/get_str.c
+
+get_str.c: avoid hiding variable declaration (detected by icc).
+------------------------------------------------------------------------
+r5486 | vlefevre | 2008-08-07 14:44:18 +0000 (Thu, 07 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/div.c
+
+div.c: avoid hiding variable declaration (detected by icc).
+------------------------------------------------------------------------
+r5485 | vlefevre | 2008-08-07 14:33:44 +0000 (Thu, 07 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+mpfr.h, mpfr-impl.h: avoid warnings with icc (at least icc 10.1).
+README.dev: added a paragraph on the test of "boolean" macros.
+------------------------------------------------------------------------
+r5483 | vlefevre | 2008-08-05 08:02:07 +0000 (Tue, 05 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: dist-lzma needs automake 1.10.1.
+------------------------------------------------------------------------
+r5481 | vlefevre | 2008-08-04 08:39:47 +0000 (Mon, 04 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: "make dist" generates lzma-compressed tarball too.
+------------------------------------------------------------------------
+r5480 | zimmerma | 2008-08-02 09:36:31 +0000 (Sat, 02 Aug 2008) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] fixed case where cancel is negative, added comments and improved
+code when initial n is known to be 0
+
+------------------------------------------------------------------------
+r5479 | vlefevre | 2008-08-01 21:18:06 +0000 (Fri, 01 Aug 2008) | 1 line
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: MPFR_EXP -> MPFR_GET_EXP.
+------------------------------------------------------------------------
+r5478 | zimmerma | 2008-08-01 16:45:45 +0000 (Fri, 01 Aug 2008) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+[exp_2.c] fixed bug20080731
+
+------------------------------------------------------------------------
+r5477 | vlefevre | 2008-07-31 16:30:31 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk
+
+Added algorithms.out to svn:ignore property.
+------------------------------------------------------------------------
+r5476 | vlefevre | 2008-07-31 16:27:42 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: added testcase for new bug found in mpfr_exp_2.
+------------------------------------------------------------------------
+r5475 | vlefevre | 2008-07-31 16:02:54 +0000 (Thu, 31 Jul 2008) | 3 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp_2.c
+
+exp.c, exp_2.c: fixed the overflow/underflow detection. The underflow_up
+test in texp.c still fails for mpfr_exp_2 only, but this seems to be due
+to a bug in this function (incorrect error bound?).
+------------------------------------------------------------------------
+r5474 | vlefevre | 2008-07-31 15:03:49 +0000 (Thu, 31 Jul 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: added underflow tests to underflow_up; currently fail due
+to incorrect underflow detection in mpfr_exp (and if this detection is
+disabled, mpfr_exp_3 behaves correctly, but not mpfr_exp_2).
+------------------------------------------------------------------------
+r5473 | thevenyp | 2008-07-31 14:08:09 +0000 (Thu, 31 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+Fix typos, improve wording.
+
+------------------------------------------------------------------------
+r5472 | vlefevre | 2008-07-31 13:01:16 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/exp_2.c
+
+Added logging support to mpfr_exp_2 (exp_2.c).
+------------------------------------------------------------------------
+r5471 | vlefevre | 2008-07-31 11:36:01 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: updated comment concerning the bug fixed in r5469.
+------------------------------------------------------------------------
+r5470 | vlefevre | 2008-07-31 10:24:28 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/exp.c
+
+exp.c: updated comment about the exp3.c routine.
+------------------------------------------------------------------------
+r5469 | vlefevre | 2008-07-31 10:22:48 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/exp3.c
+
+exp3.c: fixed internal underflow.
+------------------------------------------------------------------------
+r5468 | vlefevre | 2008-07-31 09:59:53 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/fma.c
+ M /trunk/fms.c
+
+fma.c, fms.c: added a comment about apparently incorrect scaling.
+------------------------------------------------------------------------
+r5466 | vlefevre | 2008-07-31 09:46:43 +0000 (Thu, 31 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+
+Added logging support to mpfr_sqr and mpfr_sqrt.
+------------------------------------------------------------------------
+r5465 | thevenyp | 2008-07-31 08:31:11 +0000 (Thu, 31 Jul 2008) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/hypot.c
+
+hypot.c: Fix comment.
+BUGS: Add known bug for mpfr_hypot.
+
+------------------------------------------------------------------------
+r5464 | thevenyp | 2008-07-30 15:13:42 +0000 (Wed, 30 Jul 2008) | 5 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/hypot.c
+ M /trunk/tests/thypot.c
+
+algorithms.tex: Prove the correctness of the algorithm used for mpfr_hypot
+when the difference of inputs' exponents is less then exp_max - 2.
+hypot.c: Change algorithm according to its description in algorithms.tex
+tests/thypot.c: Fix tests (some were present but didn't trigger any error).
+
+------------------------------------------------------------------------
+r5463 | vlefevre | 2008-07-30 14:01:45 +0000 (Wed, 30 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: completed a comment.
+------------------------------------------------------------------------
+r5462 | vlefevre | 2008-07-30 11:26:52 +0000 (Wed, 30 Jul 2008) | 6 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: updated underflow_up test of log(2^(emin - 1)) + eps:
+ * In the old test (- log(2) < eps < 0 in GMP_RNDN), do not test
+ the flags, as this may be incorrect on some platforms (though
+ unlikely). Better tests will be provided later.
+ * Added test for case eps > 0, which triggers a bug in mpfr_exp_3
+ (underflow flag sometimes set while it shouldn't be set).
+------------------------------------------------------------------------
+r5461 | vlefevre | 2008-07-30 08:33:51 +0000 (Wed, 30 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+exp.c: completed a comment, describing how rigorous underflow/overflow
+detection can be done.
+------------------------------------------------------------------------
+r5460 | vlefevre | 2008-07-30 08:18:01 +0000 (Wed, 30 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+exp.c: removed an incorrect comment (corresponds to exp_2.c and already
+in exp_2.c).
+------------------------------------------------------------------------
+r5459 | vlefevre | 2008-07-29 14:34:10 +0000 (Tue, 29 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/exp.c
+
+exp.c: underflow/overflow detection is still a bit incorrect.
+------------------------------------------------------------------------
+r5458 | vlefevre | 2008-07-29 14:17:18 +0000 (Tue, 29 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+TODO: added "test underflow/overflow detection...".
+------------------------------------------------------------------------
+r5457 | vlefevre | 2008-07-29 14:13:11 +0000 (Tue, 29 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/exp.c
+
+exp.c: fixed underflow/overflow detection.
+------------------------------------------------------------------------
+r5456 | vlefevre | 2008-07-29 13:24:19 +0000 (Tue, 29 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: GNU style.
+------------------------------------------------------------------------
+r5455 | vlefevre | 2008-07-29 12:23:04 +0000 (Tue, 29 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: make sure that mpfr_get_exp_t and mpfr_set_exp_t are
+correctly defined.
+------------------------------------------------------------------------
+r5454 | vlefevre | 2008-07-26 10:46:26 +0000 (Sat, 26 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: updated comment of underflow_up.
+------------------------------------------------------------------------
+r5453 | vlefevre | 2008-07-26 10:44:22 +0000 (Sat, 26 Jul 2008) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: solved the assertion failure by detecting a zero due to a
+cancellation and increasing the precision via Ziv's loop in such a
+case.
+------------------------------------------------------------------------
+r5452 | vlefevre | 2008-07-26 10:29:57 +0000 (Sat, 26 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: added another assertion, that is checked independently of
+the value of MPFR_EXP_2_THRESHOLD (better for debugging).
+------------------------------------------------------------------------
+r5451 | vlefevre | 2008-07-26 10:21:09 +0000 (Sat, 26 Jul 2008) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+exp_2.c: added an assertion (more explicit than a similar assertion
+that would fail later) in mpfr_exp2_aux, caught by the underflow_up
+test in texp.c for prec = 16 on a 64-bit Linux machine.
+------------------------------------------------------------------------
+r5450 | vlefevre | 2008-07-25 21:02:13 +0000 (Fri, 25 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+tests/texp.c: added a test that shows incorrect underflow detection
+in mpfr_exp, with possible assertion failure.
+------------------------------------------------------------------------
+r5445 | vlefevre | 2008-07-25 11:52:07 +0000 (Fri, 25 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added test of mpfr_exp2 and mpfr_exp10.
+------------------------------------------------------------------------
+r5443 | vlefevre | 2008-07-25 10:31:19 +0000 (Fri, 25 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+TODO: update.
+------------------------------------------------------------------------
+r5442 | vlefevre | 2008-07-25 10:28:41 +0000 (Fri, 25 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/TODO
+
+TODO: added "option to use a 32-bit exponent type on LP64 machines".
+------------------------------------------------------------------------
+r5441 | vlefevre | 2008-07-23 13:52:09 +0000 (Wed, 23 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: updated AC_PREREQ line due to the use of AC_PROG_SED.
+------------------------------------------------------------------------
+r5440 | zimmerma | 2008-07-23 13:29:50 +0000 (Wed, 23 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added reminder
+
+------------------------------------------------------------------------
+r5439 | zimmerma | 2008-07-23 13:26:26 +0000 (Wed, 23 Jul 2008) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+patch from Patrick to get __GMP_CC and __GMP_CFLAGS from gmp.h
+(future undocumented feature for GMP 4.2.3) -> we need to check
+those are the names chosen by GMP 4.2.3 when it will be out
+
+------------------------------------------------------------------------
+r5434 | vlefevre | 2008-07-21 23:03:36 +0000 (Mon, 21 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: fixed incorrect rounding in the general case when the result
+is negative and rnd = GMP_RNDD or GMP_RNDU (bug20080721 in tpow.c).
+------------------------------------------------------------------------
+r5433 | vlefevre | 2008-07-21 22:44:32 +0000 (Mon, 21 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: completed test bug20080721.
+------------------------------------------------------------------------
+r5432 | vlefevre | 2008-07-21 22:01:11 +0000 (Mon, 21 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: fixed the non-trivial cases with large integer y.
+------------------------------------------------------------------------
+r5431 | vlefevre | 2008-07-21 17:17:51 +0000 (Mon, 21 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: added comment for bug20080721.
+------------------------------------------------------------------------
+r5430 | vlefevre | 2008-07-21 16:54:18 +0000 (Mon, 21 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: found another bug in mpfr_pow with large integers.
+------------------------------------------------------------------------
+r5429 | vlefevre | 2008-07-21 13:06:51 +0000 (Mon, 21 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: added a test that detects a bug in an underflow case.
+------------------------------------------------------------------------
+r5428 | vlefevre | 2008-07-21 09:48:22 +0000 (Mon, 21 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_all.c
+
+tests/tpow_all.c: made the comparisons between the power functions
+generic to be able to add other tests.
+------------------------------------------------------------------------
+r5427 | vlefevre | 2008-07-20 23:34:50 +0000 (Sun, 20 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: use MPFR_IS_POS(x) instead of MPFR_SIGN(x) > 0.
+------------------------------------------------------------------------
+r5425 | vlefevre | 2008-07-20 00:36:23 +0000 (Sun, 20 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: corrected a comment.
+------------------------------------------------------------------------
+r5424 | vlefevre | 2008-07-20 00:22:50 +0000 (Sun, 20 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+tests/tpow_z.c: fixed NaN^0 test.
+------------------------------------------------------------------------
+r5423 | vlefevre | 2008-07-20 00:17:02 +0000 (Sun, 20 Jul 2008) | 4 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/tests
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tpow_all.c
+
+Fixed a bug in pow_ui.c and pow_z.c: NaN^0 returned NaN instead of 1
+(see documentation). Affected functions: mpfr_pow_ui, mpfr_pow_si and
+mpfr_pow_z (but not mpfr_pow). Added new test file tests/tpow_all.c
+to test all the MPFR power functions on simple and special values.
+------------------------------------------------------------------------
+r5418 | vlefevre | 2008-07-19 16:09:13 +0000 (Sat, 19 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: forgot the case x^(±0).
+------------------------------------------------------------------------
+r5417 | vlefevre | 2008-07-19 15:36:57 +0000 (Sat, 19 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: updated comments.
+------------------------------------------------------------------------
+r5416 | vlefevre | 2008-07-19 15:21:30 +0000 (Sat, 19 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+tests/tpow_z.c: test bug20080223() didn't check that the result wasn't
+a NaN. Fixed.
+------------------------------------------------------------------------
+r5413 | vlefevre | 2008-07-19 13:52:27 +0000 (Sat, 19 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tests/tsprintf.c: removed trailing whitespace.
+------------------------------------------------------------------------
+r5412 | vlefevre | 2008-07-11 01:52:47 +0000 (Fri, 11 Jul 2008) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: potential problem with integer division and pre-C99 compilers,
+noted by Philippe.
+------------------------------------------------------------------------
+r5411 | thevenyp | 2008-07-08 12:44:59 +0000 (Tue, 08 Jul 2008) | 1 line
+Changed paths:
+ M /trunk/generic.c
+ M /trunk/vasprintf.c
+
+Fix typos
+------------------------------------------------------------------------
+r5410 | thevenyp | 2008-06-30 12:31:54 +0000 (Mon, 30 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+Fix typo (gmp macro TMP_ALLOC instead of MPFR_TMP_ALLOC).
+
+------------------------------------------------------------------------
+r5409 | vlefevre | 2008-06-27 09:26:43 +0000 (Fri, 27 Jun 2008) | 1 line
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: fixed comment from r5408.
+------------------------------------------------------------------------
+r5408 | thevenyp | 2008-06-27 08:36:34 +0000 (Fri, 27 Jun 2008) | 6 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+acinclude.m4: add a check defining va_copy macro when needed.
+vasprintf.c: use TMP_ALLOC instead of variable-length array (C99).
+tests/tfprintf.c tests/tsprintf.c: #define length of array instead of const int so as to avoid variable-length array (C99).
+tests/tprintf.c: #define length of array instead of const int so as to avoid variable-length array (C99).
+ remove use of function dup (dependency with <unistd.h>).
+
+------------------------------------------------------------------------
+r5407 | vlefevre | 2008-06-25 09:08:26 +0000 (Wed, 25 Jun 2008) | 1 line
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release" (mention various compilers).
+------------------------------------------------------------------------
+r5406 | vlefevre | 2008-06-23 02:27:02 +0000 (Mon, 23 Jun 2008) | 1 line
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: added comments about icc.
+------------------------------------------------------------------------
+r5405 | vlefevre | 2008-06-22 12:16:43 +0000 (Sun, 22 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: added "replace the *_THRESHOLD macros by global (TLS) variables
+that can be changed at run time [...]".
+------------------------------------------------------------------------
+r5400 | vlefevre | 2008-06-16 22:06:11 +0000 (Mon, 16 Jun 2008) | 4 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: updated GMP's URL (the old one no longer worked), using
+http://www.gnu.org/software/gmp/ as suggested by Karl Berry (see
+GNU policies).
+
+------------------------------------------------------------------------
+r5398 | vlefevre | 2008-06-13 13:54:37 +0000 (Fri, 13 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: changed the license for the inclusion of the manual in Debian
+(see <http://www.debian.org/vote/2006/vote_001>).
+
+------------------------------------------------------------------------
+r5396 | vlefevre | 2008-06-11 13:09:33 +0000 (Wed, 11 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+AUTHORS: converted from ISO-8859-1 to UTF-8 (this is the standard
+nowadays and this is the encoding declared on InriaGforge).
+
+------------------------------------------------------------------------
+r5395 | thevenyp | 2008-06-11 10:06:56 +0000 (Wed, 11 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix typo in mpfr_printf documentation.
+
+------------------------------------------------------------------------
+r5394 | vlefevre | 2008-06-11 09:25:01 +0000 (Wed, 11 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: removed a misleading and now useless comment.
+
+------------------------------------------------------------------------
+r5393 | vlefevre | 2008-06-11 09:21:26 +0000 (Wed, 11 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: improved a comment.
+
+------------------------------------------------------------------------
+r5392 | vlefevre | 2008-06-11 09:20:53 +0000 (Wed, 11 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+tsprintf.c: typo in a comment.
+
+------------------------------------------------------------------------
+r5391 | thevenyp | 2008-06-11 08:57:47 +0000 (Wed, 11 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+Fix comparison between mpfr string and libc string.
+
+------------------------------------------------------------------------
+r5390 | zimmerma | 2008-06-10 21:12:32 +0000 (Tue, 10 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+added test for bug(?) found by Vincent with icc
+
+------------------------------------------------------------------------
+r5389 | thevenyp | 2008-06-10 14:18:37 +0000 (Tue, 10 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+Change #include <stdio.h> to #include <cstdio> when compiled with a C++ compiler.
+Assume that mpfr_rnd_t and wchar_t arguments in a variadic functions are converted to 'int' by C++ compilers.
+
+------------------------------------------------------------------------
+r5387 | vlefevre | 2008-06-10 14:13:59 +0000 (Tue, 10 Jun 2008) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: generate an error (with a clear error message) with g++ and
+--enable-logging since compilation fails (--enable-logging is mainly for
+testing and is already incompatible with threading support anyway).
+
+------------------------------------------------------------------------
+r5386 | zimmerma | 2008-06-10 08:47:11 +0000 (Tue, 10 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+ M /trunk/exp_2.c
+
+the O(l^{1/2}) method to evaluate power series is due to
+Paterson and Stockmeyer and not Brent/Kung
+
+------------------------------------------------------------------------
+r5385 | vlefevre | 2008-06-09 16:21:34 +0000 (Mon, 09 Jun 2008) | 9 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/acinclude.m4
+ M /trunk/get_str.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/vasprintf.c
+
+Clean-up and various changes to be able to build MPFR with g++.
+But the following 3 tests currently fail with g++ 4.3.1:
+ FAIL: tprintf
+ FAIL: tsprintf
+ FAIL: tfprintf
+This is an "Illegal instruction" error, so probably a bug in g++.
+[Edit: acinclude.m4 now uses gl_SIZE_MAX, typically from size_max.m4,
+but which is not installed on all machines; this will be added to the
+MPFR repository in changesets 5680 and 5683.]
+------------------------------------------------------------------------
+r5384 | vlefevre | 2008-06-09 14:09:34 +0000 (Mon, 09 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: do not use pointer arithmetic on void *.
+
+------------------------------------------------------------------------
+r5383 | vlefevre | 2008-06-09 13:55:05 +0000 (Mon, 09 Jun 2008) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: added -Wpointer-arith to gcc options (this warning
+is useful as pointer arithmetic on void * is a gcc extension and
+doesn't work with g++).
+
+------------------------------------------------------------------------
+r5382 | vlefevre | 2008-06-09 12:26:26 +0000 (Mon, 09 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: mentioned a libtool bug with recent versions of icc.
+
+------------------------------------------------------------------------
+r5381 | vlefevre | 2008-06-09 08:47:58 +0000 (Mon, 09 Jun 2008) | 4 lines
+Changed paths:
+ M /trunk/sum.c
+
+sum.c:
+ * Completed a comment about T ** and const T ** mismatch.
+ * Removed a useless and misleading const that makes icc complain.
+
+------------------------------------------------------------------------
+r5380 | zimmerma | 2008-06-08 12:14:11 +0000 (Sun, 08 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/log.c
+
+fixed typos
+
+------------------------------------------------------------------------
+r5379 | zimmerma | 2008-06-07 21:45:24 +0000 (Sat, 07 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+use DeclareMathOperator for erf and erfc
+
+------------------------------------------------------------------------
+r5378 | zimmerma | 2008-06-07 11:34:59 +0000 (Sat, 07 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/atan.c
+
+fixed typo, added argument reduction for atan (we should try it since I believe
+atan is slow wrt exp, log, sin, cos for large precisions)
+
+------------------------------------------------------------------------
+r5377 | zimmerma | 2008-06-07 11:21:14 +0000 (Sat, 07 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/log1p.c
+
+simplified error analysis of log1p (did not match the code), and improved the
+code (in particular when 1+x is exact, directly call mpfr_log and avoid Ziv).
+
+------------------------------------------------------------------------
+r5376 | vlefevre | 2008-06-06 12:01:17 +0000 (Fri, 06 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/rec_sqrt.c
+
+rec_sqrt.c: removed execution bit.
+
+------------------------------------------------------------------------
+r5375 | vlefevre | 2008-06-06 11:47:19 +0000 (Fri, 06 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: update about build problems and the FAQ.
+
+------------------------------------------------------------------------
+r5374 | vlefevre | 2008-06-06 02:10:19 +0000 (Fri, 06 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added a comment about why the cross reference to GNU Libtool
+doesn't work from MPFR's directory.
+
+------------------------------------------------------------------------
+r5373 | vlefevre | 2008-06-06 01:33:49 +0000 (Fri, 06 Jun 2008) | 5 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added Section 4.1 "Headers and Libraries" partly based on
+GMP's. Note: in the generated mpfr.info file, the cross reference to
+libtool does not work (though GMP's info manual has exactly the same
+one and it works there). I couldn't figure out why.
+
+------------------------------------------------------------------------
+r5372 | vlefevre | 2008-06-06 01:17:08 +0000 (Fri, 06 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: make cross reference in HTML similar to texinfo's default one
+in PDF.
+
+------------------------------------------------------------------------
+r5371 | vlefevre | 2008-06-04 11:57:28 +0000 (Wed, 04 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the month.
+
+------------------------------------------------------------------------
+r5370 | vlefevre | 2008-06-04 11:51:25 +0000 (Wed, 04 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: check the LGPL license version.
+
+------------------------------------------------------------------------
+r5369 | vlefevre | 2008-06-04 11:34:10 +0000 (Wed, 04 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated paragraph on the license in "Introduction to MPFR".
+
+------------------------------------------------------------------------
+r5368 | vlefevre | 2008-06-04 11:25:59 +0000 (Wed, 04 Jun 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated GFDL version from 1.1 to 1.2 to match fdl.texi
+(this should have been done in r4059).
+
+------------------------------------------------------------------------
+r5367 | vlefevre | 2008-06-04 11:24:37 +0000 (Wed, 04 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: check GFDL versions.
+
+------------------------------------------------------------------------
+r5366 | vlefevre | 2008-06-04 11:13:23 +0000 (Wed, 04 Jun 2008) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/update-version
+
+mpfr.texi, update-version: in the MPFR manual, replaced two
+http://www.mpfr.org/ by the URL corresponding to the version,
+which can be updated by update-version.
+
+------------------------------------------------------------------------
+r5365 | vlefevre | 2008-06-04 10:30:48 +0000 (Wed, 04 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: completed paragraph on MPFR vs double-precision numbers.
+
+------------------------------------------------------------------------
+r5364 | vlefevre | 2008-06-04 10:22:02 +0000 (Wed, 04 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: replaced each @code{mpfr} by MPFR (for consistency).
+
+------------------------------------------------------------------------
+r5362 | vlefevre | 2008-06-03 09:06:48 +0000 (Tue, 03 Jun 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: fixed a comment.
+
+------------------------------------------------------------------------
+r5361 | vlefevre | 2008-05-23 13:44:59 +0000 (Fri, 23 May 2008) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: added tprintf to svn:ignore property.
+
+------------------------------------------------------------------------
+r5360 | vlefevre | 2008-05-23 11:00:28 +0000 (Fri, 23 May 2008) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/lngamma.c
+ M /trunk/sub1sp.c
+
+Added documentation about "'var' may be used uninitialized in this
+function" warnings.
+
+------------------------------------------------------------------------
+r5359 | zimmerma | 2008-05-22 11:05:19 +0000 (Thu, 22 May 2008) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/sub1sp.c
+
+Added comments about int i = i trick to avoid warning about uninitialized
+variables. This has the advantage to generate no code, but works for gcc only.
+
+------------------------------------------------------------------------
+r5358 | zimmerma | 2008-05-21 08:23:21 +0000 (Wed, 21 May 2008) | 4 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+initialize bbcp and bbcp1 to -1 (should be invalid)
+added MPFR_ASSERTN to check they are not -1 before reads
+simplified a test: (rnd == RNDN) || (rnd != RNDZ) ==> rnd != RNDZ
+
+------------------------------------------------------------------------
+r5357 | zimmerma | 2008-05-21 07:01:17 +0000 (Wed, 21 May 2008) | 4 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/sub1sp.c
+
+got rid of false (?) compiler warnings for uninitialized values
+-> we might want to revert this change if we find a better solution and/or
+ if the problem is fixed in gcc
+
+------------------------------------------------------------------------
+r5356 | vlefevre | 2008-05-20 09:38:38 +0000 (Tue, 20 May 2008) | 4 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/hypot.c
+ M /trunk/mpfr-impl.h
+ M /trunk/round_near_x.c
+
+Reverted changeset r5355. Better patch to avoid the warnings
+"warning: label 'addoneulp_doit' defined but not used" in
+MPFR_RNDRAW_GEN by adding the dummy code in the macro itself.
+
+------------------------------------------------------------------------
+r5355 | vlefevre | 2008-05-20 09:31:17 +0000 (Tue, 20 May 2008) | 4 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/hypot.c
+ M /trunk/mpfr-impl.h
+ M /trunk/round_near_x.c
+
+Avoid warnings "warning: label 'addoneulp_doit' defined but not used"
+due to the use of MPFR_RNDRAW_GEN. Dummy source code is inserted, but
+this is safe, clean (optimized away) and IMHO not too obtrusive.
+
+------------------------------------------------------------------------
+r5353 | vlefevre | 2008-05-08 01:12:42 +0000 (Thu, 08 May 2008) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: locally add -I$srcdir to CPPFLAGS for the thread-safe test
+(fixes bug #5556).
+
+------------------------------------------------------------------------
+r5351 | vlefevre | 2008-04-10 08:13:11 +0000 (Thu, 10 Apr 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: added a paragraph about -ffast-math / -fast compiler options.
+
+------------------------------------------------------------------------
+r5350 | vlefevre | 2008-04-07 09:13:52 +0000 (Mon, 07 Apr 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+tcmp.c: fixed some tests (if mpfr_cmp2 returns an incorrect result,
+the bug may be some non-reproducible behavior, so don't compute it
+a second time to say what the value was!) and clean-up.
+
+------------------------------------------------------------------------
+r5349 | zimmerma | 2008-04-07 08:54:32 +0000 (Mon, 07 Apr 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+fixed compiler warning
+
+------------------------------------------------------------------------
+r5348 | zimmerma | 2008-04-06 21:14:07 +0000 (Sun, 06 Apr 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/memory.c
+ M /trunk/tests/tcmp2.c
+
+some other changes suggested by Patrick Pelissier for 16-bit portability
+
+------------------------------------------------------------------------
+r5347 | zimmerma | 2008-04-06 20:03:47 +0000 (Sun, 06 Apr 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tui_sub.c
+
+a few patches suggested by Patrick Pelissier to ease porting to 16-bit
+architectures: removed useless #include <time.h>, changed 1024 to 1024L,
+int i to lng i
+
+------------------------------------------------------------------------
+r5346 | zimmerma | 2008-03-17 12:14:38 +0000 (Mon, 17 Mar 2008) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item about frac_* functions
+
+------------------------------------------------------------------------
+r5345 | zimmerma | 2008-03-16 12:45:07 +0000 (Sun, 16 Mar 2008) | 2 lines
+Changed paths:
+ M /trunk/modf.c
+
+fixed typo
+
+------------------------------------------------------------------------
+r5344 | thevenyp | 2008-03-11 12:35:57 +0000 (Tue, 11 Mar 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tprintf.c
+
+tests/tfprintf.c: set output to stdout when invocked with one command-line
+ parameter.
+tests/tprintf.c: add IO errors processing.
+
+------------------------------------------------------------------------
+r5343 | thevenyp | 2008-03-10 16:33:41 +0000 (Mon, 10 Mar 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tprintf.c
+
+tests/tprintf.c: add tests for mpfr_printf and mpfr_vprintf.
+Makefile.am: add tprintf.c to check_PROGRAMS.
+
+------------------------------------------------------------------------
+r5342 | thevenyp | 2008-03-10 16:18:45 +0000 (Mon, 10 Mar 2008) | 6 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/tests/tfprintf.c
+ M /trunk/vasprintf.c
+
+TODO: remove newly added functions
+vasprintf.c: change type of some variables taking care of signed/unsigned
+ comparisons, improve conditional tests, improve buffer
+ allocation, improve comments.
+tests/tfprintf.c: remove silly code.
+
+------------------------------------------------------------------------
+r5341 | thevenyp | 2008-03-10 15:41:09 +0000 (Mon, 10 Mar 2008) | 5 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tfprintf.c
+ M /trunk/vasprintf.c
+
+acinclude.m4: add check for long long compiler support, define HAVE_LONG_LONG.
+vasprintf.c: raise an error when it encounter an unsupported format in format
+ string.
+tests/tfprintf.c: HAVE_SDTINT_H -> _MPFR_H_HAVE_INTMAX_T
+
+------------------------------------------------------------------------
+r5340 | thevenyp | 2008-03-10 14:14:12 +0000 (Mon, 10 Mar 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix rounding bit bug with %RNa.
+tests/tsprintf.c: add tests for %RNa (rounding bit bug, tie case, trailing
+zeros in fractional part.
+
+------------------------------------------------------------------------
+r5339 | thevenyp | 2008-03-10 13:56:46 +0000 (Mon, 10 Mar 2008) | 5 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix bug in macro CONSUME_VA_ARG with a mp_limb_t or mp_limb_t array argument
+vasprintf.c: clean code storing the number of character in a pointer and fix bug with a mp_limb_t or mp_limb_t array argument
+tests/tfprintf.c: add tests for %n with all kinds of type, get rid of machine dependent limits of type (use +1/-1 instead)
+
+
+------------------------------------------------------------------------
+r5338 | thevenyp | 2008-03-10 10:56:03 +0000 (Mon, 10 Mar 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix bug of forgotten decimal point with %#.0Rf
+tests/tsprintf.c: add test with %#Rf and an integer mpfr_t
+
+------------------------------------------------------------------------
+r5337 | thevenyp | 2008-03-10 10:06:48 +0000 (Mon, 10 Mar 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/li2.c
+
+li2.c: improve error estimation in Ziv loop.
+algorithm.tex:improve proof of mpfr_li2 algorithm.
+
+------------------------------------------------------------------------
+r5336 | thevenyp | 2008-03-10 09:53:18 +0000 (Mon, 10 Mar 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/hypot.c
+
+hypot.c: change shift amount for exponents so as to avoid overflow in Ziv loop.
+algorithm.tex: improve proof for mpfr_hypot algorithm (unfinished).
+
+------------------------------------------------------------------------
+r5335 | vlefevre | 2008-03-07 15:08:07 +0000 (Fri, 07 Mar 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: avoid a warning with gcc 4.2+ about a test that is always
+true (the style of the code is now a bit better too).
+
+------------------------------------------------------------------------
+r5334 | thevenyp | 2008-02-29 14:29:15 +0000 (Fri, 29 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+add mpfr_hypot
+
+------------------------------------------------------------------------
+r5333 | thevenyp | 2008-02-29 12:30:07 +0000 (Fri, 29 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+fix wrong arguments (set in r5332)
+
+------------------------------------------------------------------------
+r5332 | thevenyp | 2008-02-29 12:16:26 +0000 (Fri, 29 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+add missing functions
+
+------------------------------------------------------------------------
+r5331 | thevenyp | 2008-02-29 10:23:46 +0000 (Fri, 29 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r5330 | thevenyp | 2008-02-28 16:11:33 +0000 (Thu, 28 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+add mixed format tests (with different types and different sizes)
+
+------------------------------------------------------------------------
+r5329 | thevenyp | 2008-02-28 16:05:50 +0000 (Thu, 28 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix "%%" bug
+tests/tsprintf.c: add a test setting "%%" bug off
+
+------------------------------------------------------------------------
+r5328 | thevenyp | 2008-02-28 15:17:52 +0000 (Thu, 28 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r5327 | thevenyp | 2008-02-28 15:16:09 +0000 (Thu, 28 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+use system number of bits in the significant of a double (instead of 53)
+
+------------------------------------------------------------------------
+r5326 | thevenyp | 2008-02-27 15:19:55 +0000 (Wed, 27 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/cosh.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+
+add handle for the case exp(x) overflows but sinh(x) is representable
+
+------------------------------------------------------------------------
+r5325 | thevenyp | 2008-02-27 13:42:35 +0000 (Wed, 27 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/add_d.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/div_d.c
+ M /trunk/mul_d.c
+ M /trunk/sub_d.c
+
+further code simplification
+
+------------------------------------------------------------------------
+r5324 | thevenyp | 2008-02-27 12:57:24 +0000 (Wed, 27 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mul_d.c
+
+code simplification (same as in r5323)
+
+------------------------------------------------------------------------
+r5323 | thevenyp | 2008-02-27 12:55:12 +0000 (Wed, 27 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/add_d.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/div_d.c
+ M /trunk/sub_d.c
+
+code simplification.
+
+------------------------------------------------------------------------
+r5322 | thevenyp | 2008-02-27 11:13:18 +0000 (Wed, 27 Feb 2008) | 4 lines
+Changed paths:
+ M /trunk/add_d.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/div_d.c
+ M /trunk/sub_d.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tsub_d.c
+
+add_d.c, div_d.c, sub_d.c, d_div.c, d_sub.c: restore flags in case of exception. This fixes the bug revealed by MPFR_SUSPICIOUS_OVERFLOW
+tests/tadd_d.c, tests/tsub_d.c, tests/tdiv_d.c, tests/tmul_d.c, tests/td_sub.c, tests/td_div.c, test/tmul_d.c: add checks for exception flags and ternary value
+
+
+------------------------------------------------------------------------
+r5321 | thevenyp | 2008-02-27 10:00:11 +0000 (Wed, 27 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/mul_d.c
+ M /trunk/tests/tmul_d.c
+
+mul_d.c: restore flags set by mpfr_mul. This fixes the bug revealed by MPFR_SUSPICIOUS_OVERFLOW
+test/tmul_d.c: add checks for exception flags
+
+------------------------------------------------------------------------
+r5320 | vlefevre | 2008-02-27 09:43:38 +0000 (Wed, 27 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated the section about new functions (added a paragraph
+on exception handling).
+
+------------------------------------------------------------------------
+r5319 | thevenyp | 2008-02-26 17:45:53 +0000 (Tue, 26 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+improve proof for euclidean distance algorithm (unfinished)
+
+------------------------------------------------------------------------
+r5318 | vlefevre | 2008-02-26 16:20:04 +0000 (Tue, 26 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: rewrote an ambiguous comment.
+
+------------------------------------------------------------------------
+r5317 | vlefevre | 2008-02-26 16:10:28 +0000 (Tue, 26 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: removed obsolete comments and updated a comment.
+
+------------------------------------------------------------------------
+r5316 | vlefevre | 2008-02-26 15:57:53 +0000 (Tue, 26 Feb 2008) | 4 lines
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: the same variable was used with two different meanings.
+Changed the type and the name of the one inside the Ziv loop
+(unsigned is theoretically more correct due to the bitwise OR).
+
+------------------------------------------------------------------------
+r5315 | zimmerma | 2008-02-24 18:17:18 +0000 (Sun, 24 Feb 2008) | 8 lines
+Changed paths:
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow_z.c
+
+fixed bug reported by Carl Witty (on 32-bit computers):
+sage: RR(1.99999999)^RR(-(2^30))
+5.11264311088393e-323228495
+sage: RR(1.999999999)^RR(-(2^30))
+0.000000000000000
+sage: RR(2.0)^RR(-(2^30))
+2.38256490488795e-323228497
+
+------------------------------------------------------------------------
+r5314 | zimmerma | 2008-02-23 22:52:30 +0000 (Sat, 23 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+added bug reported by Carl Witty
+
+------------------------------------------------------------------------
+r5313 | thevenyp | 2008-02-22 16:04:09 +0000 (Fri, 22 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tli2.c
+
+remove commented code
+
+------------------------------------------------------------------------
+r5312 | thevenyp | 2008-02-22 15:59:35 +0000 (Fri, 22 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tli2.c
+
+add worst cases for RNDZ and RNDU with inexact flag checking
+
+------------------------------------------------------------------------
+r5311 | vlefevre | 2008-02-22 15:49:36 +0000 (Fri, 22 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+hypot.c: added a FIXME comment.
+
+------------------------------------------------------------------------
+r5310 | vlefevre | 2008-02-22 15:45:27 +0000 (Fri, 22 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: one can have a better upper bound on \sqrt{x^2+y^2}-|x|
+(added as a comment in case this can be useful).
+
+------------------------------------------------------------------------
+r5309 | vlefevre | 2008-02-22 15:17:19 +0000 (Fri, 22 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: use hyperref.
+
+------------------------------------------------------------------------
+r5308 | thevenyp | 2008-02-21 16:42:13 +0000 (Thu, 21 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+add more details in mpfr_hypot description
+
+------------------------------------------------------------------------
+r5307 | thevenyp | 2008-02-21 16:40:40 +0000 (Thu, 21 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+cosmetic change: display "EXP" in small capitals
+no more use of {\rm \EXP}, use macro \Exp everywhere
+
+------------------------------------------------------------------------
+r5306 | thevenyp | 2008-02-20 14:04:46 +0000 (Wed, 20 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tli2.c
+
+add worst case test
+
+------------------------------------------------------------------------
+r5305 | thevenyp | 2008-02-20 11:54:26 +0000 (Wed, 20 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+add test with locale da_DK
+
+------------------------------------------------------------------------
+r5304 | thevenyp | 2008-02-20 10:33:33 +0000 (Wed, 20 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfms.c
+
+actually trigger overflow on all architectures
+
+------------------------------------------------------------------------
+r5303 | zimmerma | 2008-02-20 08:36:44 +0000 (Wed, 20 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+added MPFR_SUSPICIOUS_OVERFLOW in nightly tests
+
+------------------------------------------------------------------------
+r5302 | vlefevre | 2008-02-20 03:08:46 +0000 (Wed, 20 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/hypot.c
+
+hypot.c: fixed overflow flag problem in RNDD/RNDZ modes (testcase was
+added in r5301, and another check in r5300).
+
+------------------------------------------------------------------------
+r5301 | vlefevre | 2008-02-20 02:51:30 +0000 (Wed, 20 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+tests/thypot.c: added check_overflow test (currently fails in 32 bits).
+
+------------------------------------------------------------------------
+r5300 | vlefevre | 2008-02-20 02:38:05 +0000 (Wed, 20 Feb 2008) | 7 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tests/tgeneric.c: added a test that detects suspicious overflows and
+fails when the overflow flag is not set. This test is enabled only if
+the MPFR_SUSPICIOUS_OVERFLOW environment variable is set, and shows a
+bug in mpfr_hypot on 32-bit machines (i.e. when the current exponent
+range is the maximum exponent range, so that mpfr_check_range() has
+no effect).
+
+------------------------------------------------------------------------
+r5299 | thevenyp | 2008-02-19 15:54:49 +0000 (Tue, 19 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+restore flag overflow dropped by MPFR_SAVE_EXPO
+
+------------------------------------------------------------------------
+r5298 | thevenyp | 2008-02-18 17:30:02 +0000 (Mon, 18 Feb 2008) | 5 lines
+Changed paths:
+ M /trunk/tests/tests.c
+ M /trunk/tests/tsum.c
+
+use of (*__gmp_allocate_func)/(*__gmp_free_func) instead of
+mpfr_allocate_func/mpfr_free_func;
+the modification in r5281 doesn't work when mpfr is compiled with --gmp_build
+option.
+
+------------------------------------------------------------------------
+r5297 | vlefevre | 2008-02-18 16:37:03 +0000 (Mon, 18 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+hypot.c: it's better to scale by (Ex + Ey) / 2.
+
+------------------------------------------------------------------------
+r5296 | vlefevre | 2008-02-18 16:06:20 +0000 (Mon, 18 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: now, the ChangeLog file should be in UTF-8, like in other
+software (not much difference in practice).
+
+------------------------------------------------------------------------
+r5295 | thevenyp | 2008-02-18 15:58:36 +0000 (Mon, 18 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+improve code coverage
+
+------------------------------------------------------------------------
+r5294 | thevenyp | 2008-02-18 15:39:45 +0000 (Mon, 18 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/tests/tsprintf.c
+
+code simplification
+
+------------------------------------------------------------------------
+r5293 | thevenyp | 2008-02-18 13:48:11 +0000 (Mon, 18 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+take trailing zeros into account when separating thousands
+
+------------------------------------------------------------------------
+r5292 | zimmerma | 2008-02-18 13:24:47 +0000 (Mon, 18 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+fixed problem when x and y are very small
+
+------------------------------------------------------------------------
+r5291 | thevenyp | 2008-02-18 12:37:31 +0000 (Mon, 18 Feb 2008) | 4 lines
+Changed paths:
+ M /trunk/hypot.c
+ M /trunk/tests/thypot.c
+
+hypot.c: set flags when returning
+tests/thypot.c: change custom random tests to tgeneric ones
+
+
+------------------------------------------------------------------------
+r5290 | vlefevre | 2008-02-15 17:38:31 +0000 (Fri, 15 Feb 2008) | 12 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/li2.c
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/pow.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsprintf.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+For the terminating null pointer of the functions mpfr_inits,
+mpfr_inits2, mpfr_clears, always use the type mpfr_ptr (no longer
+void *). Updated the description of these functions in the manual
+(mpfr.texi). The reason is that the C standard does not guarantee
+that (void *) 0 has the same representation as a null pointer to
+a structure (and even the same size). In most C implementations,
+the representations are the same, but one never knows (dynamical
+checking is also always possible)...
+The change has been done with: perl -pi -e \
+ 's/(mpfr_(clear|init)s.*)\(void *\*\) *0\)/$1(mpfr_ptr) 0)/' **/*.c
+under zsh.
+
+------------------------------------------------------------------------
+r5289 | thevenyp | 2008-02-15 15:58:21 +0000 (Fri, 15 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix typo
+
+------------------------------------------------------------------------
+r5288 | thevenyp | 2008-02-15 15:30:06 +0000 (Fri, 15 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix buffer_sandwich (use for thousands separator)
+tests/tsprintf.c: add tests with "da_DK" locale
+
+------------------------------------------------------------------------
+r5287 | thevenyp | 2008-02-15 14:04:11 +0000 (Fri, 15 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tset.c
+
+add generic tests
+
+------------------------------------------------------------------------
+r5286 | thevenyp | 2008-02-15 12:49:53 +0000 (Fri, 15 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r5285 | thevenyp | 2008-02-15 09:10:03 +0000 (Fri, 15 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+fix incorrect function call
+
+------------------------------------------------------------------------
+r5284 | thevenyp | 2008-02-14 17:09:35 +0000 (Thu, 14 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/tests/tsprintf.c
+ M /trunk/vasprintf.c
+
+fix "%P" case, add test for it.
+
+------------------------------------------------------------------------
+r5283 | thevenyp | 2008-02-13 17:21:27 +0000 (Wed, 13 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+
+avoid style 'f' with large numbers
+
+------------------------------------------------------------------------
+r5282 | vlefevre | 2008-02-13 13:43:01 +0000 (Wed, 13 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+
+------------------------------------------------------------------------
+r5281 | thevenyp | 2008-02-12 15:32:22 +0000 (Tue, 12 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+ M /trunk/tests/tsum.c
+
+use of mpfr_allocate_func/mpfr_free_func instead of malloc/free
+
+------------------------------------------------------------------------
+r5280 | thevenyp | 2008-02-12 14:46:22 +0000 (Tue, 12 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+remove unneeded free and mpfr_clear
+
+------------------------------------------------------------------------
+r5279 | thevenyp | 2008-02-12 14:40:34 +0000 (Tue, 12 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+add tests for mpfr_snprintf and mpfr_vsnprintf
+
+------------------------------------------------------------------------
+r5278 | vlefevre | 2008-02-12 14:21:21 +0000 (Tue, 12 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a note about freeing the memory in the tests.
+
+------------------------------------------------------------------------
+r5277 | thevenyp | 2008-02-12 13:50:14 +0000 (Tue, 12 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tout_str.c
+
+move tests of mpfr_get_str function from tout_str.c to tget_str.c
+
+------------------------------------------------------------------------
+r5276 | thevenyp | 2008-02-12 13:46:16 +0000 (Tue, 12 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tsprintf.c
+
+initialize fmt[] size
+
+------------------------------------------------------------------------
+r5275 | thevenyp | 2008-02-12 13:30:39 +0000 (Tue, 12 Feb 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tfprintf.c
+ M /trunk/tests/tsprintf.c
+
+tfprintf.c: fix comment.
+tsprintf.c: fix comment and get rid of libc rand().
+
+
+------------------------------------------------------------------------
+r5274 | thevenyp | 2008-02-12 12:52:35 +0000 (Tue, 12 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tfprintf.c
+ D /trunk/tests/tprintf.c
+ A /trunk/tests/tsprintf.c (from /trunk/tests/tprintf.c:5272)
+
+rename tprintf.c as tsprintf.c, because it does not deal with mpfr_printf.
+add tests for mpfr_fprintf functions
+
+------------------------------------------------------------------------
+r5273 | thevenyp | 2008-02-12 08:43:02 +0000 (Tue, 12 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/printf.c
+
+remove errno setting in snprintf, it is already done in vasprintf
+correct grammatical faults in comment
+
+------------------------------------------------------------------------
+r5272 | vlefevre | 2008-02-08 16:25:37 +0000 (Fri, 08 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: undo r5270.
+
+------------------------------------------------------------------------
+r5271 | vlefevre | 2008-02-08 16:23:31 +0000 (Fri, 08 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: fixed assertion failure introduced in r5265.
+
+------------------------------------------------------------------------
+r5270 | thevenyp | 2008-02-08 16:19:41 +0000 (Fri, 08 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+remove exponent checking
+
+------------------------------------------------------------------------
+r5269 | thevenyp | 2008-02-08 13:53:09 +0000 (Fri, 08 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+ M /trunk/set_uj.c
+
+mpfr-gmp.h: Cancel r5261 changes removing the overload due to added test.
+set_uj.c: Don't call memset when len is zero.
+
+------------------------------------------------------------------------
+r5268 | thevenyp | 2008-02-08 13:20:24 +0000 (Fri, 08 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+improve assertion.
+
+------------------------------------------------------------------------
+r5267 | thevenyp | 2008-02-08 09:59:57 +0000 (Fri, 08 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+add support of thousands separator option (' flag, defined in Single UNIX Specification v2)
+
+------------------------------------------------------------------------
+r5266 | thevenyp | 2008-02-08 09:41:25 +0000 (Fri, 08 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+better string buffer management
+
+------------------------------------------------------------------------
+r5265 | vlefevre | 2008-02-07 14:40:53 +0000 (Thu, 07 Feb 2008) | 9 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tgeneric.c
+
+In tests_default_random, allow emin and emax to be outside of the
+current exponent range, so that underflow/overflow checks can be
+done on 64-bit machines. If the resulting random number is outside
+of the current range, the exponent range is extended, and restored
+by the caller once the test has been done.
+In tests/tacosh.c, changed TEST_RANDOM_EMIN and TEST_RANDOM_EMAX
+to MPFR_EMAX_MAX for test_generic_huge, so that the intermediate
+overflow case in mpfr_acosh is tested on 64-bit machines.
+
+------------------------------------------------------------------------
+r5264 | thevenyp | 2008-02-07 14:17:36 +0000 (Thu, 07 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+fix comment.
+In fact, GNU libc4 accept '%F', libc5, glibc 2.0, and glibc 2.1 don't, and glibc 2.2 accept it with C99 semantics.
+
+------------------------------------------------------------------------
+r5263 | vlefevre | 2008-02-06 14:17:26 +0000 (Wed, 06 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: added a comment about the mpfr_rnd_t enum.
+
+------------------------------------------------------------------------
+r5262 | vlefevre | 2008-02-06 13:48:33 +0000 (Wed, 06 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: removed MPFR_CHECK* macros as they are not used.
+
+------------------------------------------------------------------------
+r5261 | thevenyp | 2008-02-05 17:08:25 +0000 (Tue, 05 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+MPN_ZERO (dst, n) doesn't call memset when n==0, it prevents warning when compiled with gcc -D_FORTIFY_SOURCE
+
+------------------------------------------------------------------------
+r5260 | zimmerma | 2008-02-04 16:39:56 +0000 (Mon, 04 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion from Keith Briggs
+
+------------------------------------------------------------------------
+r5259 | thevenyp | 2008-02-04 16:15:06 +0000 (Mon, 04 Feb 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: add code for %n specifier with any type
+tests/tprintf.c: add test for %n specifier
+
+------------------------------------------------------------------------
+r5258 | thevenyp | 2008-02-04 16:10:17 +0000 (Mon, 04 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+improve mention on format string restriction
+
+------------------------------------------------------------------------
+r5257 | thevenyp | 2008-02-04 15:28:16 +0000 (Mon, 04 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mention restriction on type field in the format string.
+
+------------------------------------------------------------------------
+r5256 | thevenyp | 2008-02-04 14:28:14 +0000 (Mon, 04 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+check possible overflows in exponent part, improve comments.
+
+------------------------------------------------------------------------
+r5255 | thevenyp | 2008-02-04 13:46:52 +0000 (Mon, 04 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+
+ensure null-terminated string for (v)snprintf.
+
+------------------------------------------------------------------------
+r5254 | thevenyp | 2008-02-01 16:07:40 +0000 (Fri, 01 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+improve mpfr_printf documentation
+
+------------------------------------------------------------------------
+r5253 | vlefevre | 2008-02-01 14:08:37 +0000 (Fri, 01 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: fixed perror argument in data_check.
+
+------------------------------------------------------------------------
+r5252 | thevenyp | 2008-02-01 14:02:52 +0000 (Fri, 01 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+improve error handling
+
+------------------------------------------------------------------------
+r5251 | thevenyp | 2008-02-01 12:05:07 +0000 (Fri, 01 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+check fscanf return value, manage error case
+
+------------------------------------------------------------------------
+r5249 | zimmerma | 2008-02-01 11:02:22 +0000 (Fri, 01 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added parentheses to avoid ambiguity (suggested by Keith Briggs)
+
+------------------------------------------------------------------------
+r5248 | thevenyp | 2008-02-01 09:48:38 +0000 (Fri, 01 Feb 2008) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+
+add some "%s" format string to prevent format string attack
+
+------------------------------------------------------------------------
+r5247 | thevenyp | 2008-01-31 08:41:14 +0000 (Thu, 31 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix typo
+
+------------------------------------------------------------------------
+r5246 | thevenyp | 2008-01-30 13:19:36 +0000 (Wed, 30 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+homogeneous use of logical variable
+
+------------------------------------------------------------------------
+r5245 | vlefevre | 2008-01-30 12:48:51 +0000 (Wed, 30 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/rec_sqrt.c
+
+rec_sqrt.c: use MPFR_GET_EXP instead of MPFR_EXP, and avoid the
+bitwise AND on a signed integer.
+
+------------------------------------------------------------------------
+r5244 | vlefevre | 2008-01-30 12:39:02 +0000 (Wed, 30 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/rec_sqrt.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trec_sqrt.c
+
+Reformat.
+
+------------------------------------------------------------------------
+r5242 | vlefevre | 2008-01-30 12:29:13 +0000 (Wed, 30 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/mpfr.texi
+
+Document how to produce PDF and HTML versions of the manual.
+
+------------------------------------------------------------------------
+r5241 | thevenyp | 2008-01-30 10:06:38 +0000 (Wed, 30 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+change to values acceptable by 32-bits machines
+
+------------------------------------------------------------------------
+r5240 | thevenyp | 2008-01-30 09:34:21 +0000 (Wed, 30 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix wrong statement in MPFR_ASSERTD
+
+------------------------------------------------------------------------
+r5239 | zimmerma | 2008-01-30 08:19:41 +0000 (Wed, 30 Jan 2008) | 5 lines
+Changed paths:
+ M /trunk/nightly-test
+
+added compilation options suggested by Debian:
+http://alioth.debian.org/projects/hardening/
+http://lists.debian.org/debian-devel/2007/12/msg00090.html
+(except -Wl,zrelro which does not seem to work)
+
+------------------------------------------------------------------------
+r5238 | thevenyp | 2008-01-29 17:59:18 +0000 (Tue, 29 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+So as to avoid conversion error, get rid of mpfr_set_d/mpf_set_d except in random_double().
+Skip conversion error in random_double().
+
+------------------------------------------------------------------------
+r5237 | thevenyp | 2008-01-29 17:01:24 +0000 (Tue, 29 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix typo in comment
+
+------------------------------------------------------------------------
+r5236 | thevenyp | 2008-01-29 17:00:31 +0000 (Tue, 29 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+get rid of limitation on number of character by specifier
+
+------------------------------------------------------------------------
+r5235 | thevenyp | 2008-01-29 15:42:47 +0000 (Tue, 29 Jan 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix %Rg case
+tests/tprintf.c: add %Re, %Rf, and %Rg tests
+tests/tprintf.c: add random checking against libc
+
+------------------------------------------------------------------------
+r5231 | thevenyp | 2008-01-28 10:46:20 +0000 (Mon, 28 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+remove (undocumented) integer conversion support for mpfr_t
+
+------------------------------------------------------------------------
+r5230 | thevenyp | 2008-01-28 10:34:46 +0000 (Mon, 28 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+set errno to EOVERFLOW when printf-like functions should return value exceeding INT_MAX
+
+------------------------------------------------------------------------
+r5229 | thevenyp | 2008-01-28 10:19:09 +0000 (Mon, 28 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+change internal name of printf-like functions under preprocessor conditionals, add explanation in comment.
+
+------------------------------------------------------------------------
+r5228 | vlefevre | 2008-01-25 15:09:21 +0000 (Fri, 25 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: added a possible class of tests.
+
+------------------------------------------------------------------------
+r5225 | vlefevre | 2008-01-23 17:01:24 +0000 (Wed, 23 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: remove a blank line in an error message.
+
+------------------------------------------------------------------------
+r5224 | vlefevre | 2008-01-23 16:51:02 +0000 (Wed, 23 Jan 2008) | 4 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/tests.c
+ M /trunk/tests/tversion.c
+
+Test that the MPFR library version matches the mpfr.h version in any
+test file (this should avoid some bug reports that don't mention the
+real problem).
+
+------------------------------------------------------------------------
+r5222 | vlefevre | 2008-01-23 16:24:59 +0000 (Wed, 23 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+tversion.c: improved an error message.
+
+------------------------------------------------------------------------
+r5219 | vlefevre | 2008-01-23 13:36:21 +0000 (Wed, 23 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: fixed configure test for TLS support.
+
+------------------------------------------------------------------------
+r5217 | vlefevre | 2008-01-23 12:29:30 +0000 (Wed, 23 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS file update (configure test for TLS support).
+
+------------------------------------------------------------------------
+r5213 | vlefevre | 2008-01-23 12:17:51 +0000 (Wed, 23 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/add_d.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/div_d.c
+ M /trunk/li2.c
+ M /trunk/mbench/generate.c
+ M /trunk/mbench/mpfr-gfx.c
+ M /trunk/mbench/mpfr-v4.c
+ M /trunk/mbench/mpfr-v6.c
+ M /trunk/modf.c
+ M /trunk/mul_d.c
+ M /trunk/printf.c
+ M /trunk/rec_sqrt.c
+ M /trunk/rem1.c
+ M /trunk/sinh_cosh.c
+ M /trunk/sub_d.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trec_sqrt.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/vasprintf.c
+
+Added svn:keywords and svn:eol-style properties on new .c files.
+
+------------------------------------------------------------------------
+r5212 | vlefevre | 2008-01-23 11:46:10 +0000 (Wed, 23 Jan 2008) | 9 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-impl.h
+ A /trunk/mpfr-thread.h
+
+Changes related to thread-local variables / TLS support.
+ * Moved the MPFR_THREAD_ATTR definition from mpfr-impl.h into a new
+ header file mpfr-thread.h, and updated Makefile.am accordingly.
+ * Removed the compiler check __MPFR_GNUC(3,3) || __MPFR_ICC(8,1,0)
+ as this test leaded to both false positives and false negatives
+ concerning TLS support. Assume that __thread should be used for
+ thread-local variables (except for the MS compiler).
+ * Added a configure test to acinclude.m4 (in MPFR_CONFIGS).
+
+------------------------------------------------------------------------
+r5211 | zimmerma | 2008-01-22 12:13:08 +0000 (Tue, 22 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added item about timings for a new release
+
+------------------------------------------------------------------------
+r5210 | zimmerma | 2008-01-22 12:09:19 +0000 (Tue, 22 Jan 2008) | 3 lines
+Changed paths:
+ A /trunk/mbench
+ A /trunk/mbench/Makefile
+ A /trunk/mbench/README
+ A /trunk/mbench/generate.c
+ A /trunk/mbench/mfv5-arprec.cc
+ A /trunk/mbench/mfv5-cln.cc
+ A /trunk/mbench/mfv5-crlibm.cc
+ A /trunk/mbench/mfv5-libc.cc
+ A /trunk/mbench/mfv5-lidia.cc
+ A /trunk/mbench/mfv5-mpf.cc
+ A /trunk/mbench/mfv5-mpfr.cc
+ A /trunk/mbench/mfv5-ntl.cc
+ A /trunk/mbench/mfv5-pari.cc
+ A /trunk/mbench/mfv5-void.cc
+ A /trunk/mbench/mfv5.cc
+ A /trunk/mbench/mfv5.h
+ A /trunk/mbench/mpfr-gfx.c
+ A /trunk/mbench/mpfr-v4.c
+ A /trunk/mbench/mpfr-v6.c
+ A /trunk/mbench/timp.h
+
+mbench program written by Patrick Pelissier to measure clock cycles of MPFR
+(and other libraries) for small precision
+
+------------------------------------------------------------------------
+r5207 | vlefevre | 2008-01-22 09:51:00 +0000 (Tue, 22 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: noted the changes concerning mpfr_strtofr (changesets 5146, 5147,
+5148, 5149, 5167, 5172, 5173).
+
+------------------------------------------------------------------------
+r5205 | vlefevre | 2008-01-22 09:21:37 +0000 (Tue, 22 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+mpfr-gmp.h: small fix of a macro.
+
+------------------------------------------------------------------------
+r5204 | vlefevre | 2008-01-21 12:42:57 +0000 (Mon, 21 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+mpfr-gmp.h: for temporary allocations, use alloca() if size < 16384.
+
+------------------------------------------------------------------------
+r5203 | vlefevre | 2008-01-19 10:43:38 +0000 (Sat, 19 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: inverse square root -> reciprocal square root.
+
+------------------------------------------------------------------------
+r5202 | zimmerma | 2008-01-18 16:20:48 +0000 (Fri, 18 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_rec_sqrt in mpfr.texi (forgot in last commit)
+
+------------------------------------------------------------------------
+r5201 | vlefevre | 2008-01-18 15:47:39 +0000 (Fri, 18 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: added mpfr_rec_sqrt for MPFR 2.4.*.
+
+------------------------------------------------------------------------
+r5200 | zimmerma | 2008-01-18 14:03:27 +0000 (Fri, 18 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed rec_sqrt (done)
+
+------------------------------------------------------------------------
+r5199 | thevenyp | 2008-01-17 17:46:53 +0000 (Thu, 17 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: merge code for "%Ra" and "%Rb"
+
+------------------------------------------------------------------------
+r5198 | thevenyp | 2008-01-16 12:54:47 +0000 (Wed, 16 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+cosmetic change: replace "enum _arg_type" by "enum arg_t"
+
+------------------------------------------------------------------------
+r5197 | thevenyp | 2008-01-16 10:58:11 +0000 (Wed, 16 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix %g case; merge %e, %f, %g code
+tests/tprintf.c: add tests for %Rg
+
+------------------------------------------------------------------------
+r5196 | thevenyp | 2008-01-16 10:50:42 +0000 (Wed, 16 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+add MPFR_SAVE_EXPO macros
+
+------------------------------------------------------------------------
+r5195 | thevenyp | 2008-01-16 10:44:18 +0000 (Wed, 16 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+cosmetic changes: only one leading underscore for an identifier with file scope
+
+------------------------------------------------------------------------
+r5194 | thevenyp | 2008-01-16 10:29:58 +0000 (Wed, 16 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+add needed va_list argument in READ_INT macro
+
+------------------------------------------------------------------------
+r5193 | vlefevre | 2008-01-16 09:30:15 +0000 (Wed, 16 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: added trec_sqrt to svn:ignore property.
+
+------------------------------------------------------------------------
+r5191 | vlefevre | 2008-01-16 09:05:22 +0000 (Wed, 16 Jan 2008) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: when building MPFR with the GMP build directory,
+use TMP_ALLOC(s) instead of TMP_SALLOC(s), as we don't know
+whether allocations are small or big (see gmp-impl.h).
+
+------------------------------------------------------------------------
+r5190 | zimmerma | 2008-01-16 07:57:24 +0000 (Wed, 16 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/rec_sqrt.c
+
+moved from ASSERTD to ASSERTN an assertion which does not depend on MPFR
+
+------------------------------------------------------------------------
+r5189 | zimmerma | 2008-01-15 17:16:35 +0000 (Tue, 15 Jan 2008) | 2 lines
+Changed paths:
+ A /trunk/tests/trec_sqrt.c
+
+this file might be useful to test mpfr_rec_sqrt...
+
+------------------------------------------------------------------------
+r5188 | zimmerma | 2008-01-15 17:10:17 +0000 (Tue, 15 Jan 2008) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/algorithms.tex
+ M /trunk/mpfr.h
+ M /trunk/rec_sqrt.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tests.c
+
+rec_sqrt.c: complete rewrite, to allow to use directly the MPFR internal
+ representation as input (without shift), and to allow different
+ input and output precisions, without loss of efficiency
+other files: added new function mpfr_rec_sqrt
+
+------------------------------------------------------------------------
+r5187 | vlefevre | 2008-01-14 17:23:44 +0000 (Mon, 14 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/rec_sqrt.c
+
+rec_sqrt.c: deleted trailing whitespace.
+
+------------------------------------------------------------------------
+r5186 | vlefevre | 2008-01-14 17:22:35 +0000 (Mon, 14 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+
+mpfr-gmp.{c,h}: no longer use alloca() for the temporary allocations as
+this can make MPFR crash in some high precisions, due to limited stack.
+
+------------------------------------------------------------------------
+r5185 | thevenyp | 2008-01-14 10:41:19 +0000 (Mon, 14 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+add bug found by Paul Zimmermann
+
+------------------------------------------------------------------------
+r5184 | thevenyp | 2008-01-14 10:33:01 +0000 (Mon, 14 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: fix wrong computation of digit number with %Rf when 0 < op < 1
+tests/tprintf.c: simpler 10^-n case
+
+------------------------------------------------------------------------
+r5182 | vlefevre | 2008-01-14 08:34:00 +0000 (Mon, 14 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: typo.
+
+------------------------------------------------------------------------
+r5181 | vlefevre | 2008-01-11 21:54:06 +0000 (Fri, 11 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated month.
+
+------------------------------------------------------------------------
+r5180 | vlefevre | 2008-01-11 21:45:08 +0000 (Fri, 11 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added a warning concerning huge precisions.
+
+------------------------------------------------------------------------
+r5179 | thevenyp | 2008-01-10 17:18:23 +0000 (Thu, 10 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+fix %f case
+
+------------------------------------------------------------------------
+r5178 | thevenyp | 2008-01-10 17:06:11 +0000 (Thu, 10 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r5177 | zimmerma | 2008-01-08 07:36:23 +0000 (Tue, 08 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+small changes for acos/asin/atan/atan2 rounded outside their output range
+
+------------------------------------------------------------------------
+r5176 | zimmerma | 2008-01-07 21:11:03 +0000 (Mon, 07 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added note about output of acos/asin/atan/atan2 which might be outside the
+function domain
+
+------------------------------------------------------------------------
+r5175 | zimmerma | 2008-01-05 09:20:12 +0000 (Sat, 05 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/rec_sqrt.c
+
+new version with improved tables, use macros from mpfr-impl.h, removed tabs
+
+------------------------------------------------------------------------
+r5173 | vlefevre | 2008-01-04 21:57:08 +0000 (Fri, 04 Jan 2008) | 4 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+Fixed return value of mpfr_strtofr in case of invalid data (it was -1,
+but it should be 0 since it is a ternary value and the result is 0,
+which is exact). Added test of the ternary value in this case.
+
+------------------------------------------------------------------------
+r5172 | vlefevre | 2008-01-04 21:33:19 +0000 (Fri, 04 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: better description of mpfr_strtofr.
+
+------------------------------------------------------------------------
+r5171 | vlefevre | 2008-01-04 13:11:46 +0000 (Fri, 04 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS update (new functions in the trunk).
+
+------------------------------------------------------------------------
+r5167 | vlefevre | 2008-01-04 12:07:14 +0000 (Fri, 04 Jan 2008) | 15 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+Changes related to mpfr_strtofr.
+ * strtofr.c: for mpfr_strtofr, data corresponding to NaN can now have
+ an optional sign (since the documentation said that parsing followed
+ the standard C strtod function and this change makes invalid data
+ now valid, so that there should be no compatibility problems).
+ * tests/tstrtofr.c: changed the test for -42P17 in base 16 (this was
+ eventually regarded as a documentation bug); added tests.
+ * mpfr.texi: almost completely rewrote the specification of the
+ mpfr_strtofr function. Changes:
+ - the binary exponent is now accepted even without the 0b or 0x
+ prefix;
+ - data corresponding to NaN can now have an optional sign (this was
+ a bit ambiguous);
+ - many other ambiguities avoided.
+
+------------------------------------------------------------------------
+r5166 | zimmerma | 2008-01-04 10:35:04 +0000 (Fri, 04 Jan 2008) | 5 lines
+Changed paths:
+ A /trunk/rec_sqrt.c
+
+the function mpfr_mpn_rec_sqrt() provides a faithful approximation of the
+inverse square root. Some improvements can still be made, but the interface
+should not change, thus we can start writing the mpfr_rec_sqrt function that
+calls it.
+
+------------------------------------------------------------------------
+r5164 | vlefevre | 2008-01-02 17:19:42 +0000 (Wed, 02 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+
+------------------------------------------------------------------------
+r5161 | vlefevre | 2008-01-01 12:31:06 +0000 (Tue, 01 Jan 2008) | 3 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+tgamma.c: completed test in r5159 with another one that was failing
+in the default exponent range.
+
+------------------------------------------------------------------------
+r5160 | vlefevre | 2008-01-01 12:07:21 +0000 (Tue, 01 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+delete trailing spaces.
+
+------------------------------------------------------------------------
+r5159 | zimmerma | 2008-01-01 09:44:28 +0000 (Tue, 01 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed bug in case of underflow (wrong sign)
+
+------------------------------------------------------------------------
+r5157 | vlefevre | 2008-01-01 03:57:20 +0000 (Tue, 01 Jan 2008) | 4 lines
+Changed paths:
+ M /trunk/gen_inverse.h
+
+gen_inverse.h: fixed the bug reported by Kevin Rauch a few hours ago
+(and that was detected by the generic tests and by mpfrlint after the
+latest changes).
+
+------------------------------------------------------------------------
+r5154 | vlefevre | 2008-01-01 03:47:50 +0000 (Tue, 01 Jan 2008) | 2 lines
+Changed paths:
+ M /trunk/mpfrlint
+
+mpfrlint: incorrect use of mpfr_<flag>_p is also checked in .h files.
+
+------------------------------------------------------------------------
+r5151 | vlefevre | 2008-01-01 03:26:37 +0000 (Tue, 01 Jan 2008) | 4 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_d.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/d_div.c
+ M /trunk/d_sub.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_d.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_patches.sh
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/modf.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_d.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/printf.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rem1.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/setsign.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/signbit.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_d.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/data/li2
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tfms.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tisqrt.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/vasprintf.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/yn.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Copyright notice update: added 2008 with
+ perl -pi -e 's/2007 Free Software/2007, 2008 Free Software/' **/*(^/)
+under zsh.
+
+------------------------------------------------------------------------
+r5150 | vlefevre | 2008-01-01 03:17:56 +0000 (Tue, 01 Jan 2008) | 5 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: in the bug detection with flags set before the function
+call, the erange flag was set, so that no checks were performed on
+the return value. Fixed that by not setting the erange flag.
+-> Now, 7 tests fail!
+
+------------------------------------------------------------------------
+r5149 | vlefevre | 2007-12-31 02:32:11 +0000 (Mon, 31 Dec 2007) | 5 lines
+Changed paths:
+ M /trunk/tests/tstrtofr.c
+
+tstrtofr.c: added test of -42P17 with base = 0 and 16. This currently
+fails with base = 16 (-42P17 is parsed as -0x42P17 instead of -42 with
+the remaining characters "P17"), but we could alternatively regard the
+mpfr_strtofr specification (in mpfr.texi) as incorrect.
+
+------------------------------------------------------------------------
+r5148 | vlefevre | 2007-12-30 18:20:34 +0000 (Sun, 30 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: corrections in the specification of mpfr_strtofr (see FIXME).
+
+------------------------------------------------------------------------
+r5147 | vlefevre | 2007-12-30 17:48:06 +0000 (Sun, 30 Dec 2007) | 5 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tset_str.c
+
+strtofr.c: base arguments different from 0 and 2..36 have never been
+accepted. So, instead of returning the confusing -1 (it's a ternary
+value), let's add an assert for the moment. An alternative solution
+is to return 0 and set the erange flag.
+
+------------------------------------------------------------------------
+r5146 | vlefevre | 2007-12-30 17:17:36 +0000 (Sun, 30 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: minor change (in the style); a comment was ambiguous.
+
+------------------------------------------------------------------------
+r5145 | vlefevre | 2007-12-29 22:02:14 +0000 (Sat, 29 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO update (tests: generic bad cases).
+
+------------------------------------------------------------------------
+r5144 | vlefevre | 2007-12-29 21:46:50 +0000 (Sat, 29 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsub_d.c
+
+Added #if MPFR_VERSION >= MPFR_VERSION_NUM(2,4,0) conditionals to be
+able to test MPFR 2.3.* with the (more complete) tests from the trunk.
+
+------------------------------------------------------------------------
+r5143 | vlefevre | 2007-12-29 17:07:10 +0000 (Sat, 29 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated item 6 of "To make a release".
+
+------------------------------------------------------------------------
+r5138 | vlefevre | 2007-12-28 02:37:11 +0000 (Fri, 28 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated month.
+
+------------------------------------------------------------------------
+r5136 | vlefevre | 2007-12-27 16:12:57 +0000 (Thu, 27 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tsubnormal.c
+
+tests: check the exponent range, in particular at the end of each test.
+
+------------------------------------------------------------------------
+r5135 | vlefevre | 2007-12-27 16:00:56 +0000 (Thu, 27 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+texceptions.c: GNU coding style.
+
+------------------------------------------------------------------------
+r5134 | vlefevre | 2007-12-27 15:59:46 +0000 (Thu, 27 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+texceptions.c: restore the exponent range.
+
+------------------------------------------------------------------------
+r5132 | vlefevre | 2007-12-27 03:10:01 +0000 (Thu, 27 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+
+exp2.c: removed incorrect comment (the overflow test was OK due to the
+mpfr_clear_flags above, but the new test is slightly better anyway).
+
+------------------------------------------------------------------------
+r5127 | zimmerma | 2007-12-21 15:31:55 +0000 (Fri, 21 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+added tuning parameters for 32-bit Core 2
+(thanks to Patrick Pelissier and Emmanuel Thome)
+
+------------------------------------------------------------------------
+r5124 | vlefevre | 2007-12-20 08:53:50 +0000 (Thu, 20 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: enable testcase bug20071218.
+
+------------------------------------------------------------------------
+r5123 | vlefevre | 2007-12-19 18:15:03 +0000 (Wed, 19 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: possible incorrect results due to internal underflow.
+
+------------------------------------------------------------------------
+r5122 | vlefevre | 2007-12-19 18:00:59 +0000 (Wed, 19 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: detect all underflow cases (some of them were leading to
+an infinite loop, see bug20071218 in tpow.c).
+
+------------------------------------------------------------------------
+r5121 | vlefevre | 2007-12-19 15:04:43 +0000 (Wed, 19 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: updated description of MPFR_CAN_ROUND.
+
+------------------------------------------------------------------------
+r5120 | vlefevre | 2007-12-19 14:49:34 +0000 (Wed, 19 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/round_p.c
+
+round_p.c: in comment, "round to zero" -> "round toward zero".
+
+------------------------------------------------------------------------
+r5119 | vlefevre | 2007-12-19 14:27:30 +0000 (Wed, 19 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: formatting.
+
+------------------------------------------------------------------------
+r5118 | vlefevre | 2007-12-19 14:25:10 +0000 (Wed, 19 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added testcase for another bug found by Kevin P. Rauch.
+Execute tpow with an argument to enable it.
+
+------------------------------------------------------------------------
+r5117 | thevenyp | 2007-12-19 10:32:52 +0000 (Wed, 19 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: add sprnt_fp_e for "%e" processing
+tests/tprintf.c: change tests for decimal output (but need further tests)
+
+------------------------------------------------------------------------
+r5116 | thevenyp | 2007-12-19 09:26:37 +0000 (Wed, 19 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+add checks for zero
+
+------------------------------------------------------------------------
+r5115 | vlefevre | 2007-12-18 15:51:00 +0000 (Tue, 18 Dec 2007) | 11 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/atan2.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/gamma.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfrlint
+ M /trunk/pow.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/rint.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/yn.c
+
+Merged the feature-block branch to the trunk:
+* New MPFR_BLOCK* macros (see mpfr-impl.h) and mpfrlint check to test
+ exception flags in a more reliable way and detect possible problems
+ with mpfrlint.
+* Improved the generic tests (tests/tgeneric.c): for the second
+ function call, sometimes set all the flags since risk of failures
+ are known when some flags are already set.
+* Modified code to use these new MPFR_BLOCK* macros. This fixed bugs
+ related to exceptions (where flags are set before the call); in
+ particular, tcot and ty1 failed with the improved generic tests.
+
+------------------------------------------------------------------------
+r5113 | thevenyp | 2007-12-18 15:09:30 +0000 (Tue, 18 Dec 2007) | 4 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+printf.c: each mpfr_printf-like function return -1 and set erange flag in error case
+vasprintf.c: change types in struct char_fp
+vasprintf.c: add many size checking
+
+------------------------------------------------------------------------
+r5112 | thevenyp | 2007-12-18 13:48:07 +0000 (Tue, 18 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+simplify code, improve comments
+
+------------------------------------------------------------------------
+r5110 | vlefevre | 2007-12-18 12:54:25 +0000 (Tue, 18 Dec 2007) | 6 lines
+Changed paths:
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow_z.c
+
+Fixed bug in mpfr_pow_z: if x = y (same mpfr_t argument), the input
+argument is negative and not a power of two, z is positive and odd,
+an overflow or underflow occurs, and the temporary result res is
+positive, then the result gets a wrong sign (positive instead of
+negative). Testcase.
+
+------------------------------------------------------------------------
+r5108 | vlefevre | 2007-12-18 12:08:42 +0000 (Tue, 18 Dec 2007) | 5 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/tests/tpow.c
+
+Fixed bug in mpfr_pow_ui (introduced in r3214): if x = y (same mpfr_t
+argument), the input argument is negative, n is odd, an overflow or
+underflow occurs, and the temporary result res is positive, then the
+result gets a wrong sign (positive instead of negative). Testcase.
+
+------------------------------------------------------------------------
+r5107 | vlefevre | 2007-12-18 11:24:53 +0000 (Tue, 18 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_ui.c
+
+pow_ui.c: fixed an assertion.
+
+------------------------------------------------------------------------
+r5106 | vlefevre | 2007-12-18 10:27:28 +0000 (Tue, 18 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: update concerning overflow/underflow exceptions.
+
+------------------------------------------------------------------------
+r5105 | thevenyp | 2007-12-18 10:08:21 +0000 (Tue, 18 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+exponent continuity with one hexadecimal digit ouput
+
+------------------------------------------------------------------------
+r5104 | thevenyp | 2007-12-17 14:41:58 +0000 (Mon, 17 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+#define CASE_INT_MAX_ARG to nil when HAVE_STDINT_H is not defined
+
+------------------------------------------------------------------------
+r5103 | thevenyp | 2007-12-17 13:52:26 +0000 (Mon, 17 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: add sprnt_fp_b for "%b" processing
+tests/tprintf.c: add tests for binary output
+
+------------------------------------------------------------------------
+r5102 | thevenyp | 2007-12-17 13:49:11 +0000 (Mon, 17 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix count of characters in exponent part
+
+------------------------------------------------------------------------
+r5101 | thevenyp | 2007-12-17 13:46:24 +0000 (Mon, 17 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+simplify code, remove trailing spaces and improve comment
+
+------------------------------------------------------------------------
+r5100 | vlefevre | 2007-12-17 12:04:53 +0000 (Mon, 17 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: added note about the successive calls to strcat in vasprintf.c.
+
+------------------------------------------------------------------------
+r5099 | thevenyp | 2007-12-17 10:16:34 +0000 (Mon, 17 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+add tests for 1 hexa digit output
+
+------------------------------------------------------------------------
+r5093 | vlefevre | 2007-12-16 00:15:25 +0000 (Sun, 16 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: fixed indentation.
+
+------------------------------------------------------------------------
+r5092 | zimmerma | 2007-12-15 14:29:06 +0000 (Sat, 15 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/reldiff.c
+
+fixed typo
+
+------------------------------------------------------------------------
+r5091 | zimmerma | 2007-12-15 09:42:13 +0000 (Sat, 15 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/tests/tasin.c
+
+fixed bug reported by Kevin Rauch
+
+------------------------------------------------------------------------
+r5090 | thevenyp | 2007-12-14 17:12:05 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+change display with just one hexadecimal digit
+
+------------------------------------------------------------------------
+r5089 | zimmerma | 2007-12-14 14:26:21 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+simplified MPFR_FAST_COMPUTE_IF_SMALL_INPUT part (in case of overlap)
+
+------------------------------------------------------------------------
+r5088 | thevenyp | 2007-12-14 14:08:28 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+fix wrong call
+
+------------------------------------------------------------------------
+r5087 | zimmerma | 2007-12-14 13:24:44 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/round_near_x.c
+
+added comments, got rid of compiler warnings
+
+------------------------------------------------------------------------
+r5086 | zimmerma | 2007-12-14 13:10:41 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/sinh_cosh.c
+
+added warning
+
+------------------------------------------------------------------------
+r5085 | vlefevre | 2007-12-14 12:36:25 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+sin_cos.c: improved changeset 5084; in particular, added a missing cast.
+
+------------------------------------------------------------------------
+r5084 | zimmerma | 2007-12-14 09:24:11 +0000 (Fri, 14 Dec 2007) | 4 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tsin_cos.c
+
+sin_cos.c, tsin_cos.c: fixed bug occurring when arguments overlap and
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT fails
+reuse.c: improved output in case of error
+
+------------------------------------------------------------------------
+r5083 | thevenyp | 2007-12-14 09:20:36 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+improve one digit case, add comment
+
+------------------------------------------------------------------------
+r5082 | vlefevre | 2007-12-14 09:06:26 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: added a FIXME comment. Bug?
+
+------------------------------------------------------------------------
+r5081 | vlefevre | 2007-12-14 09:05:30 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/vasprintf.c
+
+Minor changes concerning num_to_text. The ending \0 isn't needed.
+
+------------------------------------------------------------------------
+r5080 | thevenyp | 2007-12-14 08:56:31 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsinh_cosh.c
+
+simplify error output code
+
+------------------------------------------------------------------------
+r5079 | thevenyp | 2007-12-14 08:45:48 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+add num_to_text array for hexadecimal digits
+
+------------------------------------------------------------------------
+r5078 | thevenyp | 2007-12-14 08:17:43 +0000 (Fri, 14 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tsinh_cosh.c
+
+output errors to stdout
+
+------------------------------------------------------------------------
+r5077 | thevenyp | 2007-12-13 17:20:42 +0000 (Thu, 13 Dec 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+ M /trunk/vasprintf.c
+
+vasprintf.c: group hexadecimal output processing in a new sprnt_fp_a function.
+tests/tprintf.c: add tests for %a case
+tests/tprintf.c: factorize error message output
+
+------------------------------------------------------------------------
+r5076 | vlefevre | 2007-12-13 17:08:44 +0000 (Thu, 13 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+
+get_d64.c: fixed comment.
+
+------------------------------------------------------------------------
+r5075 | vlefevre | 2007-12-13 17:03:19 +0000 (Thu, 13 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: added missing #include <string.h> (useful if MPFR is built
+with the GMP build directory, as mpfr-gmp.h isn't used in this case).
+
+------------------------------------------------------------------------
+r5074 | thevenyp | 2007-12-13 16:59:31 +0000 (Thu, 13 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix typos.
+
+------------------------------------------------------------------------
+r5073 | thevenyp | 2007-12-13 16:58:01 +0000 (Thu, 13 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+
+Add handle for null size case in mpfr_snprintf
+
+------------------------------------------------------------------------
+r5072 | thevenyp | 2007-12-13 16:53:24 +0000 (Thu, 13 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+Add some comments and assertions.
+
+------------------------------------------------------------------------
+r5071 | thevenyp | 2007-12-13 16:42:19 +0000 (Thu, 13 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+#define's for nan and inf strings
+
+------------------------------------------------------------------------
+r5070 | thevenyp | 2007-12-13 16:20:30 +0000 (Thu, 13 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+short documentation of printf-like functions.
+
+------------------------------------------------------------------------
+r5069 | vlefevre | 2007-12-12 23:02:12 +0000 (Wed, 12 Dec 2007) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added information about my tool "eet" to be able to see the
+warnings more easily.
+
+------------------------------------------------------------------------
+r5068 | vlefevre | 2007-12-12 14:46:26 +0000 (Wed, 12 Dec 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: updated comment concerning the case nbchar > INT_MAX.
+
+------------------------------------------------------------------------
+r5067 | zimmerma | 2007-11-30 17:26:38 +0000 (Fri, 30 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+
+changed default return value in mpfr_jn_k0
+
+------------------------------------------------------------------------
+r5066 | zimmerma | 2007-11-30 17:09:03 +0000 (Fri, 30 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp3.c
+ M /trunk/tests/texp.c
+
+fixed underflow problem in mpfr_exp_3
+
+------------------------------------------------------------------------
+r5065 | zimmerma | 2007-11-30 15:03:56 +0000 (Fri, 30 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/jn.c
+ M /trunk/tests/tset_str.c
+
+tests/tset_str.c: added command-line argument for output base
+jn.c: replaced double-precision LOG2 constant by binary string (more portable)
+
+------------------------------------------------------------------------
+r5064 | zimmerma | 2007-11-30 13:50:23 +0000 (Fri, 30 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+fixed underflow problem
+
+------------------------------------------------------------------------
+r5063 | zimmerma | 2007-11-30 12:05:02 +0000 (Fri, 30 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mparam_h.in
+
+experimental code to distinguish Core2 from AMD64
+
+------------------------------------------------------------------------
+r5062 | zimmerma | 2007-11-30 10:43:43 +0000 (Fri, 30 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/pow_ui.c
+
+removed manual change to __gmpfr_emin outside the allowed range
+
+------------------------------------------------------------------------
+r5061 | zimmerma | 2007-11-30 10:02:38 +0000 (Fri, 30 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+added suggestion from Patrick Pelissier
+
+------------------------------------------------------------------------
+r5059 | zimmerma | 2007-11-29 21:34:15 +0000 (Thu, 29 Nov 2007) | 5 lines
+Changed paths:
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow.c
+
+Fixed another bug reported by Kevin Rauch (__gmpfr_emin was set smaller
+than the minimum allowed value, which produced an exponent wrap-around
+and a wrong result in mpfr_mul). Not sure if all problems are solved,
+nevertheless __gmpfr_emin is now in the allowed range.
+
+------------------------------------------------------------------------
+r5058 | vlefevre | 2007-11-29 18:03:50 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Fixed indentation.
+
+------------------------------------------------------------------------
+r5057 | vlefevre | 2007-11-29 17:55:42 +0000 (Thu, 29 Nov 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: in test4rm, initialize rndnext with an invalid value (meaning
+that rndnext will really be initialized later), and added an assert to
+check that this value isn't propagated to rnd.
+
+------------------------------------------------------------------------
+r5056 | vlefevre | 2007-11-29 17:45:03 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: added a comment about rndnext in test4rm.
+
+------------------------------------------------------------------------
+r5055 | vlefevre | 2007-11-29 17:28:34 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: added an assertion.
+
+------------------------------------------------------------------------
+r5054 | zimmerma | 2007-11-29 17:00:34 +0000 (Thu, 29 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+fixed bug reported by Kevin Rauch (wrong sign in case of underflow for
+large negative x and large odd negative y)
+
+------------------------------------------------------------------------
+r5053 | thevenyp | 2007-11-29 14:02:23 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+untabify and remove trailing spaces
+
+------------------------------------------------------------------------
+r5052 | thevenyp | 2007-11-29 12:54:29 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix padding error in sprnt_inf
+
+------------------------------------------------------------------------
+r5051 | thevenyp | 2007-11-29 12:50:50 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+factorization of special numbers output in sprnt_nan and sprnt_inf functions
+
+------------------------------------------------------------------------
+r5050 | thevenyp | 2007-11-29 12:43:47 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix comment about the size of format string buffer
+
+------------------------------------------------------------------------
+r5049 | thevenyp | 2007-11-29 12:32:02 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+replace memory management functions mpfr_default_* by __gmp_*_func
+
+------------------------------------------------------------------------
+r5048 | zimmerma | 2007-11-29 10:16:37 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+updated Core 2 thresholds (obtained with gmp-4.2.2 and Gaudry's patch)
+
+------------------------------------------------------------------------
+r5047 | vlefevre | 2007-11-29 09:21:01 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+Typo in comment.
+
+------------------------------------------------------------------------
+r5046 | thevenyp | 2007-11-29 08:36:49 +0000 (Thu, 29 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+
+fix typo pointed out in revision 5044
+
+------------------------------------------------------------------------
+r5045 | vlefevre | 2007-11-28 14:36:21 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+
+printf.c: more comments about snprintf.
+
+------------------------------------------------------------------------
+r5044 | vlefevre | 2007-11-28 14:00:33 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+
+printf.c: added a comment concerning a warning (a bug, IMHO).
+
+------------------------------------------------------------------------
+r5043 | vlefevre | 2007-11-28 13:35:22 +0000 (Wed, 28 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: added FIXME comment concerning the case nbchar > INT_MAX,
+with a reference to POSIX.
+
+------------------------------------------------------------------------
+r5042 | thevenyp | 2007-11-28 13:32:24 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+add explanations about buffer size
+
+------------------------------------------------------------------------
+r5041 | thevenyp | 2007-11-28 12:53:15 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+change __gmp_const into const
+
+------------------------------------------------------------------------
+r5040 | vlefevre | 2007-11-28 10:29:33 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: added an assert.
+
+------------------------------------------------------------------------
+r5039 | thevenyp | 2007-11-28 10:13:55 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+fix output with space flag
+
+------------------------------------------------------------------------
+r5038 | thevenyp | 2007-11-28 10:09:19 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+add MPFR_ASSERTD to prevent buffer overflow
+
+------------------------------------------------------------------------
+r5037 | thevenyp | 2007-11-28 10:00:42 +0000 (Wed, 28 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+replace use of ptrdiff_t by size_t where possible
+
+------------------------------------------------------------------------
+r5032 | thevenyp | 2007-11-27 15:13:44 +0000 (Tue, 27 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+factorisation of temp string alloc in buffer_pad function
+
+------------------------------------------------------------------------
+r5031 | thevenyp | 2007-11-27 14:47:30 +0000 (Tue, 27 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r5030 | thevenyp | 2007-11-27 14:05:29 +0000 (Tue, 27 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+compatibility of types between nbc fields and mp_exp_t
+fix wrong size of buffer string exp_fmt
+
+------------------------------------------------------------------------
+r5026 | vlefevre | 2007-11-27 12:55:31 +0000 (Tue, 27 Nov 2007) | 3 lines
+Changed paths:
+ A /trunk/mpfrlint
+
+Added initial mpfrlint sh script to check possible problems in
+the MPFR source.
+
+------------------------------------------------------------------------
+r5025 | thevenyp | 2007-11-27 09:53:31 +0000 (Tue, 27 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+change 'g'/'G' to 'e'/'E' or 'f'/'F' according to C99 rules
+
+------------------------------------------------------------------------
+r5024 | thevenyp | 2007-11-26 17:44:10 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+replace mpfr_default_(re)allocate by __gmp_(re)allocate for the returned string (freed by mpfr_free_str)
+
+------------------------------------------------------------------------
+r5023 | thevenyp | 2007-11-26 17:38:17 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tprintf.c: replace __gmp_const by const
+
+------------------------------------------------------------------------
+r5022 | vlefevre | 2007-11-26 15:27:56 +0000 (Mon, 26 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/printf.c
+
+printf.c: added FIXME comment: snprintf is new in C99. It must be
+checked with a configure test.
+
+------------------------------------------------------------------------
+r5021 | vlefevre | 2007-11-26 15:19:46 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+
+------------------------------------------------------------------------
+r5020 | vlefevre | 2007-11-26 15:16:09 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: reformat.
+
+------------------------------------------------------------------------
+r5019 | vlefevre | 2007-11-26 15:14:23 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/out_str.c
+ M /trunk/strtofr.c
+
+MPFR_DECIMAL_POINT now needs to have type char (because of vasprintf.c).
+
+------------------------------------------------------------------------
+r5018 | vlefevre | 2007-11-26 15:11:53 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: changeset 4996 was incorrect. Fixed.
+
+------------------------------------------------------------------------
+r5017 | vlefevre | 2007-11-26 14:42:46 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: Avoid variable names "l", "I" and "O".
+
+------------------------------------------------------------------------
+r5016 | vlefevre | 2007-11-26 14:09:52 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a note about the locales.
+
+------------------------------------------------------------------------
+r5015 | thevenyp | 2007-11-26 13:55:28 +0000 (Mon, 26 Nov 2007) | 6 lines
+Changed paths:
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+printf.c: fix use of pointer of string
+vasprintf.c: add conditional compilation directives for wchar and wint_t
+vasprintf.c: add padding for special values
+vasprintf.c: fix output for value 1.0 and format "%Rf"
+vasprintf.c: replace __gmp_const by const
+
+------------------------------------------------------------------------
+r5014 | vlefevre | 2007-11-26 09:57:47 +0000 (Mon, 26 Nov 2007) | 9 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/vasprintf.c
+
+acinclude.m4: check wchar.h header (see below).
+vasprintf.c:
+ * No longer depend on toupper (which returns locale-dependent results)
+ to generate 'A'..'F' (see C standard).
+ * Removed #include <ctype.h> which was hiding a bug (see below).
+ * Added missing #include <wchar.h> if HAVE_WCHAR_H is defined. But
+ the compilation fails if <wchar.h> doesn't exist due to the use of
+ wchar_t and wint_t.
+
+------------------------------------------------------------------------
+r5013 | vlefevre | 2007-11-26 09:44:24 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: updated comments.
+
+------------------------------------------------------------------------
+r5012 | vlefevre | 2007-11-26 09:37:47 +0000 (Mon, 26 Nov 2007) | 5 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c:
+ * Removed #include <stdlib.h> now useless.
+ * Added FIXME comment.
+ * Replaced _MP_EXP_FORMAT_SPEC (reserved) by MPFR_EXP_FORMAT_SPEC.
+
+------------------------------------------------------------------------
+r5011 | vlefevre | 2007-11-26 09:32:20 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: added FIXME comments.
+
+------------------------------------------------------------------------
+r5010 | vlefevre | 2007-11-26 09:18:06 +0000 (Mon, 26 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: fixed a typo in a comment and improved another comment.
+
+------------------------------------------------------------------------
+r5009 | vlefevre | 2007-11-24 01:46:30 +0000 (Sat, 24 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: moved function declarations out of "#ifdef _MPFR_H_HAVE_VA_LIST"
+and/or "#ifdef _MPFR_H_HAVE_FILE" when this makes sense.
+
+------------------------------------------------------------------------
+r5008 | vlefevre | 2007-11-24 01:41:33 +0000 (Sat, 24 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: added missing "void" in function declarations.
+
+------------------------------------------------------------------------
+r5007 | vlefevre | 2007-11-24 01:36:47 +0000 (Sat, 24 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tprintf.c
+ M /trunk/tests/tset_f.c
+ M /trunk/vasprintf.c
+
+Untabified and removed trailing spaces.
+
+------------------------------------------------------------------------
+r5006 | vlefevre | 2007-11-24 01:33:00 +0000 (Sat, 24 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/mpfr.texi
+
+mpfr.texi: corrections (English usage and texinfo). Added corresponding
+notes at the end of the README.dev file.
+
+------------------------------------------------------------------------
+r5005 | vlefevre | 2007-11-24 01:24:05 +0000 (Sat, 24 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: s/rounding to the nearest mode/rounding to nearest mode/
+
+------------------------------------------------------------------------
+r5004 | vlefevre | 2007-11-24 01:22:31 +0000 (Sat, 24 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi consistency changes: "towards" -> "toward" (because this
+is what the IEEE-754 standard uses, and we have mpfr_nexttoward).
+
+------------------------------------------------------------------------
+r5003 | vlefevre | 2007-11-24 01:17:08 +0000 (Sat, 24 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: English typography corrections (no space before ":").
+
+------------------------------------------------------------------------
+r5002 | vlefevre | 2007-11-24 01:15:22 +0000 (Sat, 24 Nov 2007) | 4 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: the use of the abs function was incorrect as its argument
+has type int, which may be smaller than an mp_exp_t. Fixed that and
+replaced uceil_log10 by uceil_log10_exp_p2.
+
+------------------------------------------------------------------------
+r5001 | vlefevre | 2007-11-24 00:55:50 +0000 (Sat, 24 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+vasprintf.c: fixed uceil_log10 for x close to ULONG_MAX.
+
+------------------------------------------------------------------------
+r5000 | zimmerma | 2007-11-23 20:22:10 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/vasprintf.c
+
+got rid of math.h
+
+------------------------------------------------------------------------
+r4999 | vlefevre | 2007-11-23 19:20:38 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: include <stdarg.h>.
+
+------------------------------------------------------------------------
+r4998 | vlefevre | 2007-11-23 19:19:04 +0000 (Fri, 23 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/printf.c
+ M /trunk/vasprintf.c
+
+stdarg-related corrections, as HAVE_STDARG is not standard thus must not
+be tested in mpfr.h!
+
+------------------------------------------------------------------------
+r4997 | vlefevre | 2007-11-23 19:07:54 +0000 (Fri, 23 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c: enable the tests only if HAVE_STDARG is defined,
+i.e. if the printf-like functions are defined.
+
+------------------------------------------------------------------------
+r4996 | vlefevre | 2007-11-23 19:02:46 +0000 (Fri, 23 Nov 2007) | 7 lines
+Changed paths:
+ M /trunk/tests/tprintf.c
+
+tests/tprintf.c:
+ * Non-standard headers should be included after the standard headers
+ (when possible).
+ * The setlocale function is used only if <locale.h> has been included.
+ * Use tests_start_mpfr / tests_end_mpfr; this shows a bug:
+ tests_free(): attempt to free bad pointer 0x1801200
+
+------------------------------------------------------------------------
+r4995 | vlefevre | 2007-11-23 18:54:37 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: setlocale is used only if <locale.h> has been included.
+
+------------------------------------------------------------------------
+r4994 | vlefevre | 2007-11-23 18:48:52 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+out_str.c: remove other occurrence of <locale.h>.
+
+------------------------------------------------------------------------
+r4993 | thevenyp | 2007-11-23 17:35:46 +0000 (Fri, 23 Nov 2007) | 12 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/printf.c
+ M /trunk/strtofr.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tests.c
+ A /trunk/tests/tprintf.c
+ A /trunk/vasprintf.c
+
+Makefile.am: add mpfr_printf-like functions
+mpfr.h: add mpfr_printf-like functions
+printf.c: printf, sprintf, snprintf, asprintf and 'v' variants
+vasprintf.c: vasprintf functions used by its likes
+mpfr.texi: add description for printf family functions
+tests/Makefile.am: add test for printf
+tests/tprintf.c: tests for printf-like functions
+acinclude.m4: define HAVE_LOCALE_H
+mpfr-impl.h: define MPFR_DECIMAL_POINT even if no locale.h
+strtofr.c: remove locale.h inclusion (done by mpfr-impl.h )
+tests/tests.c: use HAVE_LOCALE_H
+
+------------------------------------------------------------------------
+r4991 | vlefevre | 2007-11-23 16:55:03 +0000 (Fri, 23 Nov 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tisqrt.c
+
+tests/tisqrt.c: test the 32-bit __gmpfr_cuberoot bound cases (9 per
+value) exhaustively (running tisqrt is still immediate on a recent
+machine).
+
+------------------------------------------------------------------------
+r4990 | vlefevre | 2007-11-23 16:49:45 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tisqrt.c
+
+tests/tisqrt.c: test the 32-bit __gmpfr_isqrt bound cases exhaustively.
+
+------------------------------------------------------------------------
+r4989 | vlefevre | 2007-11-23 15:10:56 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: test the availability of <string.h>.
+
+------------------------------------------------------------------------
+r4988 | vlefevre | 2007-11-23 14:30:36 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: test the availability of <locale.h>.
+
+------------------------------------------------------------------------
+r4987 | vlefevre | 2007-11-23 14:26:39 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: updated comment concerning the checked functions.
+
+------------------------------------------------------------------------
+r4986 | vlefevre | 2007-11-23 14:24:50 +0000 (Fri, 23 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: added memmove to the checked functions (though this test
+is currently useless, except for the corresponding information).
+
+------------------------------------------------------------------------
+r4985 | vlefevre | 2007-11-23 14:19:40 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+acinclude.m4: updated a comment concerning the function checking.
+
+------------------------------------------------------------------------
+r4984 | vlefevre | 2007-11-23 13:46:04 +0000 (Fri, 23 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/gmp_op.c
+
+gmp_op.c: removed old "#include <stddef.h>" line (seems to be useless
+now, and note that <stdio.h> is included by default in mpfr-impl.h).
+
+------------------------------------------------------------------------
+r4982 | vlefevre | 2007-11-23 13:09:39 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tj0.c
+
+tests/tj0.c: fixed test.
+
+------------------------------------------------------------------------
+r4980 | vlefevre | 2007-11-23 12:58:53 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+
+jn.c: added integer overflow checking.
+
+------------------------------------------------------------------------
+r4978 | vlefevre | 2007-11-23 10:06:07 +0000 (Fri, 23 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/memory.c
+
+tests/memory.c: fixed copyright notice.
+
+------------------------------------------------------------------------
+r4969 | vlefevre | 2007-11-21 14:50:18 +0000 (Wed, 21 Nov 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+tests/tzeta.c: completed test of mpfr_zeta bug fixed in r4920 (the value
+of zeta(large negative) was also wrong in GMP_RNDU: -Inf instead of the
+largest negative MPFR number).
+
+------------------------------------------------------------------------
+r4957 | zimmerma | 2007-11-20 14:43:14 +0000 (Tue, 20 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tinp_str.c
+
+reverted back to rev. 4951 (otherwise we would have to free memory for all
+exit calls)
+
+------------------------------------------------------------------------
+r4956 | thevenyp | 2007-11-20 11:21:10 +0000 (Tue, 20 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_f.c
+
+use of RANDS instead of __gmp_rands
+tset_f.c add checking with random values
+
+------------------------------------------------------------------------
+r4955 | thevenyp | 2007-11-19 11:07:49 +0000 (Mon, 19 Nov 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tests.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_f.c
+
+tli2.c: fix wrong assertion in copyright motice
+test.c: fixed seed for reproducible errors
+trandom.c tpow_z.c tset_f.c: integration with GMP_CHECK_RANDOMIZE process
+
+------------------------------------------------------------------------
+r4954 | zimmerma | 2007-11-17 12:15:53 +0000 (Sat, 17 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tasin.c
+
+added missing call to tests_end_mpfr
+
+------------------------------------------------------------------------
+r4953 | zimmerma | 2007-11-17 09:59:19 +0000 (Sat, 17 Nov 2007) | 5 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tli2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/tsub_ui.c
+
+got rid of mpfr_init_gmp_rand/MPFR_TEST_USE_RANDS and not-reentrant gmp
+random functions (mpn_random*, mpz_random*, mpf_random*). Now all tests use
+either RANDS (which is cleared by tests_rand_end called by tests_end_mpfr),
+or the gmp_randstate_t mechanism.
+
+------------------------------------------------------------------------
+r4952 | zimmerma | 2007-11-16 17:09:12 +0000 (Fri, 16 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tinp_str.c
+
+added missing mpfr_clear and tests_end_mpfr (thanks Michael Abshoff)
+
+------------------------------------------------------------------------
+r4951 | zimmerma | 2007-11-16 14:28:29 +0000 (Fri, 16 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+fixed problem reported by valgrind (thanks to Michael Abshoff)
+
+------------------------------------------------------------------------
+r4950 | zimmerma | 2007-11-06 22:07:31 +0000 (Tue, 06 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+ M /trunk/tests/tdiv_ui.c
+
+fixed bug in div_ui for x=0 and u<>0 (sign of result was not set)
+
+------------------------------------------------------------------------
+r4949 | thevenyp | 2007-11-06 10:53:43 +0000 (Tue, 06 Nov 2007) | 4 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+algorithms.tex: fix bibtex references for dilogarithm function
+algorithms.bib: add references for dilogarithm function
+
+
+------------------------------------------------------------------------
+r4948 | vlefevre | 2007-11-05 11:18:46 +0000 (Mon, 05 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: removed trailing spaces.
+
+------------------------------------------------------------------------
+r4947 | zimmerma | 2007-11-05 10:53:21 +0000 (Mon, 05 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/pow.c
+
+added new macro MPFR_ALIAS
+
+------------------------------------------------------------------------
+r4946 | zimmerma | 2007-11-04 11:10:23 +0000 (Sun, 04 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+
+removed unused label
+
+------------------------------------------------------------------------
+r4945 | vlefevre | 2007-11-04 00:46:45 +0000 (Sun, 04 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/pow_z.c
+
+pow_z.c: fixed bug that occurs when x is a power of 2 and the result
+overflows (wrong sign); this bug has always been present (from r3215).
+
+------------------------------------------------------------------------
+r4944 | vlefevre | 2007-11-04 00:44:04 +0000 (Sun, 04 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow_z.c
+
+tpow.c, tpow_z.c: removed a printf that was left by mistake.
+
+------------------------------------------------------------------------
+r4943 | vlefevre | 2007-11-04 00:36:23 +0000 (Sun, 04 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+tpow_z.c: added testcase for the latest mpfr_pow bug (rev 4942),
+which is in fact a bug in mpfr_pow_z.
+
+------------------------------------------------------------------------
+r4942 | vlefevre | 2007-11-04 00:28:20 +0000 (Sun, 04 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added testcase for new bug found by Kevin P. Rauch; removed a
+mpfr_dump that was left by mistake.
+
+------------------------------------------------------------------------
+r4941 | vlefevre | 2007-11-03 09:28:23 +0000 (Sat, 03 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: removed FIXME comment.
+
+------------------------------------------------------------------------
+r4940 | zimmerma | 2007-11-03 08:45:17 +0000 (Sat, 03 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+fixed case x < 0, y large integer
+
+------------------------------------------------------------------------
+r4939 | vlefevre | 2007-11-03 02:05:04 +0000 (Sat, 03 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: added FIXME comment.
+
+------------------------------------------------------------------------
+r4938 | vlefevre | 2007-11-03 01:59:23 +0000 (Sat, 03 Nov 2007) | 5 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added testcase for new bug found by Kevin P. Rauch. The problem
+occurs on x^y with x negative and y an integer whose exponent is > 256
+(so that mpfr_pow_z isn't used, and the generic code is used instead and
+fails because x is negative).
+
+------------------------------------------------------------------------
+r4937 | vlefevre | 2007-11-02 15:02:50 +0000 (Fri, 02 Nov 2007) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+Fixed several bugs in mpfr_pow (from rev 3592 and 4932); added testcase.
+
+------------------------------------------------------------------------
+r4936 | vlefevre | 2007-11-02 14:29:21 +0000 (Fri, 02 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added an overflow test in reduced exponent range
+(-> assertion failure in the current pow.c code).
+
+------------------------------------------------------------------------
+r4935 | vlefevre | 2007-11-02 13:02:45 +0000 (Fri, 02 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: added a comment concerning __gmpfr_one, __gmpfr_two and
+__gmpfr_four.
+
+------------------------------------------------------------------------
+r4934 | vlefevre | 2007-11-02 12:54:14 +0000 (Fri, 02 Nov 2007) | 3 lines
+Changed paths:
+ M /trunk/cmp_abs.c
+
+Bug fix: in cmp_abs.c, changed MPFR_GET_EXP into MPFR_EXP to allow
+exponents outside the current exponent range (needed for mpfr_pow).
+
+------------------------------------------------------------------------
+r4933 | vlefevre | 2007-10-31 15:46:57 +0000 (Wed, 31 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/erfc.c
+ M /trunk/li2.c
+ M /trunk/lngamma.c
+ M /trunk/mpfr.texi
+ M /trunk/pow.c
+ M /trunk/rem1.c
+ M /trunk/tests/tfmod.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tzeta.c
+
+Untabified and removed trailing spaces.
+
+------------------------------------------------------------------------
+r4932 | zimmerma | 2007-10-30 16:29:46 +0000 (Tue, 30 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+pow.c, tpow.c: fixed bugs reported by Kevin Rauch
+mpfr-impl.h: fixed typo
+
+------------------------------------------------------------------------
+r4931 | zimmerma | 2007-10-30 14:35:24 +0000 (Tue, 30 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r4930 | zimmerma | 2007-10-30 14:00:30 +0000 (Tue, 30 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added missing \Li2
+
+------------------------------------------------------------------------
+r4929 | zimmerma | 2007-10-28 15:18:03 +0000 (Sun, 28 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/li2.c
+ M /trunk/tests/data/li2
+ M /trunk/tests/tli2.c
+
+added more test cases for mpfr_li2
+improved MPFR_FAST_COMPUTE_IF_SMALL_INPUT case for x > 0
+
+------------------------------------------------------------------------
+r4928 | zimmerma | 2007-10-28 13:16:02 +0000 (Sun, 28 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlgamma.c
+
+fixed bug mentioned by Kevin Rauch: mpfr_lgamma was hanging for tiny input
+(had to implement a complete loop in that case)
+
+------------------------------------------------------------------------
+r4927 | zimmerma | 2007-10-28 12:29:01 +0000 (Sun, 28 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+ M /trunk/jyn_asympt.c
+ M /trunk/tests/tj0.c
+
+fixed bug reported by Kevin Rauch: wrong sign for jn(n even, large negative x)
+
+------------------------------------------------------------------------
+r4926 | zimmerma | 2007-10-28 12:18:04 +0000 (Sun, 28 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/TODO
+
+removed item on mpfr_sinh_cosh (done)
+added more info on item on efficiency of mpfr_sin
+
+------------------------------------------------------------------------
+r4925 | zimmerma | 2007-10-28 11:53:51 +0000 (Sun, 28 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added comment about function/macro in custom interface
+
+------------------------------------------------------------------------
+r4924 | zimmerma | 2007-10-28 11:11:13 +0000 (Sun, 28 Oct 2007) | 4 lines
+Changed paths:
+ M /trunk/jn.c
+ M /trunk/tests/tjn.c
+
+jn.c: improved choice of initial precision in Taylor series (takes into
+ account cancellation)
+tests/tjn.c: now "tjn p n z" evaluates j(n,z) to precision p
+
+------------------------------------------------------------------------
+r4923 | vlefevre | 2007-10-27 12:59:35 +0000 (Sat, 27 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+
+factorial.c: added FIXME comment.
+
+------------------------------------------------------------------------
+r4922 | vlefevre | 2007-10-27 12:23:43 +0000 (Sat, 27 Oct 2007) | 4 lines
+Changed paths:
+ M /trunk/gamma.c
+
+gamma.c: attempt to fix wrong fix in 4918 (the maximum exponent can
+be > 2^30 on 64-bit machines). There may still be problems in huge
+precisions.
+
+------------------------------------------------------------------------
+r4921 | zimmerma | 2007-10-27 11:17:24 +0000 (Sat, 27 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added note about efficiency of special functions
+corrected typo
+
+------------------------------------------------------------------------
+r4920 | zimmerma | 2007-10-27 11:07:33 +0000 (Sat, 27 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+fixed bug in zeta(large negative) reported by Kevin Rauch [wrong inexact flag]
+
+------------------------------------------------------------------------
+r4919 | zimmerma | 2007-10-27 08:15:57 +0000 (Sat, 27 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/erfc.c
+ M /trunk/tests/terf.c
+
+fixed inefficiency reported by Kevin Rauch when x large negative (erfc -> 2)
+
+------------------------------------------------------------------------
+r4918 | zimmerma | 2007-10-26 19:12:24 +0000 (Fri, 26 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed another bug found by Kevin Rauch: gamma(huge integer) failed on 64-bit
+
+------------------------------------------------------------------------
+r4917 | zimmerma | 2007-10-26 18:34:54 +0000 (Fri, 26 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlgamma.c
+
+fixed bug found by Kevin Rauch (emin/emax not restored for x=1,2)
+
+------------------------------------------------------------------------
+r4916 | zimmerma | 2007-10-26 18:05:43 +0000 (Fri, 26 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tli2.c
+
+added test for reference values
+
+------------------------------------------------------------------------
+r4915 | zimmerma | 2007-10-26 18:05:12 +0000 (Fri, 26 Oct 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/li2
+
+reference values for li2
+
+------------------------------------------------------------------------
+r4914 | thevenyp | 2007-10-26 17:32:19 +0000 (Fri, 26 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/li2.c
+
+algorithms.tex: description of dilogarithm algorithm
+li2.c: conformity with description in algorithm.tex
+
+------------------------------------------------------------------------
+r4913 | vlefevre | 2007-10-23 10:16:22 +0000 (Tue, 23 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: small change in the description of mpfr_subnormalize.
+
+------------------------------------------------------------------------
+r4912 | zimmerma | 2007-10-23 09:02:35 +0000 (Tue, 23 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added more details in the description of subnormalize
+
+------------------------------------------------------------------------
+r4908 | vlefevre | 2007-10-23 02:43:39 +0000 (Tue, 23 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+
+subnormal.c: fixed the bugs when old_inex is INT_MIN or INT_MAX.
+
+------------------------------------------------------------------------
+r4907 | vlefevre | 2007-10-23 02:35:00 +0000 (Tue, 23 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tsubnormal.c
+
+tsubnormal.c: added some tests showing bugs when old_inex is INT_MIN
+or INT_MAX.
+
+------------------------------------------------------------------------
+r4906 | vlefevre | 2007-10-23 02:31:48 +0000 (Tue, 23 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+
+subnormal.c: corrected comment.
+
+------------------------------------------------------------------------
+r4905 | vlefevre | 2007-10-23 01:52:28 +0000 (Tue, 23 Oct 2007) | 8 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/subnormal.c
+
+Changeset r4904 introduced an assertion failure, but the assertion
+emax - emin >= PREC(x) wasn't necessary: the value of emax doesn't
+matter, except when the exponent is increased due to the rounding.
+So, we just document that if the result cannot be represented in the
+current exponent range, the behavior is undefined (updated mpfr.texi
+accordingly). Removed the assertion from subnormal.c and added a new
+one to have an abort if such an undefined behavior occurs.
+
+------------------------------------------------------------------------
+r4904 | zimmerma | 2007-10-22 18:38:49 +0000 (Mon, 22 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+ M /trunk/tests/tsubnormal.c
+
+fixed 2 bugs reported by Kevin Rauch
+
+------------------------------------------------------------------------
+r4903 | vlefevre | 2007-10-22 16:41:45 +0000 (Mon, 22 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+
+subnormal.c: replaced incorrect comment.
+
+------------------------------------------------------------------------
+r4902 | vlefevre | 2007-10-22 15:22:24 +0000 (Mon, 22 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4901 | zimmerma | 2007-10-22 08:55:51 +0000 (Mon, 22 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+
+added new references
+
+------------------------------------------------------------------------
+r4899 | zimmerma | 2007-10-20 09:18:37 +0000 (Sat, 20 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/li2.c
+
+added asymptotic expansions
+
+------------------------------------------------------------------------
+r4898 | thevenyp | 2007-10-19 16:08:27 +0000 (Fri, 19 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/li2.c
+ M /trunk/tests/tli2.c
+
+li2.c: add Ziv's loop in li2_series
+tli2.c: add a function for fixed value checking
+
+------------------------------------------------------------------------
+r4897 | thevenyp | 2007-10-17 16:10:03 +0000 (Wed, 17 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/li2.c
+ M /trunk/tests/tli2.c
+
+li2.c: fix a typo and fix use of taylor series
+tests/tli2.c: use default random function
+
+------------------------------------------------------------------------
+r4896 | thevenyp | 2007-10-16 17:02:02 +0000 (Tue, 16 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/li2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ A /trunk/tests/tli2.c
+
+add dilogarithm function
+
+------------------------------------------------------------------------
+r4895 | zimmerma | 2007-10-15 14:11:22 +0000 (Mon, 15 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item in Efficiency section
+
+------------------------------------------------------------------------
+r4894 | zimmerma | 2007-10-15 13:14:30 +0000 (Mon, 15 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/TODO
+
+added table of contents
+removed last section (mpf/mpfr integration)
+
+------------------------------------------------------------------------
+r4893 | vlefevre | 2007-10-15 01:58:45 +0000 (Mon, 15 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/algorithms.tex
+
+Fixed acosh(x) with x slightly larger than 1, using sqrt(2(x-1)) and
+a complete error analysis.
+
+------------------------------------------------------------------------
+r4892 | vlefevre | 2007-10-15 00:46:10 +0000 (Mon, 15 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+
+tests/tacosh.c: added another test with x a bit larger than 1 and
+prec(y) << prec(x).
+
+------------------------------------------------------------------------
+r4891 | vlefevre | 2007-10-12 16:07:23 +0000 (Fri, 12 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+acosh.c: added a comment about the fix I did in r4814.
+
+------------------------------------------------------------------------
+r4890 | zimmerma | 2007-10-09 20:22:47 +0000 (Tue, 09 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added extra reference for slowness of mpfr_root
+
+------------------------------------------------------------------------
+r4888 | vlefevre | 2007-10-09 11:48:52 +0000 (Tue, 09 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update (added Question 8).
+
+------------------------------------------------------------------------
+r4887 | vlefevre | 2007-10-09 11:03:16 +0000 (Tue, 09 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: another small change in Contributors section.
+
+------------------------------------------------------------------------
+r4886 | vlefevre | 2007-10-09 10:35:28 +0000 (Tue, 09 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: small change in Contributors section.
+
+------------------------------------------------------------------------
+r4885 | vlefevre | 2007-10-09 09:59:18 +0000 (Tue, 09 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: mention Fiable and AOC actions in the Contributors section.
+
+------------------------------------------------------------------------
+r4884 | zimmerma | 2007-10-09 07:50:42 +0000 (Tue, 09 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added reference to ACM TOMS paper
+updated other references, and Contributors section
+
+------------------------------------------------------------------------
+r4883 | zimmerma | 2007-10-09 06:11:31 +0000 (Tue, 09 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed typo in sectioning
+
+------------------------------------------------------------------------
+r4882 | zimmerma | 2007-10-08 17:16:51 +0000 (Mon, 08 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+removed mpfr_get_d1 from documented functions
+removed old commented functions
+
+------------------------------------------------------------------------
+r4881 | zimmerma | 2007-10-08 14:48:38 +0000 (Mon, 08 Oct 2007) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+renamed "Rounding Mode Related Functions" to "Rounding Related Functions"
+put mpfr_can_round in "Rounding Related Functions" (now exported)
+exchanged order of sections "Miscellaneous Functions" and "Rounding Related Functions"
+
+------------------------------------------------------------------------
+r4880 | zimmerma | 2007-10-08 11:04:34 +0000 (Mon, 08 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added hint for mpfr_can_round to get ternary value
+
+------------------------------------------------------------------------
+r4879 | zimmerma | 2007-10-08 10:09:56 +0000 (Mon, 08 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+changed mpfr_can_round() call into MPFR_CAN_ROUND() call
+
+------------------------------------------------------------------------
+r4878 | vlefevre | 2007-10-05 12:18:17 +0000 (Fri, 05 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/update-version
+
+Updated update-version to make patches easier to produce.
+
+------------------------------------------------------------------------
+r4876 | vlefevre | 2007-10-04 01:57:35 +0000 (Thu, 04 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/tests/tatan.c
+
+Fixed a bug (found by Robert Bajema) in mpfr_atan2, which can occur if
+the underflow flag is set before the call and x > 0; added testcase.
+
+------------------------------------------------------------------------
+r4875 | vlefevre | 2007-10-03 15:13:06 +0000 (Wed, 03 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: improved mpfr_set_exp description too.
+
+------------------------------------------------------------------------
+r4874 | vlefevre | 2007-10-03 15:09:49 +0000 (Wed, 03 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: improved mpfr_get_exp documentation.
+
+------------------------------------------------------------------------
+r4873 | vlefevre | 2007-10-03 15:05:31 +0000 (Wed, 03 Oct 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: mantissa -> significand (to use the terminology from IEEE 754
+and ISO C99).
+
+------------------------------------------------------------------------
+r4872 | vlefevre | 2007-10-03 14:36:38 +0000 (Wed, 03 Oct 2007) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: better error message if libgmp is not found.
+
+------------------------------------------------------------------------
+r4871 | thevenyp | 2007-10-02 16:08:02 +0000 (Tue, 02 Oct 2007) | 1 line
+Changed paths:
+ M /trunk/algorithms.tex
+
+fix some typos
+------------------------------------------------------------------------
+r4870 | zimmerma | 2007-09-28 16:14:03 +0000 (Fri, 28 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added references
+
+------------------------------------------------------------------------
+r4869 | thevenyp | 2007-09-28 12:08:56 +0000 (Fri, 28 Sep 2007) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ D /trunk/fmod.c
+ M /trunk/mpfr.texi
+ A /trunk/rem1.c
+ D /trunk/remquo.c
+ M /trunk/tests/tfmod.c
+
+merge fmod, remaider and remquo into a single file rem1.c.
+merge code into a single internal function mpfr_rem1.
+fix false statement in mpfr.texi: rop and op1 have the same sign for mpfr_fmod
+but not for mpfr_remainder and mpfr_remquo.
+
+------------------------------------------------------------------------
+r4868 | vlefevre | 2007-09-26 16:20:35 +0000 (Wed, 26 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfmod.c
+
+tests/tfmod.c: added static.
+
+------------------------------------------------------------------------
+r4867 | thevenyp | 2007-09-26 11:30:29 +0000 (Wed, 26 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/fmod.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ A /trunk/tests/tfmod.c
+
+new fmod function
+
+------------------------------------------------------------------------
+r4866 | vlefevre | 2007-09-22 00:17:11 +0000 (Sat, 22 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4865 | vlefevre | 2007-09-22 00:15:49 +0000 (Sat, 22 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/add_d.c
+ M /trunk/modf.c
+ M /trunk/mpfr.texi
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sinh_cosh.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tmodf.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tsinh_cosh.c
+ M /trunk/tests/tsub_d.c
+ M /trunk/tests/ttrunc.c
+
+GNU coding style, reformatting, exit (-1) -> exit (1).
+
+------------------------------------------------------------------------
+r4864 | thevenyp | 2007-09-21 08:29:01 +0000 (Fri, 21 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/sinh_cosh.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ A /trunk/tests/tsinh_cosh.c
+
+new mpfr_sinh_cosh function
+
+------------------------------------------------------------------------
+r4863 | vlefevre | 2007-09-19 02:24:31 +0000 (Wed, 19 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: removed __gmpfr_isqrt bug.
+
+------------------------------------------------------------------------
+r4862 | vlefevre | 2007-09-19 02:12:09 +0000 (Wed, 19 Sep 2007) | 3 lines
+Changed paths:
+ M /trunk/isqrt.c
+ M /trunk/tests/tisqrt.c
+
+isqrt.c: quick fix of __gmpfr_cuberoot (a full proof is needed).
+tests/tisqrt.c: added much more tests for __gmpfr_cuberoot.
+
+------------------------------------------------------------------------
+r4861 | vlefevre | 2007-09-19 01:46:58 +0000 (Wed, 19 Sep 2007) | 7 lines
+Changed paths:
+ M /trunk/tests/tisqrt.c
+
+tisqrt.c: improved tests. When doing
+ touch tests.c tisqrt.c
+ make tisqrt CFLAGS="-g -O2 -ffloat-store -DMPFR_FPU_PREC=_FPU_SINGLE"
+ ./tisqrt
+with gcc 4.2.1 on a Linux/x86 machine, on gets:
+ Error in __gmpfr_cuberoot (4251527999): got 1620 instead of 1619
+
+------------------------------------------------------------------------
+r4860 | vlefevre | 2007-09-19 01:12:33 +0000 (Wed, 19 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tisqrt.c
+
+tisqrt.c: added __gmpfr_cuberoot() tests.
+
+------------------------------------------------------------------------
+r4859 | vlefevre | 2007-09-19 01:03:11 +0000 (Wed, 19 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/isqrt.c
+
+isqrt.c: corrected the explanation.
+
+------------------------------------------------------------------------
+r4858 | vlefevre | 2007-09-19 00:57:46 +0000 (Wed, 19 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/isqrt.c
+
+isqrt.c: fixed __gmpfr_isqrt.
+
+------------------------------------------------------------------------
+r4857 | vlefevre | 2007-09-18 14:54:59 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+tests: updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4856 | vlefevre | 2007-09-18 14:52:23 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tisqrt.c
+
+tests: added tisqrt.c (test file for __gmpfr_isqrt internal function).
+
+------------------------------------------------------------------------
+r4855 | vlefevre | 2007-09-18 14:37:59 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: added __gmpfr_isqrt bug.
+
+------------------------------------------------------------------------
+r4854 | vlefevre | 2007-09-18 14:26:48 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/isqrt.c
+
+isqrt.c: fixed a cast and added a FIXME comment.
+
+------------------------------------------------------------------------
+r4853 | vlefevre | 2007-09-18 14:16:46 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/isqrt.c
+
+isqrt.c: GNU coding style.
+
+------------------------------------------------------------------------
+r4852 | vlefevre | 2007-09-18 12:21:14 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+sin.c: extend the exponent range.
+
+------------------------------------------------------------------------
+r4851 | vlefevre | 2007-09-18 12:14:15 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/sqr.c
+
+sqr.c: set the global inexact flag.
+
+------------------------------------------------------------------------
+r4850 | vlefevre | 2007-09-18 12:09:13 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+sqrt.c: avoid the exponent range extension.
+
+------------------------------------------------------------------------
+r4849 | vlefevre | 2007-09-18 12:02:07 +0000 (Tue, 18 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqr.c
+
+tsqr.c: added generic tests (shows that the inexact flag isn't set).
+
+------------------------------------------------------------------------
+r4848 | vlefevre | 2007-09-18 11:55:32 +0000 (Tue, 18 Sep 2007) | 3 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+sqrt.c: extend exponent range (this also fixes the fact that the global
+inexact flag wasn't set).
+
+------------------------------------------------------------------------
+r4847 | vlefevre | 2007-09-18 11:51:23 +0000 (Tue, 18 Sep 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+tsqrt.c: added generic tests (shows that the inexact flag isn't set,
+which is a bug reported by Guillaume Revy).
+
+------------------------------------------------------------------------
+r4846 | thevenyp | 2007-09-17 11:05:18 +0000 (Mon, 17 Sep 2007) | 1 line
+Changed paths:
+ M /trunk/modf.c
+ M /trunk/tests/tmodf.c
+
+modf.c: take care of user exponent range (possible underflow/overflow)
+------------------------------------------------------------------------
+r4845 | vlefevre | 2007-09-16 09:44:33 +0000 (Sun, 16 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tsin_cos.c: fixed the tiny() test.
+
+------------------------------------------------------------------------
+r4844 | vlefevre | 2007-09-16 09:43:04 +0000 (Sun, 16 Sep 2007) | 4 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+sin_cos.c: fixed the overflow and cancellation problems by using
+MPFR_FAST_COMPUTE_IF_SMALL_INPUT from the mpfr_sin and mpfr_cos
+functions (I'll fix the test later).
+
+------------------------------------------------------------------------
+r4843 | vlefevre | 2007-09-16 09:09:39 +0000 (Sun, 16 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+tsin_cos.c: added test on tiny values.
+
+------------------------------------------------------------------------
+r4842 | zimmerma | 2007-09-16 08:28:27 +0000 (Sun, 16 Sep 2007) | 4 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+Put back previous patch, now avoids overflow, and added more explanations.
+This is still not a definitive solution, but more efficient than 2.3.0
+in the case x is small.
+
+------------------------------------------------------------------------
+r4841 | vlefevre | 2007-09-15 08:30:36 +0000 (Sat, 15 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+Efficiency regression wasn't fixed correctly -> commented out the code.
+
+------------------------------------------------------------------------
+r4840 | zimmerma | 2007-09-15 08:15:15 +0000 (Sat, 15 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+fixed efficiency regression pointed out by Andreas Enge
+
+------------------------------------------------------------------------
+r4839 | zimmerma | 2007-09-13 19:08:25 +0000 (Thu, 13 Sep 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/sin_cos.c
+ M /trunk/tests/reuse.c
+
+fixed bug in mpfr_sin_cos found by Philippe: z (to save the cosine) was not
+allowed to be identical to the input x
+
+------------------------------------------------------------------------
+r4838 | thevenyp | 2007-09-13 16:48:49 +0000 (Thu, 13 Sep 2007) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ A /trunk/modf.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/sin_cos.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ A /trunk/tests/tmodf.c
+
+new function mpfr_modf and add restrictions on mpfr_sin_cos' variables
+------------------------------------------------------------------------
+r4837 | thevenyp | 2007-09-11 13:01:54 +0000 (Tue, 11 Sep 2007) | 1 line
+Changed paths:
+ M /trunk/tests/tadd_d.c
+ M /trunk/tests/td_div.c
+ M /trunk/tests/td_sub.c
+ M /trunk/tests/tdiv_d.c
+ M /trunk/tests/tmul_d.c
+ M /trunk/tests/tsub_d.c
+
+add some simple test cases in tadd_d.c and friends
+------------------------------------------------------------------------
+r4836 | vlefevre | 2007-09-10 07:55:58 +0000 (Mon, 10 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/prepare
+
+prepare: output a message saying that this script is obsolete.
+
+------------------------------------------------------------------------
+r4835 | zimmerma | 2007-09-09 19:08:17 +0000 (Sun, 09 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added restrictions to mpfr_add_d and friends
+
+------------------------------------------------------------------------
+r4834 | zimmerma | 2007-09-08 06:41:22 +0000 (Sat, 08 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed functions mpfr_add_d ... which are done
+
+------------------------------------------------------------------------
+r4833 | zimmerma | 2007-09-07 15:35:49 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+added Philippe Theveny
+
+------------------------------------------------------------------------
+r4832 | thevenyp | 2007-09-07 14:47:34 +0000 (Fri, 07 Sep 2007) | 1 line
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/add_d.c
+ A /trunk/d_div.c
+ A /trunk/d_sub.c
+ A /trunk/div_d.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/mul_d.c
+ A /trunk/sub_d.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tadd_d.c
+ A /trunk/tests/td_div.c
+ A /trunk/tests/td_sub.c
+ A /trunk/tests/tdiv_d.c
+ M /trunk/tests/tgeneric.c
+ A /trunk/tests/tmul_d.c
+ A /trunk/tests/tsub_d.c
+
+new arithmetic functions with a double argument
+------------------------------------------------------------------------
+r4831 | vlefevre | 2007-09-07 13:04:09 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+
+tacosh.c: added generic tests for the overflow case.
+
+------------------------------------------------------------------------
+r4830 | vlefevre | 2007-09-07 13:03:32 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+acosh.c: reduce the precision for ln(2); smaller error bound.
+
+------------------------------------------------------------------------
+r4829 | vlefevre | 2007-09-07 13:02:13 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: undefine some macros at the end.
+
+------------------------------------------------------------------------
+r4828 | vlefevre | 2007-09-07 12:30:36 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+acosh.c: fixed overflow bug.
+
+------------------------------------------------------------------------
+r4827 | vlefevre | 2007-09-07 11:54:53 +0000 (Fri, 07 Sep 2007) | 3 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/tests/tacosh.c
+
+acosh.c: mentioned bug due to overflow in mpfr_mul.
+tests/tacosh.c: added corresponding testcase (for 32-bit machines).
+
+------------------------------------------------------------------------
+r4826 | vlefevre | 2007-09-07 11:26:30 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+
+tacosh.c: use tests_default_random().
+
+------------------------------------------------------------------------
+r4825 | vlefevre | 2007-09-07 11:25:42 +0000 (Fri, 07 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: improved tests_default_random().
+
+------------------------------------------------------------------------
+r4823 | vlefevre | 2007-09-02 23:17:48 +0000 (Sun, 02 Sep 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: fixed get_patches rule.
+
+------------------------------------------------------------------------
+r4821 | vlefevre | 2007-09-02 22:29:28 +0000 (Sun, 02 Sep 2007) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: cd $(srcdir) before executing get_patches.sh (thanks to
+Daniel Jacobowitz for noticing this); for more information, see the
+note just before the get_patches.c rule.
+
+------------------------------------------------------------------------
+r4819 | vlefevre | 2007-08-31 17:09:15 +0000 (Fri, 31 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+acosh.c: added MPFR_UNLIKELY.
+
+------------------------------------------------------------------------
+r4817 | vlefevre | 2007-08-31 15:50:48 +0000 (Fri, 31 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+
+Added generic bad case tests.
+
+------------------------------------------------------------------------
+r4816 | vlefevre | 2007-08-31 15:34:23 +0000 (Fri, 31 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: deleted trailing spaces.
+
+------------------------------------------------------------------------
+r4815 | vlefevre | 2007-08-31 15:33:34 +0000 (Fri, 31 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: correction in section on mpfr_asinh: acosh -> asinh.
+
+------------------------------------------------------------------------
+r4814 | vlefevre | 2007-08-31 15:31:37 +0000 (Fri, 31 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/algorithms.tex
+ M /trunk/tests/tacosh.c
+
+Fixed bug in mpfr_acosh for arguments slightly larger than 1;
+updated algorithms.tex; fixed testcase.
+
+------------------------------------------------------------------------
+r4813 | vlefevre | 2007-08-31 13:06:59 +0000 (Fri, 31 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+
+tacosh.c: added testcase for bug in mpfr_acosh (assertion failure).
+
+------------------------------------------------------------------------
+r4812 | vlefevre | 2007-08-31 12:02:37 +0000 (Fri, 31 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tasin.c
+
+tasin.c: increased the number of generic tests.
+
+------------------------------------------------------------------------
+r4811 | vlefevre | 2007-08-31 11:33:53 +0000 (Fri, 31 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tzeta.c
+
+Improved generic tests by limiting the exponent range of the random
+numbers for some functions.
+
+------------------------------------------------------------------------
+r4810 | vlefevre | 2007-08-30 15:09:11 +0000 (Thu, 30 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tpow.c
+
+Generic tests: adjust the proportion of negative numbers returned
+by the random function in order to get fewer NaN cases.
+
+------------------------------------------------------------------------
+r4809 | vlefevre | 2007-08-30 14:26:54 +0000 (Thu, 30 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: output a warning when too few normal cases are tested
+(so that the random function can be improved...).
+
+------------------------------------------------------------------------
+r4808 | vlefevre | 2007-08-30 13:50:59 +0000 (Thu, 30 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: function split (for future addition).
+
+------------------------------------------------------------------------
+r4806 | vlefevre | 2007-08-30 10:37:17 +0000 (Thu, 30 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: updated copyright notice (for consistency).
+
+------------------------------------------------------------------------
+r4803 | vlefevre | 2007-08-30 10:29:54 +0000 (Thu, 30 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/mpfr-test.h
+
+Bug fix: added missing _MPFR_PROTO in mpfr-test.h.
+
+------------------------------------------------------------------------
+r4802 | vlefevre | 2007-08-30 10:12:22 +0000 (Thu, 30 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: updated description line.
+
+------------------------------------------------------------------------
+r4800 | vlefevre | 2007-08-29 19:59:07 +0000 (Wed, 29 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/acinclude.m4
+ M /trunk/comparisons.c
+ M /trunk/exp.c
+ M /trunk/faq.xsl
+ M /trunk/neg.c
+
+Updated copyright notice (for an unknown reason, some files were missing
+from the change done in r4350).
+
+------------------------------------------------------------------------
+r4795 | vlefevre | 2007-08-28 15:37:59 +0000 (Tue, 28 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/atan2.c
+
+atan2.c: as we supposed some property, let's add an assertion (which
+can be evaluated at compile time).
+
+------------------------------------------------------------------------
+r4794 | vlefevre | 2007-08-28 15:27:17 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+
+atan2.c: improved comment.
+
+------------------------------------------------------------------------
+r4793 | vlefevre | 2007-08-28 15:24:27 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+
+atan2.c: completed the underflow case.
+
+------------------------------------------------------------------------
+r4792 | vlefevre | 2007-08-28 14:19:37 +0000 (Tue, 28 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/atan2.c
+
+atan2.c: fixed the underflow case except in GMP_RNDN with
+2^(-emin-2) < |y/x| < 2^(-emin-1).
+
+------------------------------------------------------------------------
+r4791 | vlefevre | 2007-08-28 14:18:35 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tatan.c: added small-value tests in the other rounding modes.
+
+------------------------------------------------------------------------
+r4790 | vlefevre | 2007-08-28 13:51:04 +0000 (Tue, 28 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/atan2.c
+
+atan2.c: implemented the special case where x is positive and y/x is
+computed exactly (solving the underflow problems in this case).
+
+------------------------------------------------------------------------
+r4789 | vlefevre | 2007-08-28 13:49:02 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tatan.c: added a similar test, but with an exact division result.
+
+------------------------------------------------------------------------
+r4788 | vlefevre | 2007-08-28 13:35:40 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tatan.c: fixed test.
+
+------------------------------------------------------------------------
+r4786 | vlefevre | 2007-08-28 13:16:16 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a paragraph concerning Ziv loops.
+
+------------------------------------------------------------------------
+r4785 | vlefevre | 2007-08-28 09:34:36 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tatan.c: updated comment.
+
+------------------------------------------------------------------------
+r4784 | vlefevre | 2007-08-28 08:59:09 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tatan.c: extended the latest testcase to any platform (e.g. 64 bits).
+
+------------------------------------------------------------------------
+r4783 | vlefevre | 2007-08-28 08:49:00 +0000 (Tue, 28 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+tatan.c: added testcase from a bug reported by Christopher Creutzig.
+
+------------------------------------------------------------------------
+r4781 | vlefevre | 2007-08-27 14:27:34 +0000 (Mon, 27 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk
+ M /trunk/tests
+
+Updated svn:ignore properties.
+
+------------------------------------------------------------------------
+r4779 | vlefevre | 2007-08-27 11:55:00 +0000 (Mon, 27 Aug 2007) | 7 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update:
+ * The question numbers are now hardcoded instead of being generated
+ with CSS rules.
+ * Added the list of questions at the top.
+ * CSS styles: a grey bar is displayed on the left of the target answer
+ (if the browser supports the ":target" pseudo-class from CSS3).
+
+------------------------------------------------------------------------
+r4778 | vlefevre | 2007-08-27 10:56:11 +0000 (Mon, 27 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/faq.xsl
+
+faq.xsl: added a comment.
+
+------------------------------------------------------------------------
+r4776 | vlefevre | 2007-08-27 10:44:17 +0000 (Mon, 27 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+
+------------------------------------------------------------------------
+r4774 | vlefevre | 2007-08-22 15:51:41 +0000 (Wed, 22 Aug 2007) | 6 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: added another warning concerning the --with-gmp options.
+For instance, under Linux, "cpp -I/usr/include -v < /dev/null" says:
+ ignoring duplicate directory "/usr/include"
+ as it is a non-system directory that duplicates a system directory
+and does not modify the include search path as wanted.
+
+------------------------------------------------------------------------
+r4772 | vlefevre | 2007-08-15 17:29:44 +0000 (Wed, 15 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: improved description of mpfr_setsign.
+
+------------------------------------------------------------------------
+r4770 | vlefevre | 2007-08-14 11:41:37 +0000 (Tue, 14 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Added to NEWS: Thread-safe support with Microsoft Visual compiler.
+
+------------------------------------------------------------------------
+r4768 | vlefevre | 2007-08-14 11:34:22 +0000 (Tue, 14 Aug 2007) | 5 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: if MPFR_USE_THREAD_SAFE is defined (--enable-thread-safe):
+ * Added support for MSC (thanks to Brian Gladman).
+ * Define MPFR_THREAD_ATTR even after #error to make the error more
+ visible (see comment in the source).
+
+------------------------------------------------------------------------
+r4765 | vlefevre | 2007-08-13 10:41:51 +0000 (Mon, 13 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tstckintc.c
+
+tstckintc.c: fixed bus error on Solaris (the address of Buffer was not
+a multiple of 4).
+
+------------------------------------------------------------------------
+r4761 | vlefevre | 2007-08-13 05:05:39 +0000 (Mon, 13 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: new functions mpfr_signbit, mpfr_setsign, mpfr_copysign.
+
+------------------------------------------------------------------------
+r4759 | vlefevre | 2007-08-13 04:53:32 +0000 (Mon, 13 Aug 2007) | 8 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ M /trunk/copysign.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/setsign.c
+ A /trunk/signbit.c
+ M /trunk/tests/tcopysign.c
+
+Implemented changes suggested in
+<https://sympa.inria.fr/sympa/arc/mpfr/2007-07/msg00123.html>.
+* Made mpfr_copysign() like the corresponding function in IEEE 754
+ (was an internal function until now).
+* Added mpfr_signbit() and mpfr_setsign().
+* Documented these three functions.
+* Updated TODO.
+
+------------------------------------------------------------------------
+r4757 | vlefevre | 2007-08-13 04:34:33 +0000 (Mon, 13 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/jyn_asympt.c
+ M /trunk/remquo.c
+ M /trunk/tests/texp10.c
+ M /trunk/tests/tl2b.c
+
+Make svn properties consistent.
+
+------------------------------------------------------------------------
+r4752 | vlefevre | 2007-08-11 22:41:05 +0000 (Sat, 11 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+Fixed mpfr_inits and mpfr_clears calls in tests/tatan.c.
+
+------------------------------------------------------------------------
+r4751 | vlefevre | 2007-08-11 22:38:54 +0000 (Sat, 11 Aug 2007) | 3 lines
+Changed paths:
+ A /trunk/check_inits_clears
+
+Added check_inits_clears Perl script to check that a cast is performed
+for the last argument of mpfr_inits, mpfr_inits2 and mpfr_clears.
+
+------------------------------------------------------------------------
+r4747 | vlefevre | 2007-08-10 02:19:57 +0000 (Fri, 10 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version to 2.4.0-dev.
+
+------------------------------------------------------------------------
+r4744 | vlefevre | 2007-08-10 02:11:05 +0000 (Fri, 10 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS update.
+
+------------------------------------------------------------------------
+r4743 | vlefevre | 2007-08-10 02:06:56 +0000 (Fri, 10 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update with "TZ=UTC svn log -v".
+
+------------------------------------------------------------------------
+r4742 | vlefevre | 2007-08-10 01:41:01 +0000 (Fri, 10 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/asinh.c
+
+asinh.c: fixed assertion failure (see test 4 in tasinh.c, added
+in r4740), that was due to an exception.
+
+------------------------------------------------------------------------
+r4741 | vlefevre | 2007-08-10 01:38:25 +0000 (Fri, 10 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tasinh.c
+
+tasinh.c: fixed test.
+
+------------------------------------------------------------------------
+r4740 | vlefevre | 2007-08-10 01:18:46 +0000 (Fri, 10 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tasinh.c
+
+tasinh.c: added worst case that yields an assertion failure.
+
+------------------------------------------------------------------------
+r4739 | vlefevre | 2007-08-09 17:21:32 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/cbrt
+ M /trunk/tests/tcbrt.c
+
+Added data_check support to cbrt.
+
+------------------------------------------------------------------------
+r4738 | vlefevre | 2007-08-09 15:45:47 +0000 (Thu, 09 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/log.c
+
+log.c: fixed assertion failure (see test x_near_one in tlog.c, added
+in r4736), that was due to an exception.
+
+------------------------------------------------------------------------
+r4737 | vlefevre | 2007-08-09 12:12:56 +0000 (Thu, 09 Aug 2007) | 6 lines
+Changed paths:
+ M /trunk/pow.c
+
+pow.c: added MPFR_SMALL_INPUT_AFTER_SAVE_EXPO for the case where
+|y * log(x)| is very small (I can't really test because this code
+currently fails due to a bug in mpfr_log: see test x_near_one
+added to tlog.c as changeset 4736; this bug is also present in
+the 2.2 branch).
+
+------------------------------------------------------------------------
+r4736 | vlefevre | 2007-08-09 11:58:59 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+tlog.c: added a test leading to an assertion failure in mpfr_log.
+
+------------------------------------------------------------------------
+r4735 | vlefevre | 2007-08-09 11:45:19 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: added a test where x is close to 1.
+
+------------------------------------------------------------------------
+r4734 | vlefevre | 2007-08-09 11:02:28 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/exp10
+
+Added empty file tests/data/exp10 to avoid an error with -dev versions.
+
+------------------------------------------------------------------------
+r4733 | vlefevre | 2007-08-09 10:18:50 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/round_near_x.c
+
+Added a TODO concerning the description of mpfr_round_near_x.
+
+------------------------------------------------------------------------
+r4732 | vlefevre | 2007-08-09 09:48:59 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/expm1
+ A /trunk/tests/data/log1p
+ A /trunk/tests/data/log2
+
+Added empty files in tests/data to avoid errors with -dev versions.
+
+------------------------------------------------------------------------
+r4731 | vlefevre | 2007-08-09 09:39:43 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+mpfr_ui_pow fix: added a MPFR_SAVE_EXPO_UPDATE_FLAGS.
+
+------------------------------------------------------------------------
+r4730 | vlefevre | 2007-08-09 02:52:27 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/texp10.c
+
+Added texp10.c (texp10 currently fails).
+
+------------------------------------------------------------------------
+r4729 | vlefevre | 2007-08-09 02:26:33 +0000 (Thu, 09 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/texp2.c
+
+texp2.c: reformat and added some tests which were missing.
+
+------------------------------------------------------------------------
+r4728 | vlefevre | 2007-08-08 15:12:56 +0000 (Wed, 08 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tl2b.c
+ M /trunk/tests/tremquo.c
+
+Updated svn:keywords and svn:eol-style properties in tests.
+
+------------------------------------------------------------------------
+r4727 | vlefevre | 2007-08-08 15:11:15 +0000 (Wed, 08 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+
+Added data_check calls to texpm1, tlog1p and tlog2.
+
+------------------------------------------------------------------------
+r4726 | vlefevre | 2007-08-08 14:37:28 +0000 (Wed, 08 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: in data_check(), mode 'Z', do not test GMP_RNDN if
+the precision for the directed rounding modes is MPFR_PREC_MIN.
+
+------------------------------------------------------------------------
+r4725 | vlefevre | 2007-08-04 23:13:52 +0000 (Sat, 04 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: more on mpfr_sin (and mpfr_cos).
+
+------------------------------------------------------------------------
+r4724 | vlefevre | 2007-08-04 22:58:01 +0000 (Sat, 04 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: update concerning sin/cos/tan.
+
+------------------------------------------------------------------------
+r4723 | vlefevre | 2007-08-03 02:45:32 +0000 (Fri, 03 Aug 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: in data_check(), check the 4 rounding modes if rnd is 'Z'
+(in order to test the worst cases).
+
+------------------------------------------------------------------------
+r4722 | vlefevre | 2007-08-03 01:30:20 +0000 (Fri, 03 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Fixed coding style (for ansi2knr in particular).
+
+------------------------------------------------------------------------
+r4721 | vlefevre | 2007-08-02 10:19:44 +0000 (Thu, 02 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: added a comment about "get_patches.c".
+
+------------------------------------------------------------------------
+r4720 | vlefevre | 2007-08-02 10:07:48 +0000 (Thu, 02 Aug 2007) | 8 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+No longer set "CLEANFILES = get_patches.c" in Makefile.am so that a
+"make clean" doesn't remove the get_patches.c file, as rebuilding it
+needs a Unix shell (and some standard utilities). Anyway the update
+of this file should be regarded as part of the patch process, then
+this file is just like any other .c files. Note: "make dist" includes
+this file in the archives, so that concerning the build, everything
+is like before as long as no patches are applied.
+
+------------------------------------------------------------------------
+r4719 | zimmerma | 2007-08-01 18:07:32 +0000 (Wed, 01 Aug 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item about sNaN/qNaN
+
+------------------------------------------------------------------------
+r4718 | vlefevre | 2007-07-31 14:28:20 +0000 (Tue, 31 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/copysign.c
+
+copysign.c: reformat, updated comment (but this function is still not
+documented in mpfr.texi).
+
+------------------------------------------------------------------------
+r4717 | vlefevre | 2007-07-31 14:12:15 +0000 (Tue, 31 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version back to 2.3.0-dev since the 2.3 branch will be recreated
+from the trunk (too many changes!).
+
+------------------------------------------------------------------------
+r4716 | vlefevre | 2007-07-31 13:34:37 +0000 (Tue, 31 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tl2b.c
+
+tl2b.c: enable output even when the constants are correct.
+
+------------------------------------------------------------------------
+r4715 | vlefevre | 2007-07-31 13:25:24 +0000 (Tue, 31 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk
+
+Added get_patches.c to the svn:ignore property, as this file is
+generated.
+
+------------------------------------------------------------------------
+r4714 | vlefevre | 2007-07-31 13:23:37 +0000 (Tue, 31 Jul 2007) | 13 lines
+Changed paths:
+ M /trunk/free_cache.c
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tl2b.c
+
+Replaced l2b cache by constants, as suggested by Patrick Pelissier,
+to avoid efficiency problems with the stack interface and heavily
+threaded applications.
+ * Added tests/tl2b.c to generate / check the constants.
+ * tests/Makefile.am: added tl2b to check_PROGRAMS.
+ * tests directory: added tl2b to the svn:ignore property.
+ * mpfr-impl.h: updated the __gmpfr_l2b declaration.
+ * free_cache.c: disabled free_l2b (since there's no longer a cache).
+ * get_str.c: added the code generated by tl2b; for the bootstrap, one
+ can just write:
+ const __mpfr_struct __gmpfr_l2b[BASE_MAX-1][2] = { { { 0 } } };
+ Removed the code (in ceil_mul) that computed these constants.
+
+------------------------------------------------------------------------
+r4713 | vlefevre | 2007-07-30 22:37:30 +0000 (Mon, 30 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the documentation of the mpfr_get_d function family.
+
+------------------------------------------------------------------------
+r4712 | vlefevre | 2007-07-30 11:12:45 +0000 (Mon, 30 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/TODO
+
+Patch tracking: updated README.dev and TODO files.
+
+------------------------------------------------------------------------
+r4711 | vlefevre | 2007-07-30 10:45:01 +0000 (Mon, 30 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ A /trunk/PATCHES
+ A /trunk/get_patches.sh
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Added support for tracking applied patches with new function
+mpfr_get_patches().
+
+------------------------------------------------------------------------
+r4710 | vlefevre | 2007-07-30 09:41:55 +0000 (Mon, 30 Jul 2007) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the example concerning mpfr_get_version() vs
+MPFR_VERSION_STRING ("Warning" instead of "Error", make sure that
+the example fits on 80 columns in the info file).
+
+------------------------------------------------------------------------
+r4709 | vlefevre | 2007-07-30 09:37:06 +0000 (Mon, 30 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated description of mpfr_get_version().
+
+------------------------------------------------------------------------
+r4708 | vlefevre | 2007-07-30 09:31:58 +0000 (Mon, 30 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated description of mpfr_get_version().
+
+------------------------------------------------------------------------
+r4707 | zimmerma | 2007-07-28 15:03:05 +0000 (Sat, 28 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added files that are not 100% covered by tests
+
+------------------------------------------------------------------------
+r4706 | vlefevre | 2007-07-27 22:04:24 +0000 (Fri, 27 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/coverage
+
+coverage: added --disable-shared --enable-static to configure.
+
+------------------------------------------------------------------------
+r4705 | vlefevre | 2007-07-27 21:59:04 +0000 (Fri, 27 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: added more casts for g++.
+
+------------------------------------------------------------------------
+r4704 | vlefevre | 2007-07-27 21:54:22 +0000 (Fri, 27 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Reformat.
+
+------------------------------------------------------------------------
+r4703 | vlefevre | 2007-07-27 21:48:03 +0000 (Fri, 27 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/const_log2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+
+Applied patch from Patrick to be able to build MPFR with g++.
+
+------------------------------------------------------------------------
+r4702 | zimmerma | 2007-07-26 12:02:24 +0000 (Thu, 26 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+added default thresholds for Core 2
+
+------------------------------------------------------------------------
+r4701 | vlefevre | 2007-07-25 15:34:52 +0000 (Wed, 25 Jul 2007) | 5 lines
+Changed paths:
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+
+No longer use MPFR_CHECK_ALL in tests. In '-dev' versions, assume
+that the data files exist and return an error whenever a file cannot
+be opened. In the other versions, return silently if the file cannot
+be opened.
+
+------------------------------------------------------------------------
+r4700 | vlefevre | 2007-07-25 15:18:45 +0000 (Wed, 25 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ D /trunk/mpfr-test.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/mpfr-test.h (from /trunk/mpfr-test.h:4698)
+
+Moved mpfr-test.h into the tests directory.
+
+------------------------------------------------------------------------
+r4699 | zimmerma | 2007-07-25 15:15:55 +0000 (Wed, 25 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+fixed "efficiency bug" (argument reduction was broken)
+
+------------------------------------------------------------------------
+r4698 | vlefevre | 2007-07-25 14:45:13 +0000 (Wed, 25 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: in data_check(), made whitespace skipping consistent and
+check that the result value is immediately followed by a \n.
+
+------------------------------------------------------------------------
+r4697 | vlefevre | 2007-07-25 14:02:23 +0000 (Wed, 25 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+[tests.c] Fixed some types (the result of getc() is not necessarily
+representable in a char).
+
+------------------------------------------------------------------------
+r4696 | vlefevre | 2007-07-25 13:45:10 +0000 (Wed, 25 Jul 2007) | 5 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests.c: changes in the error messages (BTW, we decided to output
+everything to stdout for consistency, even though messages for
+assertion failure are written to stderr) and replaced an abort ()
+by an exit (1).
+
+------------------------------------------------------------------------
+r4695 | vlefevre | 2007-07-25 10:58:54 +0000 (Wed, 25 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/jyn_asympt.c
+ M /trunk/tests/tests.c
+
+Delete trailing spaces.
+
+------------------------------------------------------------------------
+r4694 | zimmerma | 2007-07-25 10:01:45 +0000 (Wed, 25 Jul 2007) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/jn.c
+ A /trunk/jyn_asympt.c
+ M /trunk/tests/tests.c
+ M /trunk/yn.c
+
+jyn_asympt.c: new common file for asymptotic expansion in jn/yn
+tests/tests.c: print precisions in case of failure
+jn.c: now use jyn_asympt.c
+yn.c: now implement asymptotic expansion (jyn_asympt.c)
+
+------------------------------------------------------------------------
+r4693 | zimmerma | 2007-07-25 09:58:31 +0000 (Wed, 25 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/data/y0
+ M /trunk/tests/data/y1
+
+fixed more wrong entries in Gonnet's test suite
+
+------------------------------------------------------------------------
+r4692 | zimmerma | 2007-07-24 15:12:39 +0000 (Tue, 24 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+
+contribution of first neglected term to error was wrong
+
+------------------------------------------------------------------------
+r4691 | zimmerma | 2007-07-24 15:08:51 +0000 (Tue, 24 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/data/y0
+
+fixed wrong entry (not enough precision was used in Maple)
+
+------------------------------------------------------------------------
+r4690 | zimmerma | 2007-07-24 13:42:35 +0000 (Tue, 24 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/jn.c
+ M /trunk/tests/data/j0
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+
+implemented asymptotic expansion for large argument in j0/j1/jn
+
+------------------------------------------------------------------------
+r4689 | zimmerma | 2007-07-20 16:12:03 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+define MPFR_CHECK_ALL for nightly tests
+
+------------------------------------------------------------------------
+r4688 | zimmerma | 2007-07-20 16:11:15 +0000 (Fri, 20 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tlgamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+
+Added code to check mpfr against Gonnet's tables when the environment variable
+MPFR_CHECK_ALL is defined (some table entries were checked by MuPAD)
+
+------------------------------------------------------------------------
+r4687 | zimmerma | 2007-07-20 16:04:38 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/data/gonnet.mpl
+
+added comment
+
+------------------------------------------------------------------------
+r4686 | zimmerma | 2007-07-20 15:58:20 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/y0
+ A /trunk/tests/data/y1
+
+test data files mpfr mpfr_y0 and mpfr_y1, ***not*** checked with MuPAD
+
+------------------------------------------------------------------------
+r4685 | zimmerma | 2007-07-20 15:55:03 +0000 (Fri, 20 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/data/CheckData.mu
+
+added auxiliary MuPAD functions
+improved Ziv's strategy: add half of DIGITS each time
+
+------------------------------------------------------------------------
+r4684 | zimmerma | 2007-07-20 15:52:52 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/tanh
+
+test data file for mpfr_tanh, checked by MuPAD
+
+------------------------------------------------------------------------
+r4683 | zimmerma | 2007-07-20 15:51:28 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/tan
+
+test data file for mpfr_tan, checked with MuPAD (except 3 indicated entries)
+
+------------------------------------------------------------------------
+r4682 | zimmerma | 2007-07-20 15:39:23 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/sqrt
+
+test data file for mpfr_sqrt, checked with MuPAD
+
+------------------------------------------------------------------------
+r4681 | zimmerma | 2007-07-20 15:28:32 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/sinh
+
+test data file for mpfr_sinh, checked by MuPAD (except indicated lines)
+
+------------------------------------------------------------------------
+r4680 | zimmerma | 2007-07-20 15:17:58 +0000 (Fri, 20 Jul 2007) | 3 lines
+Changed paths:
+ A /trunk/tests/data/sin
+
+test data file for mpfr_sin, checked by MuPAD (except tiny inputs indicated
+in file)
+
+------------------------------------------------------------------------
+r4679 | zimmerma | 2007-07-20 13:45:40 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/pow275
+
+test data file for x^(11/4), checked with MuPAD
+
+------------------------------------------------------------------------
+r4678 | zimmerma | 2007-07-20 13:41:01 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/data/log10
+
+finally, I was able to check it with MuPAD
+
+------------------------------------------------------------------------
+r4677 | zimmerma | 2007-07-20 13:36:16 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/exp2
+
+test data file for 2^x, checked with MuPAD
+
+------------------------------------------------------------------------
+r4676 | zimmerma | 2007-07-20 13:28:30 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/mulpi
+
+test data file for Pi*x, checked with MuPAD
+
+------------------------------------------------------------------------
+r4675 | zimmerma | 2007-07-20 12:56:27 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/log
+
+test data file for mpfr_log, checked with MuPAD
+
+------------------------------------------------------------------------
+r4674 | zimmerma | 2007-07-20 12:54:43 +0000 (Fri, 20 Jul 2007) | 3 lines
+Changed paths:
+ A /trunk/tests/data/j0
+ A /trunk/tests/data/j1
+ A /trunk/tests/data/lgamma
+ A /trunk/tests/data/log10
+
+test data files for mpfr_j0, mpfr_j1, mpfr_lgamma, mpfr_log10,
+***not*** tested with MuPAD (not Dom::Interval interface)
+
+------------------------------------------------------------------------
+r4673 | zimmerma | 2007-07-20 12:52:25 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/inv
+
+test data file for 1/x, i.e., mpfr_ui_div(1,x), checked with MuPAD
+
+------------------------------------------------------------------------
+r4672 | zimmerma | 2007-07-20 12:45:10 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/gamma
+
+test data file for mpfr_gamma, ***not*** checked by MuPAD
+
+------------------------------------------------------------------------
+r4671 | zimmerma | 2007-07-20 12:44:09 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/exp
+
+test data file for mpfr_exp, checked with MuPAD
+
+------------------------------------------------------------------------
+r4670 | zimmerma | 2007-07-20 12:43:34 +0000 (Fri, 20 Jul 2007) | 3 lines
+Changed paths:
+ A /trunk/tests/data/erf
+ A /trunk/tests/data/erfc
+
+test data files for erf and erfc (not checked by MuPAD, since Dom::Interval
+does not have an interface for those functions in MuPAD 3.2.0)
+
+------------------------------------------------------------------------
+r4669 | zimmerma | 2007-07-20 12:35:54 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/cosh
+
+test data file for mpfr_cosh, checked with MuPAD
+
+------------------------------------------------------------------------
+r4668 | zimmerma | 2007-07-20 12:33:31 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/cos
+
+test data file for mpfr_cos, checked by MuPAD
+
+------------------------------------------------------------------------
+r4667 | zimmerma | 2007-07-20 12:02:36 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/atanh
+
+test data file for mpfr_atanh, checked with MuPAD
+
+------------------------------------------------------------------------
+r4666 | zimmerma | 2007-07-20 11:42:54 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/atan
+
+test data file for atan, checked with MuPAD
+
+------------------------------------------------------------------------
+r4665 | zimmerma | 2007-07-20 11:06:48 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/asinh
+
+test file for mpfr_asinh, checked with MuPAD
+
+------------------------------------------------------------------------
+r4664 | zimmerma | 2007-07-20 11:04:14 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/asin
+
+data file for mpfr_asin, checked with MuPAD using CheckData.mu
+
+------------------------------------------------------------------------
+r4663 | zimmerma | 2007-07-20 10:13:10 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/acosh
+
+data file for mpfr_acosh, checked with MuPAD using CheckData.mu
+
+------------------------------------------------------------------------
+r4662 | zimmerma | 2007-07-20 10:12:37 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/data/CheckData.mu
+
+improved output
+
+------------------------------------------------------------------------
+r4661 | zimmerma | 2007-07-20 10:05:11 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data/CheckData.mu
+
+MuPAD file to check a data file
+
+------------------------------------------------------------------------
+r4658 | vlefevre | 2007-07-20 00:18:14 +0000 (Fri, 20 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/free_cache.c
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+
+Renamed mpfr_l2b as __gmpfr_l2b for consistency.
+
+------------------------------------------------------------------------
+r4657 | zimmerma | 2007-07-19 19:49:15 +0000 (Thu, 19 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-longlong.h
+
+patch from Brian Gladman to build mpfr.dll
+
+------------------------------------------------------------------------
+r4656 | zimmerma | 2007-07-19 16:07:58 +0000 (Thu, 19 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/data/acos
+ M /trunk/tests/data/gonnet.mpl
+
+added copyright information about Gonnet's package
+
+------------------------------------------------------------------------
+r4655 | zimmerma | 2007-07-19 16:03:38 +0000 (Thu, 19 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+modified data_check() to allow comment lines starting with #
+
+------------------------------------------------------------------------
+r4654 | zimmerma | 2007-07-19 14:55:47 +0000 (Thu, 19 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tests.c
+
+new (experimental) mechanism to check data files (see example in tacos.c)
+
+------------------------------------------------------------------------
+r4653 | zimmerma | 2007-07-19 14:54:49 +0000 (Thu, 19 Jul 2007) | 2 lines
+Changed paths:
+ A /trunk/tests/data
+ A /trunk/tests/data/acos
+ A /trunk/tests/data/gonnet.mpl
+
+new directory for test data
+
+------------------------------------------------------------------------
+r4652 | zimmerma | 2007-07-19 10:52:00 +0000 (Thu, 19 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+added test for inexact flag (bug fixed in r4630)
+
+------------------------------------------------------------------------
+r4651 | vlefevre | 2007-07-18 23:09:35 +0000 (Wed, 18 Jul 2007) | 4 lines
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/erfc.c
+
+erfc.c, atan2.c: added missing "MPFR_SAVE_EXPO_FREE (expo);" before
+ "return mpfr_underflow (...);".
+erfc.c: replaced a goto by an else.
+
+------------------------------------------------------------------------
+r4650 | zimmerma | 2007-07-18 16:24:08 +0000 (Wed, 18 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+
+now deal with underflow in y/x (remains to deal with overflow)
+
+------------------------------------------------------------------------
+r4649 | zimmerma | 2007-07-18 16:19:31 +0000 (Wed, 18 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+now can specify output base when argc > 1
+
+------------------------------------------------------------------------
+r4648 | zimmerma | 2007-07-18 16:18:14 +0000 (Wed, 18 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tlgamma.c
+
+MPFR_EQUAL -> mpfr_equal_p
+
+------------------------------------------------------------------------
+r4647 | zimmerma | 2007-07-18 15:48:57 +0000 (Wed, 18 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/erfc.c
+ M /trunk/tests/terf.c
+
+fixed problem with erfc() near underflow region
+
+------------------------------------------------------------------------
+r4646 | zimmerma | 2007-07-18 13:51:07 +0000 (Wed, 18 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/tests/tatan.c
+
+atan2.c: quick-and-dirty fix for atan2(y,1)
+tests/tatan.c: fix tests from Christopher [x and y were interchanged]
+
+------------------------------------------------------------------------
+r4645 | zimmerma | 2007-07-18 12:19:22 +0000 (Wed, 18 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+added test from Ch. Creutzig
+
+------------------------------------------------------------------------
+r4644 | zimmerma | 2007-07-18 08:23:30 +0000 (Wed, 18 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+apply patch suggested in bug #3604
+
+------------------------------------------------------------------------
+r4643 | zimmerma | 2007-07-17 14:30:00 +0000 (Tue, 17 Jul 2007) | 4 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlgamma.c
+
+previous bug fix for tiny negative inputs in mpfr_lgamma was incorrect:
+result was NaN, but this was not detected by the tests since mpfr_cmp (y, NaN)
+is always true!
+
+------------------------------------------------------------------------
+r4642 | vlefevre | 2007-07-17 13:14:21 +0000 (Tue, 17 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/strtofr.c
+
+Added comments and fixed an indentation bug.
+
+------------------------------------------------------------------------
+r4641 | zimmerma | 2007-07-17 06:26:24 +0000 (Tue, 17 Jul 2007) | 4 lines
+Changed paths:
+ M /trunk/cos.c
+
+in reconstruction after computation of cos(x/2^k) for reduced argument,
+it may be that cos(x) is zero to the working precision. Then restart Ziv's
+algorithm with a larger precision.
+
+------------------------------------------------------------------------
+r4640 | zimmerma | 2007-07-16 12:51:17 +0000 (Mon, 16 Jul 2007) | 4 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlgamma.c
+
+lngamma.c: fix for small inputs
+tlgamma.c: added more tests from Kaveh Ghazi
+
+
+------------------------------------------------------------------------
+r4639 | zimmerma | 2007-07-16 11:22:13 +0000 (Mon, 16 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/ttan.c
+
+sin_cos.c: 2nd arg of 1st mpfr_can_round call was wrong
+ttan.c: fixed wrong reference value
+
+------------------------------------------------------------------------
+r4638 | zimmerma | 2007-07-16 06:58:08 +0000 (Mon, 16 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added comment about sinpi, etc.
+
+------------------------------------------------------------------------
+r4637 | zimmerma | 2007-07-15 09:09:10 +0000 (Sun, 15 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/ttan.c
+
+added new test, and re-enabled test that was too slow
+
+------------------------------------------------------------------------
+r4636 | zimmerma | 2007-07-14 07:30:37 +0000 (Sat, 14 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+removed MPFR_CHECK_TINY, added MPFR_CHECK_MAX
+
+------------------------------------------------------------------------
+r4635 | vlefevre | 2007-07-10 08:52:50 +0000 (Tue, 10 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+terf.c: added testcase for bug reported by Christopher Creutzig.
+
+------------------------------------------------------------------------
+r4633 | vlefevre | 2007-07-09 11:41:04 +0000 (Mon, 09 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+
+Removed a #include that was probably added by mistake in r2590.
+
+------------------------------------------------------------------------
+r4632 | vlefevre | 2007-07-09 11:39:29 +0000 (Mon, 09 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/abort_prec_max.c
+ M /trunk/cos.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/fma.c
+ M /trunk/fms.c
+ M /trunk/free_cache.c
+ M /trunk/get_d64.c
+ M /trunk/get_si.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/init2.c
+ M /trunk/inp_str.c
+ M /trunk/logging.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-impl.h
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/remquo.c
+ M /trunk/set_d64.c
+ M /trunk/set_uj.c
+ M /trunk/strtofr.c
+ M /trunk/tuneup.c
+ M /trunk/ui_pow.c
+ M /trunk/zeta.c
+
+<stdio.h> and <limits.h> are now included unconditionally in mpfr-impl.h
+(removed their inclusion from the C files for consistency).
+
+------------------------------------------------------------------------
+r4630 | zimmerma | 2007-07-04 10:07:31 +0000 (Wed, 04 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+ternary flag was wrong in case s=1 or -1 and rounding up/nearest
+
+------------------------------------------------------------------------
+r4629 | zimmerma | 2007-07-04 09:32:23 +0000 (Wed, 04 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/tan.c
+
+updated algorithms.tex with new additive argument reduction for sin/cos/tan
+
+------------------------------------------------------------------------
+r4628 | vlefevre | 2007-07-03 23:35:05 +0000 (Tue, 03 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+lngamma.c: reformat and replaced mpfr_cmp(...) == 0 by mpfr_equal_p.
+
+------------------------------------------------------------------------
+r4626 | zimmerma | 2007-07-03 19:12:40 +0000 (Tue, 03 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/free_cache.c
+
+changed stdlib to stdio for NULL (see README.dev)
+
+------------------------------------------------------------------------
+r4625 | zimmerma | 2007-07-03 19:10:33 +0000 (Tue, 03 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlgamma.c
+
+fixed bug in tlgamma and added test (need to implement Ziv's strategy in
+tiny case)
+
+------------------------------------------------------------------------
+r4624 | zimmerma | 2007-07-03 18:45:28 +0000 (Tue, 03 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/free_cache.c
+
+added missing include
+
+------------------------------------------------------------------------
+r4622 | vlefevre | 2007-07-03 16:11:39 +0000 (Tue, 03 Jul 2007) | 7 lines
+Changed paths:
+ M /trunk/free_cache.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tests.c
+
+Fixed the bug reported by David Billinghurst to the MPFR mailing-list
+on 2007-07-03 (memory leaks under some conditions):
+ * moved the free_l2b() function from tests/tests.c to free_cache.c;
+ * mpfr_free_cache() (from free_cache.c) now calls free_l2b();
+ * as a consequence, no longer call free_l2b() in tests_end_mpfr();
+ * documented the behavior in mpfr.texi (under mpfr_free_cache).
+
+------------------------------------------------------------------------
+r4620 | vlefevre | 2007-07-03 15:05:01 +0000 (Tue, 03 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tj0.c
+
+tj0.c: added testcase from Sisyphus (assertion failed).
+
+------------------------------------------------------------------------
+r4618 | vlefevre | 2007-07-03 13:03:22 +0000 (Tue, 03 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: explain how to test the library interface compatibility.
+
+------------------------------------------------------------------------
+r4616 | vlefevre | 2007-07-02 23:30:52 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: mentions patch-libtool and how to apply it.
+
+------------------------------------------------------------------------
+r4615 | vlefevre | 2007-07-02 23:26:01 +0000 (Mon, 02 Jul 2007) | 3 lines
+Changed paths:
+ A /trunk/patch-libtool
+
+Added patch-libtool (patch for aclocal.m4 and configure that comes from
+<http://thread.gmane.org/gmane.comp.gnu.libtool.bugs/5771/focus=5776>).
+
+------------------------------------------------------------------------
+r4614 | vlefevre | 2007-07-02 12:17:08 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: mention that the shared library is now enabled by default on 2.3.
+
+------------------------------------------------------------------------
+r4610 | vlefevre | 2007-07-02 10:44:17 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated item 2 of "To make a release".
+
+------------------------------------------------------------------------
+r4608 | vlefevre | 2007-07-02 10:39:46 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.texi
+
+Reformat.
+
+------------------------------------------------------------------------
+r4607 | vlefevre | 2007-07-02 00:41:32 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version to 2.4.0-dev.
+
+------------------------------------------------------------------------
+r4605 | vlefevre | 2007-07-02 00:32:27 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+ChangeLog update.
+
+------------------------------------------------------------------------
+r4604 | vlefevre | 2007-07-02 00:31:13 +0000 (Mon, 02 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: update.
+
+------------------------------------------------------------------------
+r4603 | vlefevre | 2007-07-01 23:17:57 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: updated comment concerning -version-info.
+
+------------------------------------------------------------------------
+r4602 | vlefevre | 2007-07-01 23:01:10 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/TODO
+ A /trunk/fms.c (from /trunk/fma.c:4598)
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tfms.c (from /trunk/tests/tfma.c:4601)
+
+Added mpfr_fms based on mpfr_fma.
+
+------------------------------------------------------------------------
+r4601 | vlefevre | 2007-07-01 22:45:08 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: added a space.
+
+------------------------------------------------------------------------
+r4600 | vlefevre | 2007-07-01 22:38:39 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: typo.
+
+------------------------------------------------------------------------
+r4599 | vlefevre | 2007-07-01 22:20:09 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+Reformat.
+
+------------------------------------------------------------------------
+r4598 | vlefevre | 2007-07-01 22:14:15 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: minor changes for consistency with the future fms.
+
+------------------------------------------------------------------------
+r4597 | vlefevre | 2007-07-01 21:52:21 +0000 (Sun, 01 Jul 2007) | 5 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/fma.c
+ M /trunk/tests/tfma.c
+
+Completed the implementation of mpfr_fma (except in some corner cases
+where overflows/underflows and huge precisions are involved at the
+same time). Added underflow tests. Removed item from the BUGS file
+(the remaining problems more or less correspond to the first item).
+
+------------------------------------------------------------------------
+r4596 | vlefevre | 2007-07-01 03:10:06 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+
+Untabified.
+
+------------------------------------------------------------------------
+r4595 | vlefevre | 2007-07-01 01:58:17 +0000 (Sun, 01 Jul 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: added overflow test to test_underflow.
+
+------------------------------------------------------------------------
+r4594 | vlefevre | 2007-07-01 01:36:04 +0000 (Sun, 01 Jul 2007) | 3 lines
+Changed paths:
+ M /trunk/fma.c
+ M /trunk/tests/tfma.c
+
+fma.c: implemented the main cases where x * y underflows.
+tests/tfma.c: fixed overflow tests and added underflow tests.
+
+------------------------------------------------------------------------
+r4593 | vlefevre | 2007-06-30 02:11:43 +0000 (Sat, 30 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+NEWS: update.
+
+------------------------------------------------------------------------
+r4592 | vlefevre | 2007-06-29 23:36:34 +0000 (Fri, 29 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: updated item on mpfr_fma.
+
+------------------------------------------------------------------------
+r4591 | vlefevre | 2007-06-29 23:32:29 +0000 (Fri, 29 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: completed the cases where x*y/4 needs to be used, except the very
+particular cases where an underflow occurs, that remain to be done.
+
+------------------------------------------------------------------------
+r4590 | vlefevre | 2007-06-29 13:35:03 +0000 (Fri, 29 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: fixed a printf.
+
+------------------------------------------------------------------------
+r4589 | vlefevre | 2007-06-29 13:32:20 +0000 (Fri, 29 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: added an assertion.
+
+------------------------------------------------------------------------
+r4588 | vlefevre | 2007-06-29 13:30:30 +0000 (Fri, 29 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: fixed overflow tests.
+
+------------------------------------------------------------------------
+r4587 | vlefevre | 2007-06-29 12:24:40 +0000 (Fri, 29 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: check NaN in test_overflow2.
+
+------------------------------------------------------------------------
+r4586 | vlefevre | 2007-06-29 12:19:09 +0000 (Fri, 29 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: updated a comment.
+
+------------------------------------------------------------------------
+r4585 | vlefevre | 2007-06-29 12:14:55 +0000 (Fri, 29 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: added more overflow tests (needed to distinguish the cases
+where z/4 underflows or not -- see fma.c).
+
+------------------------------------------------------------------------
+r4584 | vlefevre | 2007-06-29 12:06:13 +0000 (Fri, 29 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: added tests (-> assertion failed because mpfr_fma implementation
+isn't complete).
+
+------------------------------------------------------------------------
+r4583 | vlefevre | 2007-06-28 23:01:22 +0000 (Thu, 28 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/acos.c
+
+acos.c: disabled change from r3145 ("Optimize mpfr_acos by choosing
+a better initial precision.") that was buggy.
+BUGS: removed mpfr_acos bug.
+
+------------------------------------------------------------------------
+r4582 | vlefevre | 2007-06-28 22:40:59 +0000 (Thu, 28 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: updated item on the mpfr_acos bug.
+
+------------------------------------------------------------------------
+r4581 | vlefevre | 2007-06-28 22:38:10 +0000 (Thu, 28 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: updated item on the mpfr_acos test (the bug wasn't visible on
+32-bit machines due to an integer overflow, but the result should
+have been correct anyway).
+
+------------------------------------------------------------------------
+r4580 | vlefevre | 2007-06-28 22:27:09 +0000 (Thu, 28 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/acos.c
+
+acos.c: fixed integer overflows; to avoid undefined behavior, I had
+to add an assertion that is not always satisfied (the code needs to
+be rewritten to take tiny arguments into account).
+
+------------------------------------------------------------------------
+r4579 | vlefevre | 2007-06-28 17:30:39 +0000 (Thu, 28 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: update (mpfr_cot has just been fixed).
+
+------------------------------------------------------------------------
+r4578 | vlefevre | 2007-06-28 17:29:27 +0000 (Thu, 28 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/cot.c
+ M /trunk/tests/tcot.c
+
+cot.c: implemented the case |x| = 2^emin.
+tests/tcot.c: added tests for this case, in 3 exponent ranges
+(as this is an overflow limit).
+
+------------------------------------------------------------------------
+r4577 | vlefevre | 2007-06-28 17:00:15 +0000 (Thu, 28 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+Fixed bug in div.c: rnd_mode could be modified (MPFR_INVERT_RND), but
+the original value was assumed in case of underflow or overflow.
+
+------------------------------------------------------------------------
+r4576 | vlefevre | 2007-06-28 16:40:26 +0000 (Thu, 28 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+tdiv.c: added a test showing another bug in mpfr_div.
+
+------------------------------------------------------------------------
+r4575 | vlefevre | 2007-06-28 11:54:41 +0000 (Thu, 28 Jun 2007) | 5 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/cot.c
+
+cot.c: use MPFR_SAVE_EXPO_UPDATE_FLAGS, but the case +/- 2^emin could
+still be buggy with the current code; added a MPFR_ASSERTN (0) until
+it is implemented.
+BUGS: updated item on mpfr_cot.
+
+------------------------------------------------------------------------
+r4574 | zimmerma | 2007-06-28 07:59:28 +0000 (Thu, 28 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/tan.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/ttan.c
+
+fixed several problems with huge arguments in periodic functions
+mpfr_sin: complete rewrite, using mpfr_remainder for argument reduction
+mpfr_sin_cos: ditto
+
+------------------------------------------------------------------------
+r4573 | zimmerma | 2007-06-25 13:29:38 +0000 (Mon, 25 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/tests/tcos.c
+
+fixed stupid bug (subtraction of unsigned longs)
+
+------------------------------------------------------------------------
+r4572 | zimmerma | 2007-06-25 09:48:43 +0000 (Mon, 25 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tgeneric.c
+
+cos.c: implemented argument reduction by 2Pi
+tcos.c/tgeneric.c: reduce large exponent used when MPFR_CHECK_MAX is defined
+
+------------------------------------------------------------------------
+r4571 | vlefevre | 2007-06-22 14:45:28 +0000 (Fri, 22 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: added bugs.
+
+------------------------------------------------------------------------
+r4570 | vlefevre | 2007-06-22 12:15:03 +0000 (Fri, 22 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/sech.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tsech.c
+
+coth.c, sech.c: a rounding mode was incorrect.
+tests/tcoth.c: added underflowed_cothinf test.
+tests/tsech.c: added overflowed_sech0 test.
+
+------------------------------------------------------------------------
+r4569 | vlefevre | 2007-06-22 00:12:18 +0000 (Fri, 22 Jun 2007) | 8 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/gen_inverse.h
+ M /trunk/sec.c
+ M /trunk/tests/tsec.c
+
+* gen_inverse.h: ACTION_TINY must be called after MPFR_SAVE_EXPO_MARK
+ (this is necessary for some functions). Moved MPFR_SAVE_EXPO_FREE
+ after the "end:" label.
+* coth.c, csc.c, csch.c: as a consequence, MPFR_SAVE_EXPO_UPDATE_FLAGS
+ had to be added before "goto end;".
+* sec.c: a rounding mode was incorrect.
+* tests/tsec.c: added overflowed_sec0 test.
+
+------------------------------------------------------------------------
+r4568 | vlefevre | 2007-06-21 23:36:19 +0000 (Thu, 21 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tests/tsin_cos.c
+
+sin_cos.c: fixed a bug for x = 0 in reduced exponent range.
+tests/tsin_cos.c: added overflowed_sin_cos0 test.
+
+------------------------------------------------------------------------
+r4567 | vlefevre | 2007-06-21 14:32:14 +0000 (Thu, 21 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: Some functions do not use MPFR_SAVE_EXPO_* macros, thus do not
+behave correctly in a reduced exponent range.
+
+------------------------------------------------------------------------
+r4566 | vlefevre | 2007-06-21 14:28:13 +0000 (Thu, 21 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/factorial.c
+ M /trunk/tests/tfactorial.c
+
+factorial.c: a rounding mode was incorrect.
+tests/tfactorial.c: added overflowed_fac0 test.
+
+------------------------------------------------------------------------
+r4565 | vlefevre | 2007-06-21 14:16:17 +0000 (Thu, 21 Jun 2007) | 5 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+exp2.c: use MPFR_SMALL_INPUT_AFTER_SAVE_EXPO instead of
+MPFR_FAST_COMPUTE_IF_SMALL_INPUT since 1 (__gmpfr_one) isn't
+necessarily representable.
+tests/texp2.c: added overflowed_exp2_0 test.
+
+------------------------------------------------------------------------
+r4564 | vlefevre | 2007-06-21 13:59:38 +0000 (Thu, 21 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/tests/texp.c
+
+exp.c: fixed problems in reduced exponent range.
+tests/texp.c: added overflowed_exp0 test.
+
+------------------------------------------------------------------------
+r4563 | vlefevre | 2007-06-21 13:43:03 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+exp.c bug fix: a rounding mode was incorrect.
+
+------------------------------------------------------------------------
+r4562 | vlefevre | 2007-06-21 13:40:55 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+tcos.c: fixed error message in overflowed_cos0 test.
+
+------------------------------------------------------------------------
+r4561 | vlefevre | 2007-06-21 13:38:44 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+tcos.c: removed an obsolete comment from the overflowed_cos0 test.
+
+------------------------------------------------------------------------
+r4560 | vlefevre | 2007-06-21 13:35:45 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+tcos.c: improved overflowed_cos0 test.
+
+------------------------------------------------------------------------
+r4559 | vlefevre | 2007-06-21 12:49:03 +0000 (Thu, 21 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/tests/tget_str.c
+
+get_str.c: use MPFR_SAVE_EXPO.
+tests/tget_str.c: enabled the test with a reduced exponent range.
+
+------------------------------------------------------------------------
+r4558 | vlefevre | 2007-06-21 12:13:06 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+tget_str.c: added a test (disabled by default) with emax = 0.
+
+------------------------------------------------------------------------
+r4557 | vlefevre | 2007-06-21 11:53:16 +0000 (Thu, 21 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/mul.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+Corrected mpfr_inits, mpfr_inits2 and mpfr_clears calls with NULL
+argument (-> (void *) 0).
+
+------------------------------------------------------------------------
+r4556 | vlefevre | 2007-06-21 11:38:33 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+tget_str.c: reformatted/corrected a function.
+
+------------------------------------------------------------------------
+r4555 | vlefevre | 2007-06-21 11:30:38 +0000 (Thu, 21 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/ttanh.c
+
+Tests: when restoring the exponent range, save emin/emax first instead
+of using MPFR_EMIN_MIN/MPFR_EMAX_MAX (which have no longer corresponded
+to the default exponent range since quite a long time).
+
+------------------------------------------------------------------------
+r4554 | vlefevre | 2007-06-21 11:01:46 +0000 (Thu, 21 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: update.
+
+------------------------------------------------------------------------
+r4553 | vlefevre | 2007-06-20 13:22:49 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/atan.c
+ M /trunk/exp3.c
+ M /trunk/gen_inverse.h
+ M /trunk/jn.c
+ M /trunk/lngamma.c
+ M /trunk/mpfr.h
+ M /trunk/remquo.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sqr.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tremquo.c
+ M /trunk/tests/tyn.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/zeta_ui.c
+
+Untabified and removed trailing spaces.
+
+------------------------------------------------------------------------
+r4552 | vlefevre | 2007-06-20 13:12:41 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/generic.c
+ M /trunk/mpfr-gmp.h
+
+Bug fix: preprocessor # must be in the first column.
+
+------------------------------------------------------------------------
+r4551 | vlefevre | 2007-06-20 12:29:26 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/remquo.c
+
+remquo.c bug fix: preprocessor # must be in the first column.
+
+------------------------------------------------------------------------
+r4550 | vlefevre | 2007-06-20 11:58:25 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+tcos.c: fixed and improved the overflowed_cos0 test.
+
+------------------------------------------------------------------------
+r4549 | vlefevre | 2007-06-20 11:38:47 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+cos.c bug fix: a rounding mode was incorrect.
+
+------------------------------------------------------------------------
+r4548 | vlefevre | 2007-06-20 11:32:56 +0000 (Wed, 20 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+
+cos.c: use MPFR_SMALL_INPUT_AFTER_SAVE_EXPO instead of
+MPFR_FAST_COMPUTE_IF_SMALL_INPUT.
+
+------------------------------------------------------------------------
+r4547 | vlefevre | 2007-06-20 11:27:41 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+cos.c: untabified.
+
+------------------------------------------------------------------------
+r4546 | vlefevre | 2007-06-20 10:55:52 +0000 (Wed, 20 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+tcos.c: added tests for x very small and emax = 0 (some of them
+currently fail).
+
+------------------------------------------------------------------------
+r4545 | vlefevre | 2007-06-20 10:06:56 +0000 (Wed, 20 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Added a comment concerning the MPFR_SMALL_INPUT_AFTER_SAVE_EXPO macro.
+
+------------------------------------------------------------------------
+r4544 | vlefevre | 2007-06-20 10:03:03 +0000 (Wed, 20 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/expm1.c
+ M /trunk/mpfr-impl.h
+
+Added MPFR_SMALL_INPUT_AFTER_SAVE_EXPO macro; updated expm1.c to use
+this variant (and moved MPFR_SAVE_EXPO_MARK after the test ex < 0).
+
+------------------------------------------------------------------------
+r4543 | vlefevre | 2007-06-19 15:17:21 +0000 (Tue, 19 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Documented log(-0).
+
+------------------------------------------------------------------------
+r4542 | vlefevre | 2007-06-19 15:11:21 +0000 (Tue, 19 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+
+Added a few tests of log functions.
+
+------------------------------------------------------------------------
+r4541 | vlefevre | 2007-06-18 13:01:03 +0000 (Mon, 18 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated Section "Floating-Point Values on Special Numbers".
+
+------------------------------------------------------------------------
+r4540 | vlefevre | 2007-06-12 10:54:06 +0000 (Tue, 12 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: allow generic tests to run with a restricted exponent range.
+
+------------------------------------------------------------------------
+r4539 | vlefevre | 2007-06-12 10:51:17 +0000 (Tue, 12 Jun 2007) | 4 lines
+Changed paths:
+ M /trunk/expm1.c
+
+expm1.c: fixed bug for x = -max_value due to an intermediate overflow
+(flags were incorrect); at the same time, potential problems due to a
+restricted exponent range are also fixed.
+
+------------------------------------------------------------------------
+r4538 | vlefevre | 2007-06-12 09:17:33 +0000 (Tue, 12 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: check the function on large arguments (±maximum_value)
+when the MPFR_CHECK_MAX environment variable is defined.
+
+------------------------------------------------------------------------
+r4537 | vlefevre | 2007-06-11 13:40:14 +0000 (Mon, 11 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tlgamma.c
+
+tests/tlgamma.c: re-enabled sign checking.
+
+------------------------------------------------------------------------
+r4536 | zimmerma | 2007-06-11 09:30:08 +0000 (Mon, 11 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlgamma.c
+
+fixed problem with mpfr_lgamma for tiny negative input (and fixed use of
+generic test)
+
+------------------------------------------------------------------------
+r4535 | vlefevre | 2007-06-05 20:50:07 +0000 (Tue, 05 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+[mpfr.texi] Small change in new Section "Floating-Point Values on
+Special Numbers" (suggested by Paul).
+
+------------------------------------------------------------------------
+r4534 | zimmerma | 2007-06-05 19:41:43 +0000 (Tue, 05 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+fixed bug for tiny negative input (and added corresponding test)
+
+------------------------------------------------------------------------
+r4533 | vlefevre | 2007-06-05 11:06:57 +0000 (Tue, 05 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: Mulder -> Mulders.
+
+------------------------------------------------------------------------
+r4532 | zimmerma | 2007-06-04 11:26:10 +0000 (Mon, 04 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added test for "Witty's bug" on 64-bit machines
+
+------------------------------------------------------------------------
+r4531 | vlefevre | 2007-06-04 11:19:33 +0000 (Mon, 04 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+div.c: GNU coding style.
+
+------------------------------------------------------------------------
+r4530 | zimmerma | 2007-06-04 11:04:30 +0000 (Mon, 04 Jun 2007) | 3 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/tests/tdiv.c
+
+tdiv.c: added missing mpfr_clear's, and spaces before function calls
+div.c: fixed bug found by Carl Witty, and added more comments
+
+------------------------------------------------------------------------
+r4529 | vlefevre | 2007-06-04 10:55:47 +0000 (Mon, 04 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+tdiv.c: oops... the result should be 1.
+
+------------------------------------------------------------------------
+r4528 | vlefevre | 2007-06-04 10:50:42 +0000 (Mon, 04 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+tdiv.c: added test from Carl Witty's bug report on 2007-06-03.
+
+------------------------------------------------------------------------
+r4527 | vlefevre | 2007-06-01 13:48:35 +0000 (Fri, 01 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated Section "Floating-Point Values on Special Numbers".
+
+------------------------------------------------------------------------
+r4526 | vlefevre | 2007-06-01 13:31:14 +0000 (Fri, 01 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated Section "Floating-Point Values on Special Numbers".
+
+------------------------------------------------------------------------
+r4525 | vlefevre | 2007-06-01 13:29:33 +0000 (Fri, 01 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated month.
+
+------------------------------------------------------------------------
+r4524 | vlefevre | 2007-06-01 13:01:20 +0000 (Fri, 01 Jun 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added @: after "resp." (when it was missing).
+
+------------------------------------------------------------------------
+r4523 | vlefevre | 2007-05-31 15:51:37 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Started a new section "Floating-Point Values on Special Numbers".
+
+------------------------------------------------------------------------
+r4522 | vlefevre | 2007-05-31 15:47:00 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: inf -> Inf for consistency.
+
+------------------------------------------------------------------------
+r4521 | vlefevre | 2007-05-31 15:05:19 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi @deftypefun correction: void * -> {void *} (for the PDF).
+
+------------------------------------------------------------------------
+r4520 | vlefevre | 2007-05-31 15:02:11 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: consistency changes in section titles; made titles unique.
+
+------------------------------------------------------------------------
+r4519 | vlefevre | 2007-05-31 12:16:06 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/set_d64.c
+
+set_d64.c: replaced an "if" by a "#if" to avoid a gcc warning.
+
+------------------------------------------------------------------------
+r4518 | vlefevre | 2007-05-31 12:11:03 +0000 (Thu, 31 May 2007) | 4 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+
+get_d64.c: use BITS_PER_MP_LIMB instead of GMP_BITS_PER_LIMB (which
+does not seem to exist).
+set_d64.c: use BITS_PER_MP_LIMB instead of mp_bits_per_limb.
+
+------------------------------------------------------------------------
+r4517 | vlefevre | 2007-05-31 11:50:08 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+
+get_d64.c, set_d64.c: improved code to avoid some warnings.
+
+------------------------------------------------------------------------
+r4516 | vlefevre | 2007-05-31 11:39:23 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+
+Untabified get_d64.c and set_d64.c.
+
+------------------------------------------------------------------------
+r4515 | vlefevre | 2007-05-31 11:33:55 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+
+get_d64.c: added missing #include.
+
+------------------------------------------------------------------------
+r4514 | vlefevre | 2007-05-31 09:20:43 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: update.
+
+------------------------------------------------------------------------
+r4513 | vlefevre | 2007-05-31 09:16:38 +0000 (Thu, 31 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: improved error message when thread safe is not supported.
+
+------------------------------------------------------------------------
+r4512 | vlefevre | 2007-05-30 15:27:10 +0000 (Wed, 30 May 2007) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: say that relative paths in configure options are not supported
+(autoconf doesn't seem to have support for them).
+
+------------------------------------------------------------------------
+r4511 | vlefevre | 2007-05-30 12:04:22 +0000 (Wed, 30 May 2007) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.texi
+ M /trunk/tests/tsgn.c
+
+Documented the new behavior of mpfr_sgn (in fact, it was already partly
+required by the tsgn.c tests!) and added new mpfr_sgn tests.
+
+------------------------------------------------------------------------
+r4510 | vlefevre | 2007-05-30 11:21:32 +0000 (Wed, 30 May 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: added an item about the behavior of mpfr_sgn on NaN.
+
+------------------------------------------------------------------------
+r4509 | vlefevre | 2007-05-30 11:13:23 +0000 (Wed, 30 May 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: no longer check the MPFR_CHECK_TINY environment variable
+as all the bugs related to tiny arguments have been fixed.
+
+------------------------------------------------------------------------
+r4508 | vlefevre | 2007-05-30 10:17:09 +0000 (Wed, 30 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: corrections following the remarks by Nathalie Revol.
+
+------------------------------------------------------------------------
+r4507 | vlefevre | 2007-05-29 23:11:06 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/yn.c
+
+yn.c: untabify.
+
+------------------------------------------------------------------------
+r4506 | zimmerma | 2007-05-29 22:02:35 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/yn.c
+
+fix for small inputs in y1
+
+------------------------------------------------------------------------
+r4505 | vlefevre | 2007-05-29 21:31:22 +0000 (Tue, 29 May 2007) | 4 lines
+Changed paths:
+ M /trunk/erf.c
+ M /trunk/lngamma.c
+ M /trunk/mpfr-impl.h
+
+Defined new macros SIGN and SAME_SIGN in mpfr-impl.h to canonicalize
+the ternary value and to compare such values. Use SAME_SIGN in erf.c
+and lngamma.c.
+
+------------------------------------------------------------------------
+r4504 | zimmerma | 2007-05-29 21:04:57 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/yn.c
+
+fixed problem of tiny arguments for y0
+
+------------------------------------------------------------------------
+r4503 | zimmerma | 2007-05-29 16:44:02 +0000 (Tue, 29 May 2007) | 4 lines
+Changed paths:
+ M /trunk/erf.c
+ M /trunk/lngamma.c
+
+lngamma.c: fixed problem of tiny inputs in lngamma (still remains lgamma
+ to deal with)
+erf.c: small correction (inexact flags might have been inexact :-)
+
+------------------------------------------------------------------------
+r4502 | zimmerma | 2007-05-29 12:24:20 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/csch.c
+ M /trunk/jn.c
+
+fixed tiny input problem with csch, j0, j1
+
+------------------------------------------------------------------------
+r4501 | zimmerma | 2007-05-29 10:09:00 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/cot.c
+
+added special code for tiny inputs
+
+------------------------------------------------------------------------
+r4500 | vlefevre | 2007-05-29 09:52:12 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric_ui.c
+
+tgeneric_ui.c: no longer check the MPFR_CHECK_TINY environment variable.
+
+------------------------------------------------------------------------
+r4499 | vlefevre | 2007-05-29 09:33:56 +0000 (Tue, 29 May 2007) | 2 lines
+Changed paths:
+ M /trunk/erf.c
+
+erf.c: removed workaround to mpfr_div_ui bug, as the bug is now fixed.
+
+------------------------------------------------------------------------
+r4498 | vlefevre | 2007-05-29 09:29:02 +0000 (Tue, 29 May 2007) | 5 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+div_ui.c:
+ * Cleaned up the use of the sh variable (there was a useless sh = 0,
+ so I'm not sure that there isn't a bug...).
+ * Added underflow check.
+
+------------------------------------------------------------------------
+r4497 | vlefevre | 2007-05-29 08:48:49 +0000 (Tue, 29 May 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tgeneric_ui.c
+
+Added check of tiny arguments to tgeneric_ui.c (if MPFR_CHECK_TINY is
+defined, like in tgeneric.c); mpfr_div_ui currently fails due to the
+lack of underflow checking.
+
+------------------------------------------------------------------------
+r4496 | zimmerma | 2007-05-29 08:12:30 +0000 (Tue, 29 May 2007) | 5 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/erf.c
+
+README.dev: fixed typo
+erf.c: implemented special case for tiny x, and partially get rid of double
+ usage
+implemented
+
+------------------------------------------------------------------------
+r4495 | vlefevre | 2007-05-28 23:11:56 +0000 (Mon, 28 May 2007) | 4 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/cos.c
+ M /trunk/exp2.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/sinh.c
+
+MPFR_RET (mpfr_check_range (...)) -> return mpfr_check_range (...)
+as mpfr_check_range already handles the inexact flag.
+Reformatting (removed trailing spaces, untabified).
+
+------------------------------------------------------------------------
+r4494 | zimmerma | 2007-05-28 21:51:11 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/sech.c
+
+fixed problem of tiny input
+
+------------------------------------------------------------------------
+r4493 | zimmerma | 2007-05-28 21:44:37 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/csc.c
+
+fixed problem of tiny input for coth (and new fix again for csc, which
+takes into account the sign of the input)
+
+------------------------------------------------------------------------
+r4492 | zimmerma | 2007-05-28 21:23:23 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/csc.c
+ M /trunk/gen_inverse.h
+ M /trunk/sec.c
+
+fixed problem of tiny inputs in mpfr_sec and mpfr_csc,
+by adding a SPECIAL_TINY macro in gen_inverse.h
+
+------------------------------------------------------------------------
+r4491 | zimmerma | 2007-05-28 20:56:41 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+the test for the tiny input case was too optimistic: fixed and added test.
+
+------------------------------------------------------------------------
+r4490 | zimmerma | 2007-05-28 20:24:23 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+fixed case of tiny input
+
+------------------------------------------------------------------------
+r4489 | zimmerma | 2007-05-28 19:54:27 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+fixed problem for tiny arguments
+
+------------------------------------------------------------------------
+r4488 | zimmerma | 2007-05-28 18:33:26 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/cosh.c
+
+added MPFR_FAST_COMPUTE_IF_SMALL_INPUT call
+
+------------------------------------------------------------------------
+r4487 | zimmerma | 2007-05-28 18:19:08 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/round_near_x.c
+
+changed 1st-order Taylor term from x to v to avoid confusion with the
+argument x of the function f(x), and fixed some typos
+
+------------------------------------------------------------------------
+r4486 | zimmerma | 2007-05-28 17:15:11 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+
+fixed direction of rounding for MPFR_FAST_COMPUTE_IF_SMALL_INPUT
+(was wrong for x < 0)
+
+------------------------------------------------------------------------
+r4485 | zimmerma | 2007-05-28 17:02:57 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+fixed typo
+
+------------------------------------------------------------------------
+r4484 | zimmerma | 2007-05-28 16:19:06 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+added call to MPFR_FAST_COMPUTE_IF_SMALL_INPUT in exp2
+
+------------------------------------------------------------------------
+r4483 | zimmerma | 2007-05-28 15:51:00 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+re-enabled MPFR_CHECK_TINY
+
+------------------------------------------------------------------------
+r4482 | zimmerma | 2007-05-28 15:34:10 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr.texi
+
+improved documentation of mpfr_set/get_decimal64 functions
+fixed problem in configure.in (_Decimal64 was tested too early)
+
+------------------------------------------------------------------------
+r4481 | vlefevre | 2007-05-28 15:17:44 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: fixed two bugs concerning the timeout (including an
+old one: we need to call getrlimit to initialize rlim_max).
+
+------------------------------------------------------------------------
+r4480 | zimmerma | 2007-05-28 15:07:05 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+new syntax for timeouts
+
+------------------------------------------------------------------------
+r4479 | zimmerma | 2007-05-28 15:06:30 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+fixed typo
+
+------------------------------------------------------------------------
+r4478 | vlefevre | 2007-05-28 13:57:32 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk
+
+Added mkinstalldirs to svn:ignore property.
+
+------------------------------------------------------------------------
+r4477 | vlefevre | 2007-05-28 13:56:33 +0000 (Mon, 28 May 2007) | 5 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/tests/tests.c
+
+Changed --with-tests-timeout into --enable-tests-timeout as documented
+in the autoconf manual (--with-* are for external packages only). When
+this is enabled, environment variable MPFR_TESTS_TIMEOUT allows to
+override the default timeout (use the value 0 to disable timeouts).
+
+------------------------------------------------------------------------
+r4476 | vlefevre | 2007-05-28 11:29:45 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Updated NEWS file.
+
+------------------------------------------------------------------------
+r4475 | vlefevre | 2007-05-28 11:04:00 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: small improvement.
+
+------------------------------------------------------------------------
+r4474 | vlefevre | 2007-05-28 10:37:07 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/sgn.c
+ M /trunk/tests/tcmp_ui.c
+
+Fixed a bug in the mpfr_cmp_ui macro occurring on NaN and the constant 0
+by specifying the behavior of mpfr_sgn on NaN.
+
+------------------------------------------------------------------------
+r4473 | vlefevre | 2007-05-28 09:26:07 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: typography corrections concerning "i.e.".
+
+------------------------------------------------------------------------
+r4472 | vlefevre | 2007-05-28 09:17:37 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: consistency changes.
+
+------------------------------------------------------------------------
+r4471 | vlefevre | 2007-05-28 09:11:39 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: more details in Section "Exceptions".
+
+------------------------------------------------------------------------
+r4470 | vlefevre | 2007-05-28 02:12:05 +0000 (Mon, 28 May 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+tgeneric.c: check the function on tiny arguments (±2^(emin-1)) when
+the MPFR_CHECK_TINY environment variable is defined.
+
+------------------------------------------------------------------------
+r4469 | vlefevre | 2007-05-28 00:54:09 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Typo.
+
+------------------------------------------------------------------------
+r4468 | vlefevre | 2007-05-28 00:27:16 +0000 (Mon, 28 May 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cos.c
+ M /trunk/erfc.c
+ M /trunk/expm1.c
+ M /trunk/log1p.c
+ M /trunk/mpfr-impl.h
+ M /trunk/round_near_x.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/zeta.c
+
+Avoid integer overflow in MPFR_FAST_COMPUTE_IF_SMALL_INPUT.
+
+------------------------------------------------------------------------
+r4467 | zimmerma | 2007-05-25 21:03:43 +0000 (Fri, 25 May 2007) | 3 lines
+Changed paths:
+ M /trunk/remquo.c
+ M /trunk/tests/tremquo.c
+
+completed implementation of Vincent's algorithm for mpfr_remquo
+all tests now pass again
+
+------------------------------------------------------------------------
+r4466 | zimmerma | 2007-05-24 21:45:25 +0000 (Thu, 24 May 2007) | 3 lines
+Changed paths:
+ M /trunk/remquo.c
+
+new version of mpfr_remainder, using Vincent's algorithm
+(still remains to deal with special arguments, and make mpfr_remquo call it)
+
+------------------------------------------------------------------------
+r4465 | zimmerma | 2007-05-23 22:09:57 +0000 (Wed, 23 May 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added note about fms
+
+------------------------------------------------------------------------
+r4464 | zimmerma | 2007-05-23 21:55:55 +0000 (Wed, 23 May 2007) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fixed typo
+
+------------------------------------------------------------------------
+r4463 | zimmerma | 2007-05-23 21:26:14 +0000 (Wed, 23 May 2007) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed problem for x integer and rounding to nearest
+
+------------------------------------------------------------------------
+r4462 | zimmerma | 2007-05-23 18:33:35 +0000 (Wed, 23 May 2007) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+workaround for bug when x is very small (check_tiny in tsin)
+
+------------------------------------------------------------------------
+r4461 | vlefevre | 2007-05-22 12:06:00 +0000 (Tue, 22 May 2007) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Updated BUGS (again).
+
+------------------------------------------------------------------------
+r4460 | vlefevre | 2007-05-22 11:50:06 +0000 (Tue, 22 May 2007) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/TODO
+
+Updated BUGS and TODO (mpfr_lgamma has been implemented, but see BUGS,
+and gamma(-integer) with integer >= 1 is defined as NaN).
+
+------------------------------------------------------------------------
+r4459 | vlefevre | 2007-05-22 08:41:00 +0000 (Tue, 22 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+tsin.c: check sin on +/- 2^(emin-1) (test by Christopher Creutzig).
+
+------------------------------------------------------------------------
+r4458 | vlefevre | 2007-05-22 08:25:20 +0000 (Tue, 22 May 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+tgamma.c: added test of gamma on some integral values (from Christopher
+Creutzig); this test is enabled only when an argument is provided.
+
+------------------------------------------------------------------------
+r4457 | vlefevre | 2007-05-22 00:29:16 +0000 (Tue, 22 May 2007) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: improved comments and simplified the code.
+
+------------------------------------------------------------------------
+r4456 | vlefevre | 2007-05-22 00:11:18 +0000 (Tue, 22 May 2007) | 5 lines
+Changed paths:
+ M /trunk/fma.c
+
+fma.c: implemented exponent range expansion and the main part when the
+multiplication overflows. The following remains to do:
+ * when the multiplication overflows: some corner cases;
+ * when the multiplication underflows: everything.
+
+------------------------------------------------------------------------
+r4455 | vlefevre | 2007-05-21 11:52:33 +0000 (Mon, 21 May 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tlgamma.c
+
+tlgamma.c: I re-enable the generic tests of mpfr_lgamma now, to make
+sure that it is fixed before the 2.3.0 release candidate.
+
+------------------------------------------------------------------------
+r4454 | vlefevre | 2007-05-21 11:49:41 +0000 (Mon, 21 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: added an overflow test (currently fails).
+
+------------------------------------------------------------------------
+r4453 | vlefevre | 2007-05-21 08:44:22 +0000 (Mon, 21 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: whitespace change.
+
+------------------------------------------------------------------------
+r4452 | vlefevre | 2007-05-21 08:43:41 +0000 (Mon, 21 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+tfma.c: added tests on special and exact values.
+
+------------------------------------------------------------------------
+r4451 | zimmerma | 2007-05-17 22:05:42 +0000 (Thu, 17 May 2007) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/lngamma.c
+
+fixed error analysis in mpfr_lngamma
+added mpfr_inp_raw/mpfr_out_raw in TODO
+
+------------------------------------------------------------------------
+r4450 | vlefevre | 2007-05-16 14:52:57 +0000 (Wed, 16 May 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: fixed mpfr_fms formula to match the one on Itanium and PowerPC.
+
+------------------------------------------------------------------------
+r4449 | vlefevre | 2007-05-07 09:01:39 +0000 (Mon, 07 May 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: improved the description of mpfr_remquo.
+
+------------------------------------------------------------------------
+r4448 | zimmerma | 2007-05-06 13:25:55 +0000 (Sun, 06 May 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+improved description of remainder and remquo
+
+------------------------------------------------------------------------
+r4447 | vlefevre | 2007-05-06 11:16:12 +0000 (Sun, 06 May 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+My latest change was not completely correct...
+
+------------------------------------------------------------------------
+r4446 | vlefevre | 2007-05-06 11:13:41 +0000 (Sun, 06 May 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+Updated description of algorithm for mpfr_remainder.
+
+------------------------------------------------------------------------
+r4445 | zimmerma | 2007-05-06 08:18:50 +0000 (Sun, 06 May 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added description of algorithm for mpfr_remainder
+
+------------------------------------------------------------------------
+r4444 | vlefevre | 2007-05-04 14:25:31 +0000 (Fri, 04 May 2007) | 2 lines
+Changed paths:
+ M /trunk/remquo.c
+
+remquo.c: suggest to use mpz_powm.
+
+------------------------------------------------------------------------
+r4443 | vlefevre | 2007-05-04 13:19:27 +0000 (Fri, 04 May 2007) | 3 lines
+Changed paths:
+ M /trunk/remquo.c
+
+remquo.c: added a comment (idea to compute the remainder much more
+efficiently in the case x much larger than y).
+
+------------------------------------------------------------------------
+r4442 | zimmerma | 2007-05-04 12:45:36 +0000 (Fri, 04 May 2007) | 2 lines
+Changed paths:
+ M /trunk/remquo.c
+
+added assert and ideas for native implementation
+
+------------------------------------------------------------------------
+r4441 | zimmerma | 2007-05-04 06:27:38 +0000 (Fri, 04 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tremquo.c
+
+put back test (disabled for test)
+
+------------------------------------------------------------------------
+r4440 | zimmerma | 2007-05-04 06:26:56 +0000 (Fri, 04 May 2007) | 2 lines
+Changed paths:
+ M /trunk/remquo.c
+ M /trunk/tests/tremquo.c
+
+fixed problem when rem and x are the same variable
+
+------------------------------------------------------------------------
+r4439 | vlefevre | 2007-05-04 00:36:01 +0000 (Fri, 04 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tremquo.c
+
+tremquo.c: added a test that leads to a segmentation fault.
+
+------------------------------------------------------------------------
+r4438 | vlefevre | 2007-05-04 00:29:47 +0000 (Fri, 04 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tremquo.c
+
+tremquo.c: fixed tests (= -> ==).
+
+------------------------------------------------------------------------
+r4437 | zimmerma | 2007-05-03 20:07:20 +0000 (Thu, 03 May 2007) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/remquo.c
+ M /trunk/tests/tremquo.c
+
+fixed two issues found by Kaveh Ghazi:
+* remainder was wrong for |x/y| < 1
+* remainder had wrong sign when zero
+
+------------------------------------------------------------------------
+r4436 | zimmerma | 2007-05-03 15:56:03 +0000 (Thu, 03 May 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+more details of error analysis
+
+------------------------------------------------------------------------
+r4435 | vlefevre | 2007-05-03 13:30:34 +0000 (Thu, 03 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+Updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4434 | vlefevre | 2007-05-03 13:28:31 +0000 (Thu, 03 May 2007) | 2 lines
+Changed paths:
+ M /trunk
+
+Updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4433 | zimmerma | 2007-05-03 13:16:34 +0000 (Thu, 03 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tremquo.c
+
+fixed precision for command-line usage
+
+------------------------------------------------------------------------
+r4432 | vlefevre | 2007-05-03 13:15:49 +0000 (Thu, 03 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added mpfr_lgamma.
+
+------------------------------------------------------------------------
+r4431 | zimmerma | 2007-05-03 13:10:31 +0000 (Thu, 03 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tremquo.c
+
+added code to use tremquo with command-line arguments (tremquo x y)
+
+------------------------------------------------------------------------
+r4430 | vlefevre | 2007-05-02 16:03:52 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: improved comment.
+
+------------------------------------------------------------------------
+r4429 | vlefevre | 2007-05-02 15:52:51 +0000 (Wed, 02 May 2007) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: added a comment on the AC_ARG_ENABLE(decimal-float...)
+part. The addition of this code was the cause of the test_CFLAGS problem
+(see r4425 log), but this code is still wrong.
+
+------------------------------------------------------------------------
+r4428 | zimmerma | 2007-05-02 15:41:18 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tremquo.c
+
+modified test (2147483648 is not representable as 32-bit long in C90)
+
+------------------------------------------------------------------------
+r4427 | vlefevre | 2007-05-02 15:20:50 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/remquo.c
+ M /trunk/yn.c
+
+Removed unused variables.
+
+------------------------------------------------------------------------
+r4426 | vlefevre | 2007-05-02 15:18:18 +0000 (Wed, 02 May 2007) | 4 lines
+Changed paths:
+ M /trunk/get_str.c
+
+get_str.c:
+ * Removed useless prototype declaration (function no longer defined).
+ * Fixed initializer.
+
+------------------------------------------------------------------------
+r4425 | vlefevre | 2007-05-02 15:14:44 +0000 (Wed, 02 May 2007) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: moved the definition of test_CFLAGS upward (it was
+always set to "set", either because of things added to configure.in
+or because of new autoconf).
+
+------------------------------------------------------------------------
+r4424 | vlefevre | 2007-05-02 14:54:47 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr.h: added mpfr_lgamma prototype.
+
+------------------------------------------------------------------------
+r4423 | zimmerma | 2007-05-02 14:23:11 +0000 (Wed, 02 May 2007) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/remquo.c
+ M /trunk/tests/tremquo.c
+
+argument quo of remquo is now a pointer to long instead of int
+added new functions in NEWS
+
+------------------------------------------------------------------------
+r4422 | zimmerma | 2007-05-02 12:21:24 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/remquo.c
+ M /trunk/tests/tremquo.c
+
+changed order of arguments: now mpfr_remquo (r, q, x, y, rnd).
+
+------------------------------------------------------------------------
+r4421 | vlefevre | 2007-05-02 11:53:58 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/remquo.c
+
+remquo.c: fixed variable name for MPFR_LOG_FUNC.
+
+------------------------------------------------------------------------
+r4420 | zimmerma | 2007-05-02 10:12:11 +0000 (Wed, 02 May 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/remquo.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tremquo.c
+
+added mpfr_remquo and mpfr_remainder
+
+------------------------------------------------------------------------
+r4419 | zimmerma | 2007-04-27 12:48:01 +0000 (Fri, 27 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+fixed error analysis (error was over-estimated)
+
+------------------------------------------------------------------------
+r4418 | vlefevre | 2007-04-26 10:12:51 +0000 (Thu, 26 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+lngamma.c: a bit more details in the error analysis for z0 < 1.
+
+------------------------------------------------------------------------
+r4417 | vlefevre | 2007-04-26 09:20:37 +0000 (Thu, 26 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+lngamma.c: a bit more details in the error analysis for z0 < 1.
+
+------------------------------------------------------------------------
+r4416 | zimmerma | 2007-04-26 08:26:39 +0000 (Thu, 26 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+u was used for two different meanings in the error analysis for z0 < 1
+
+------------------------------------------------------------------------
+r4415 | vlefevre | 2007-04-25 12:52:09 +0000 (Wed, 25 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/jn.c
+ M /trunk/set_d64.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+ M /trunk/tests/tjn.c
+ M /trunk/tests/ty0.c
+ M /trunk/tests/ty1.c
+ M /trunk/tests/tyn.c
+ M /trunk/yn.c
+
+Updated Subversion properties on .c files (now consistent).
+
+------------------------------------------------------------------------
+r4414 | vlefevre | 2007-04-25 12:49:47 +0000 (Wed, 25 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+Updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4413 | vlefevre | 2007-04-25 12:48:05 +0000 (Wed, 25 Apr 2007) | 4 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tlgamma.c
+ M /trunk/tests/tlngamma.c
+
+Added preliminary support for mpfr_lngamma and tests.
+TODO: add support for negative numbers with small exponent.
+Re-enable the generic tests when this is done.
+
+------------------------------------------------------------------------
+r4412 | vlefevre | 2007-04-25 10:58:14 +0000 (Wed, 25 Apr 2007) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+lngamma.c: There was an assertion failed, probably because the error
+was too large; fixed that by restarting with a larger precision.
+
+------------------------------------------------------------------------
+r4411 | vlefevre | 2007-04-25 10:51:03 +0000 (Wed, 25 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+lngamma.c: fixed -2k-1 <= x <= -2k test.
+
+------------------------------------------------------------------------
+r4410 | vlefevre | 2007-04-25 09:07:03 +0000 (Wed, 25 Apr 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tlngamma.c
+
+tests/tlngamma.c: added a test showing a bug in lngamma (due to the
+use of mpfr_get_si even when the number doesn't fit in a long).
+
+------------------------------------------------------------------------
+r4409 | zimmerma | 2007-04-22 08:58:35 +0000 (Sun, 22 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+ M /trunk/tests/tjn.c
+
+fixed bug for negative even index in mpfr_jn (wrong sign)
+
+------------------------------------------------------------------------
+r4408 | zimmerma | 2007-04-12 12:16:04 +0000 (Thu, 12 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added warning
+
+------------------------------------------------------------------------
+r4407 | zimmerma | 2007-04-12 08:24:19 +0000 (Thu, 12 Apr 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added Bit Twiddling Hacks
+
+------------------------------------------------------------------------
+r4406 | vlefevre | 2007-04-05 12:01:07 +0000 (Thu, 05 Apr 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+MPFR manual: added a brief description of mpfr_t (this may be needed
+to write correct code) and mpfr_ptr (used by mpfr_sum).
+
+------------------------------------------------------------------------
+r4405 | vlefevre | 2007-04-02 15:32:00 +0000 (Mon, 02 Apr 2007) | 4 lines
+Changed paths:
+ M /trunk/jn.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tjn.c
+ M /trunk/tests/tyn.c
+ M /trunk/yn.c
+
+Changed mpfr_{jn,yn}_si (mpfr_t res, mpfr_t x, long n, ...) into
+mpfr_{jn,yn} (mpfr_t res, long n, mpfr_t x, ...), as discussed by
+mail; fixed a typo in mpfr.texi in mpfr_{y0,y1,yn} description.
+
+------------------------------------------------------------------------
+r4404 | zimmerma | 2007-03-31 21:23:00 +0000 (Sat, 31 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added url of GSL manual
+
+------------------------------------------------------------------------
+r4403 | zimmerma | 2007-03-31 21:15:26 +0000 (Sat, 31 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+fixed misunderstanding about definition of Bessel functions
+
+------------------------------------------------------------------------
+r4402 | zimmerma | 2007-03-31 17:59:23 +0000 (Sat, 31 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed Bessel functions J_n and Y_n
+
+------------------------------------------------------------------------
+r4401 | zimmerma | 2007-03-31 14:01:00 +0000 (Sat, 31 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+ M /trunk/jn.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/ty0.c
+ A /trunk/tests/ty1.c
+ A /trunk/tests/tyn.c
+ A /trunk/yn.c
+
+added Bessel functions of second kind (y0, y1, yn_si)
+
+------------------------------------------------------------------------
+r4400 | zimmerma | 2007-03-31 13:55:06 +0000 (Sat, 31 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tj0.c
+ M /trunk/tests/tj1.c
+
+now test_generic calls respectively j0 and j1, not zeta!
+
+------------------------------------------------------------------------
+r4399 | vlefevre | 2007-03-30 14:35:56 +0000 (Fri, 30 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: INF -> Inf for consistency.
+
+------------------------------------------------------------------------
+r4398 | vlefevre | 2007-03-30 14:34:00 +0000 (Fri, 30 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: PI -> Pi for consistency.
+
+------------------------------------------------------------------------
+r4397 | vlefevre | 2007-03-29 02:33:02 +0000 (Thu, 29 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: -0 -> @minus{}0.
+
+------------------------------------------------------------------------
+r4396 | vlefevre | 2007-03-29 02:28:46 +0000 (Thu, 29 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: fixed bug introduced in rev 4377, which made TeX fail.
+
+------------------------------------------------------------------------
+r4395 | vlefevre | 2007-03-29 02:00:04 +0000 (Thu, 29 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+Added tj0, tj1 and tjn to svn:ignore property of "tests" directory.
+
+------------------------------------------------------------------------
+r4393 | zimmerma | 2007-03-26 09:29:40 +0000 (Mon, 26 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+
+mpfr_jn -> mpfr_jn_si
+
+------------------------------------------------------------------------
+r4392 | zimmerma | 2007-03-23 20:30:20 +0000 (Fri, 23 Mar 2007) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/jn.c
+ M /trunk/tests/tjn.c
+
+now check underflow for large n in mpfr_jn_si
+added more tests
+
+------------------------------------------------------------------------
+r4391 | zimmerma | 2007-03-23 16:37:16 +0000 (Fri, 23 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tjn.c
+
+added more tests (large values of n)
+
+------------------------------------------------------------------------
+r4390 | zimmerma | 2007-03-23 16:22:01 +0000 (Fri, 23 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/jn.c
+
+fixed another stupid bug
+
+------------------------------------------------------------------------
+r4389 | zimmerma | 2007-03-23 15:49:35 +0000 (Fri, 23 Mar 2007) | 3 lines
+Changed paths:
+ M /trunk/jn.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tjn.c
+
+mpfr_jn -> mpfr_jn_si, with 'int' argument changed to 'long'
+fixed bug in mpfr_jn_si (forgot to increase working precision)
+
+------------------------------------------------------------------------
+r4388 | vlefevre | 2007-03-23 15:47:17 +0000 (Fri, 23 Mar 2007) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a warning about the meaning of the output "inexact"
+value in the function logging code.
+
+------------------------------------------------------------------------
+r4387 | vlefevre | 2007-03-23 15:38:20 +0000 (Fri, 23 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/sub.c
+
+Added log support for mpfr_add and mpfr_sub.
+
+------------------------------------------------------------------------
+r4386 | lfousse | 2007-03-23 13:43:18 +0000 (Fri, 23 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+Correction: added missing $b_n$.
+
+------------------------------------------------------------------------
+r4385 | zimmerma | 2007-03-22 17:12:00 +0000 (Thu, 22 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/algorithms.tex
+ A /trunk/jn.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ A /trunk/tests/tj0.c
+ A /trunk/tests/tj1.c
+ A /trunk/tests/tjn.c
+
+added Bessel functions of first kind: j0, j1, jn
+
+------------------------------------------------------------------------
+r4384 | vlefevre | 2007-03-19 09:11:17 +0000 (Mon, 19 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+MPFR manual: improved description of mpfr_get_str.
+
+------------------------------------------------------------------------
+r4383 | zimmerma | 2007-03-19 07:43:16 +0000 (Mon, 19 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed typos in comments
+
+------------------------------------------------------------------------
+r4382 | zimmerma | 2007-03-18 20:16:15 +0000 (Sun, 18 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+documented restriction to n in mpfr_get_str
+
+------------------------------------------------------------------------
+r4380 | vlefevre | 2007-03-13 15:46:08 +0000 (Tue, 13 Mar 2007) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Updated INSTALL based on AIX/PowerPC tests and results from Julie Kurpa
+and information on <http://www.ess.uci.edu/esmf/FAQ.html#gcc-errors>.
+
+------------------------------------------------------------------------
+r4379 | vlefevre | 2007-03-03 01:55:32 +0000 (Sat, 03 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release" section.
+
+------------------------------------------------------------------------
+r4378 | vlefevre | 2007-03-02 11:16:59 +0000 (Fri, 02 Mar 2007) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Made modified paragraph on mpfr_get_str more correct from a logical
+point of view.
+
+------------------------------------------------------------------------
+r4377 | zimmerma | 2007-03-02 09:15:04 +0000 (Fri, 02 Mar 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+modified paragraph on mpfr_get_str (size of allocated string)
+
+------------------------------------------------------------------------
+r4376 | zimmerma | 2007-02-25 13:04:13 +0000 (Sun, 25 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added tentative implementation of fmod
+
+------------------------------------------------------------------------
+r4375 | zimmerma | 2007-02-20 02:58:16 +0000 (Tue, 20 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion about remquo
+
+------------------------------------------------------------------------
+r4374 | zimmerma | 2007-02-19 21:50:26 +0000 (Mon, 19 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added comment
+
+------------------------------------------------------------------------
+r4373 | zimmerma | 2007-02-19 21:43:23 +0000 (Mon, 19 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added C99 rationale for remquo
+
+------------------------------------------------------------------------
+r4372 | zimmerma | 2007-02-19 03:52:30 +0000 (Mon, 19 Feb 2007) | 3 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/algorithms.tex
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+ M /trunk/const_catalan.c
+ M /trunk/log1p.c
+
+fixed error in generic error for the logarithm, and propagated new bound
+in algorithms.tex and source files
+
+------------------------------------------------------------------------
+r4371 | zimmerma | 2007-02-18 20:10:20 +0000 (Sun, 18 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new item
+
+------------------------------------------------------------------------
+r4370 | vlefevre | 2007-02-15 23:35:25 +0000 (Thu, 15 Feb 2007) | 3 lines
+Changed paths:
+ A /trunk/update-patchv (from /branches/2.2/update-patchv:4367)
+
+Added update-patchv script to update some files before a patch is built
+(script from 2.2 branch).
+
+------------------------------------------------------------------------
+r4365 | vlefevre | 2007-02-14 09:31:19 +0000 (Wed, 14 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated paragraph on the underflow before/after rounding.
+
+------------------------------------------------------------------------
+r4364 | zimmerma | 2007-02-14 03:34:21 +0000 (Wed, 14 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added reference
+
+------------------------------------------------------------------------
+r4363 | vlefevre | 2007-02-12 16:34:21 +0000 (Mon, 12 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: added Exceptions section.
+
+------------------------------------------------------------------------
+r4361 | vlefevre | 2007-02-12 12:18:19 +0000 (Mon, 12 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated month.
+
+------------------------------------------------------------------------
+r4359 | vlefevre | 2007-02-12 12:04:14 +0000 (Mon, 12 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+Note that the mpfr.info file is now installed in the share subdirectory.
+
+------------------------------------------------------------------------
+r4358 | vlefevre | 2007-02-10 11:30:18 +0000 (Sat, 10 Feb 2007) | 4 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: removed comment since there are other <limits.h> macros
+in the file (and this is an old bug: the first one was introduced in
+rev 2783).
+
+------------------------------------------------------------------------
+r4357 | zimmerma | 2007-02-10 08:05:30 +0000 (Sat, 10 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added missing include
+
+------------------------------------------------------------------------
+r4356 | vlefevre | 2007-02-09 14:17:32 +0000 (Fri, 09 Feb 2007) | 3 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/tests/tpow.c
+
+Fixed an integer overflow in pow_si.c (detected with -ftrapv) and
+added a corresponding testcase in tests/tpow.c.
+
+------------------------------------------------------------------------
+r4355 | vlefevre | 2007-02-09 13:30:57 +0000 (Fri, 09 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: another comment about the overflow detection.
+
+------------------------------------------------------------------------
+r4354 | vlefevre | 2007-02-09 13:14:07 +0000 (Fri, 09 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: added the proof of overflow checking.
+
+------------------------------------------------------------------------
+r4353 | vlefevre | 2007-02-09 11:55:51 +0000 (Fri, 09 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: added a comment about the exponent limits for MPFR numbers.
+
+------------------------------------------------------------------------
+r4352 | vlefevre | 2007-02-08 15:47:13 +0000 (Thu, 08 Feb 2007) | 7 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/tests/tset_si.c
+
+Reimplemented mpfr_set_si_2exp and mpfr_set_ui_2exp, and mpfr_set_si
+and mpfr_set_ui using the 2exp versions with e = 0. This fixes a bug
+in corner cases (emin >= 4 and some other constraints) in mpfr_set_si
+and mpfr_set_ui that incorrectly lead to an underflow flag set, and
+fixes mpfr_set_si_2exp and mpfr_set_ui_2exp in case of overflow or
+underflow (replacing the r4346 fix). Added corresponding testcases.
+
+------------------------------------------------------------------------
+r4350 | vlefevre | 2007-02-07 01:48:01 +0000 (Wed, 07 Feb 2007) | 3 lines
+Changed paths:
+ M /trunk/abort_prec_max.c
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/zeta_ui.c
+
+Added "Contributed by the Arenaire and Cacao projects, INRIA." to the
+copyright notices and removed a few old things.
+
+------------------------------------------------------------------------
+r4347 | zimmerma | 2007-02-01 13:15:34 +0000 (Thu, 01 Feb 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added missing macro (thanks to Izhar Wallach <izharw@keddem.com>)
+
+------------------------------------------------------------------------
+r4346 | vlefevre | 2007-01-20 13:45:20 +0000 (Sat, 20 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/set_si_2exp.c
+
+Fixed mpfr_set_si_2exp in case of overflow or underflow.
+
+------------------------------------------------------------------------
+r4345 | vlefevre | 2007-01-19 08:31:32 +0000 (Fri, 19 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: fixed the overflow detection for x power of 2 and n negative.
+
+------------------------------------------------------------------------
+r4344 | vlefevre | 2007-01-19 07:24:26 +0000 (Fri, 19 Jan 2007) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+tests/tget_f.c: fixed a test that had an integer overflow (detected
+with -ftrapv).
+
+------------------------------------------------------------------------
+r4343 | vlefevre | 2007-01-19 07:07:10 +0000 (Fri, 19 Jan 2007) | 6 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: Before fixing the bug corresponding to the testcase added in
+rev 4342, let's fix another one that can be detected with -ftrapv when
+n = LONG_MIN (since -n is not representable in this case).
+With wrapping, we always got the correct result because mp_exp_t is
+currently at most a long *and* because of side effects!
+
+------------------------------------------------------------------------
+r4342 | vlefevre | 2007-01-19 06:51:13 +0000 (Fri, 19 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: added a test which fails (undetected integer overflow).
+
+------------------------------------------------------------------------
+r4341 | vlefevre | 2007-01-19 06:44:09 +0000 (Fri, 19 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: new test was wrong; fixed.
+
+------------------------------------------------------------------------
+r4340 | vlefevre | 2007-01-19 06:39:23 +0000 (Fri, 19 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: corrected tests and added another test.
+
+------------------------------------------------------------------------
+r4339 | vlefevre | 2007-01-19 05:10:16 +0000 (Fri, 19 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: added tests.
+
+------------------------------------------------------------------------
+r4338 | vlefevre | 2007-01-19 04:23:17 +0000 (Fri, 19 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+pow_si.c: added an assertion.
+
+------------------------------------------------------------------------
+r4337 | vlefevre | 2007-01-18 01:28:02 +0000 (Thu, 18 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: merged both requests for mpfr_sinh_cosh.
+
+------------------------------------------------------------------------
+r4335 | zimmerma | 2007-01-17 19:38:49 +0000 (Wed, 17 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/dim.c
+ M /trunk/mpfr.texi
+
+added documentation for mpfr_dim (was missing)
+
+------------------------------------------------------------------------
+r4334 | zimmerma | 2007-01-17 19:26:47 +0000 (Wed, 17 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item
+
+------------------------------------------------------------------------
+r4333 | vlefevre | 2007-01-17 17:34:09 +0000 (Wed, 17 Jan 2007) | 4 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tests.c
+
+Replaced some computations using the type double by computations using
+MPFR, for mpfr_get_str, allowing it to work with an x86 processor set
+up in single-precision mode.
+
+------------------------------------------------------------------------
+r4332 | vlefevre | 2007-01-16 23:15:29 +0000 (Tue, 16 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+Updated comment concerning LONG_MIN / 1.
+
+------------------------------------------------------------------------
+r4331 | vlefevre | 2007-01-15 00:40:17 +0000 (Mon, 15 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated "To make a release" section.
+
+------------------------------------------------------------------------
+r4329 | vlefevre | 2007-01-10 16:35:27 +0000 (Wed, 10 Jan 2007) | 2 lines
+Changed paths:
+ D /trunk/mpzroot.c
+ D /trunk/rootrem.c
+
+Removed mpzroot.c and rootrem.c from the repository.
+
+------------------------------------------------------------------------
+r4328 | vlefevre | 2007-01-10 16:32:46 +0000 (Wed, 10 Jan 2007) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ D /trunk/log_b2.h
+
+Removed log_b2.h (has never been used) from the repository and from
+libmpfr_la_SOURCES in Makefile.am.
+
+------------------------------------------------------------------------
+r4327 | vlefevre | 2007-01-10 15:40:05 +0000 (Wed, 10 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ.html: Added details to MPF-related Q&A's.
+
+------------------------------------------------------------------------
+r4326 | vlefevre | 2007-01-10 12:51:56 +0000 (Wed, 10 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_d64.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mpzroot.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/rootrem.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_d64.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_set_d64.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Copyright notice update: added 2007.
+
+------------------------------------------------------------------------
+r4325 | vlefevre | 2007-01-10 12:37:05 +0000 (Wed, 10 Jan 2007) | 6 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/README.dev
+ M /trunk/tests/tests.c
+
+* tests/tests.c: under Linux/x86, the FPU precision can be set before
+doing the tests (see MPFR_FPU_PREC), so that MPFR can be tested under
+various FP environments (2 tests currently fail with _FPU_SINGLE).
+* README.dev: updated "To make a release" section.
+* BUGS: mentioned the above bug.
+
+------------------------------------------------------------------------
+r4323 | vlefevre | 2007-01-08 16:36:00 +0000 (Mon, 08 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi -> January 2007.
+
+------------------------------------------------------------------------
+r4321 | zimmerma | 2007-01-08 16:03:52 +0000 (Mon, 08 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added support from LIP, and different INRIA project-teams
+
+------------------------------------------------------------------------
+r4320 | vlefevre | 2007-01-03 16:19:45 +0000 (Wed, 03 Jan 2007) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+Minor change.
+
+------------------------------------------------------------------------
+r4319 | vlefevre | 2006-12-29 03:42:39 +0000 (Fri, 29 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: macros/functions to get/set the sign of a MPFR number.
+
+------------------------------------------------------------------------
+r4318 | zimmerma | 2006-12-21 14:10:51 +0000 (Thu, 21 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/root.c
+
+remove new rootrem implementation (unclear copyright status)
+
+------------------------------------------------------------------------
+r4317 | vlefevre | 2006-12-19 22:32:09 +0000 (Tue, 19 Dec 2006) | 3 lines
+Changed paths:
+ M /trunk/const_catalan.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/eint.c
+ M /trunk/erfc.c
+ M /trunk/gamma.c
+ M /trunk/lngamma.c
+ M /trunk/zeta.c
+
+Replaced mpfr_mul_2exp and mpfr_div_2exp by mpfr_mul_2ui and
+mpfr_div_2ui respectively (when this makes sense, of course).
+
+------------------------------------------------------------------------
+r4316 | zimmerma | 2006-12-19 13:59:59 +0000 (Tue, 19 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/zeta_ui.c
+
+mpfr_div_2exp -> mpfr_div_2ui
+
+------------------------------------------------------------------------
+r4315 | zimmerma | 2006-12-19 07:08:13 +0000 (Tue, 19 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/algorithms.tex
+ M /trunk/zeta_ui.c
+
+improved efficiency of zeta_ui(s) for 3^(-s) < 1/2*ulp(1)
+
+------------------------------------------------------------------------
+r4314 | vlefevre | 2006-12-18 17:09:43 +0000 (Mon, 18 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: update concerning MPFR_USE_EXTENSION.
+
+------------------------------------------------------------------------
+r4313 | zimmerma | 2006-12-18 16:03:26 +0000 (Mon, 18 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/rootrem.c
+
+added copyright header
+
+------------------------------------------------------------------------
+r4312 | zimmerma | 2006-12-18 12:04:19 +0000 (Mon, 18 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item
+
+------------------------------------------------------------------------
+r4311 | vlefevre | 2006-12-15 14:28:53 +0000 (Fri, 15 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Implemented MPFR_USE_EXTENSION support.
+
+------------------------------------------------------------------------
+r4310 | zimmerma | 2006-12-15 08:42:21 +0000 (Fri, 15 Dec 2006) | 4 lines
+Changed paths:
+ M /trunk/zeta_ui.c
+
+improved efficiency for zeta(m) in precision p when m is large
+but still smaller than p, for example m=1024 and p=2048 gives a
+speedup of about 23 (thanks to Jim White for reporting the problem)
+
+------------------------------------------------------------------------
+r4309 | zimmerma | 2006-12-14 15:19:17 +0000 (Thu, 14 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/zeta_ui.c
+
+added MPFR_ZIV_INIT stuff
+
+------------------------------------------------------------------------
+r4308 | zimmerma | 2006-12-07 07:17:58 +0000 (Thu, 07 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+fixed typo
+
+------------------------------------------------------------------------
+r4307 | vlefevre | 2006-12-05 09:42:22 +0000 (Tue, 05 Dec 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: to be added: MPFR_USE_EXTENSION macro.
+
+------------------------------------------------------------------------
+r4306 | vlefevre | 2006-11-29 09:50:57 +0000 (Wed, 29 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: update.
+
+------------------------------------------------------------------------
+r4300 | vlefevre | 2006-11-29 08:54:24 +0000 (Wed, 29 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: update of the "Notes on Windows 32" section.
+
+------------------------------------------------------------------------
+r4299 | zimmerma | 2006-11-27 08:56:12 +0000 (Mon, 27 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/set_uj.c
+
+added comment about last change
+
+------------------------------------------------------------------------
+r4298 | zimmerma | 2006-11-27 08:26:02 +0000 (Mon, 27 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/set_uj.c
+
+fixed warning on 64-bit machines
+
+------------------------------------------------------------------------
+r4297 | vlefevre | 2006-11-26 18:58:05 +0000 (Sun, 26 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tests/tpow.c: added worst cases.
+
+------------------------------------------------------------------------
+r4296 | vlefevre | 2006-11-26 18:52:26 +0000 (Sun, 26 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/troot.c
+
+tests/troot.c: two more worst cases.
+
+------------------------------------------------------------------------
+r4295 | vlefevre | 2006-11-25 20:05:15 +0000 (Sat, 25 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/troot.c
+
+tests/troot.c: added a worst case.
+
+------------------------------------------------------------------------
+r4293 | vlefevre | 2006-11-25 19:46:42 +0000 (Sat, 25 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: removed obsolete "compiler bugs" section.
+
+------------------------------------------------------------------------
+r4292 | zimmerma | 2006-11-25 09:51:07 +0000 (Sat, 25 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added worst case
+
+------------------------------------------------------------------------
+r4286 | vlefevre | 2006-11-25 00:15:30 +0000 (Sat, 25 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Partially rewrote the INSTALL file.
+
+------------------------------------------------------------------------
+r4284 | vlefevre | 2006-11-24 14:46:41 +0000 (Fri, 24 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Makefile.am: fixed libtool's -version-info flag (and comment).
+
+------------------------------------------------------------------------
+r4279 | vlefevre | 2006-11-24 00:44:20 +0000 (Fri, 24 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: check for gmp.h a bit earlier.
+
+------------------------------------------------------------------------
+r4278 | zimmerma | 2006-11-23 14:10:10 +0000 (Thu, 23 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+added --with-tests-timeout=60 for nightly tests
+
+------------------------------------------------------------------------
+r4277 | zimmerma | 2006-11-23 14:08:47 +0000 (Thu, 23 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/tests/tests.c
+
+test timeout is now a configure option (e.g. --with-tests-timeout=60)
+
+------------------------------------------------------------------------
+r4276 | zimmerma | 2006-11-23 13:25:35 +0000 (Thu, 23 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+replaced set_d by set_str_binary (more portable)
+
+------------------------------------------------------------------------
+r4274 | vlefevre | 2006-11-23 00:34:58 +0000 (Thu, 23 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: several additions.
+
+------------------------------------------------------------------------
+r4272 | vlefevre | 2006-11-22 17:25:20 +0000 (Wed, 22 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: small update.
+
+------------------------------------------------------------------------
+r4270 | vlefevre | 2006-11-22 15:25:22 +0000 (Wed, 22 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update (added a CSS counter).
+
+------------------------------------------------------------------------
+r4268 | vlefevre | 2006-11-22 15:23:30 +0000 (Wed, 22 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/update-faq
+
+update-faq: added a workaround for the libxslt bug 377440.
+
+------------------------------------------------------------------------
+r4267 | vlefevre | 2006-11-22 11:48:44 +0000 (Wed, 22 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: update concerning the patches information.
+
+------------------------------------------------------------------------
+r4266 | zimmerma | 2006-11-22 08:03:59 +0000 (Wed, 22 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+set GMP_CHECK_RANDOMIZE to get random tests
+
+------------------------------------------------------------------------
+r4263 | vlefevre | 2006-11-21 18:01:15 +0000 (Tue, 21 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/README
+
+Updated README file.
+
+------------------------------------------------------------------------
+r4259 | vlefevre | 2006-11-20 16:32:36 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: mention the version suffix.
+
+------------------------------------------------------------------------
+r4258 | vlefevre | 2006-11-20 16:25:47 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version to 2.3.0-dev.
+
+------------------------------------------------------------------------
+r4257 | vlefevre | 2006-11-20 16:24:20 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+ M /trunk/update-version
+
+Added version suffix support (useful for dev and rc versions).
+
+------------------------------------------------------------------------
+r4256 | vlefevre | 2006-11-20 14:45:50 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+Rewrote nightly-test in sh and fixed a security hole.
+
+------------------------------------------------------------------------
+r4255 | zimmerma | 2006-11-20 14:08:00 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+added cpu time limit of 60 seconds in tests
+
+------------------------------------------------------------------------
+r4254 | vlefevre | 2006-11-20 13:44:04 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: update.
+
+------------------------------------------------------------------------
+r4252 | zimmerma | 2006-11-20 12:59:26 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+added an argument to give the branch (use trunk or branches/2.2 for example)
+
+------------------------------------------------------------------------
+r4250 | vlefevre | 2006-11-20 11:36:25 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+tests/tgamma.c: restore emin and emax to their default values.
+
+------------------------------------------------------------------------
+r4249 | zimmerma | 2006-11-20 11:00:45 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed bug in overflow test
+
+------------------------------------------------------------------------
+r4248 | zimmerma | 2006-11-20 09:52:45 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed bug in mpfr_gamma for exact result
+
+------------------------------------------------------------------------
+r4246 | zimmerma | 2006-11-20 07:39:36 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/nightly-test
+
+added two configure options
+
+------------------------------------------------------------------------
+r4245 | zimmerma | 2006-11-20 07:32:36 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/erfc.c
+
+simplified test :-)
+
+------------------------------------------------------------------------
+r4244 | vlefevre | 2006-11-20 05:40:58 +0000 (Mon, 20 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: unset GMP_CFLAGS and GMP_CC in case the user has set such
+environment variables for another use.
+
+------------------------------------------------------------------------
+r4243 | vlefevre | 2006-11-20 04:45:11 +0000 (Mon, 20 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/tests/texp2.c
+
+tests/texp2.c: fixed a problem with a value that is not necessarily
+representable (on platforms without long long).
+
+------------------------------------------------------------------------
+r4242 | vlefevre | 2006-11-20 00:27:53 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: removed item on mpfr_eint (now fixed).
+
+------------------------------------------------------------------------
+r4241 | vlefevre | 2006-11-20 00:25:10 +0000 (Mon, 20 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/erfc.c
+
+Untabify.
+
+------------------------------------------------------------------------
+r4240 | zimmerma | 2006-11-19 21:27:33 +0000 (Sun, 19 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+replaced double by mpfr_t (problem on 64-bit machines)
+
+------------------------------------------------------------------------
+r4239 | zimmerma | 2006-11-19 18:22:51 +0000 (Sun, 19 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+added more tests
+
+------------------------------------------------------------------------
+r4238 | zimmerma | 2006-11-19 18:08:38 +0000 (Sun, 19 Nov 2006) | 2 lines
+Changed paths:
+ A /trunk/nightly-test
+
+script for nightly tests
+
+------------------------------------------------------------------------
+r4237 | zimmerma | 2006-11-19 14:35:02 +0000 (Sun, 19 Nov 2006) | 4 lines
+Changed paths:
+ M /trunk/erfc.c
+ M /trunk/pow.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/ttan.c
+
+fixed bug in pow (isodd -> assertion failed)
+fixed problem in erfc for large input
+reduced tests that took too much time
+
+------------------------------------------------------------------------
+r4236 | vlefevre | 2006-11-19 11:34:06 +0000 (Sun, 19 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated description of mpfr_eint, as the whole input domain
+is now supported.
+
+------------------------------------------------------------------------
+r4235 | vlefevre | 2006-11-19 11:17:03 +0000 (Sun, 19 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+ M /trunk/erfc.c
+
+Untabify.
+
+------------------------------------------------------------------------
+r4234 | vlefevre | 2006-11-19 11:01:25 +0000 (Sun, 19 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: added a comment about MPFR_WARNING.
+
+------------------------------------------------------------------------
+r4233 | zimmerma | 2006-11-19 09:28:35 +0000 (Sun, 19 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/eint.c
+ M /trunk/erfc.c
+
+fixed bug in erfc (forgot to compare result of cmp_si)
+fixed infinite loop in eint (test for use of asympt was not tight enough)
+
+------------------------------------------------------------------------
+r4232 | zimmerma | 2006-11-19 08:48:17 +0000 (Sun, 19 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/eint.c
+ M /trunk/tests/teint.c
+
+added asymptotic expansion for mpfr_eint (don't need MPFR_WARNING any more)
+
+------------------------------------------------------------------------
+r4231 | vlefevre | 2006-11-18 20:55:17 +0000 (Sat, 18 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/tests/terf.c
+
+Added a mpfr_erfc test that shows a bug and updated BUGS file.
+
+------------------------------------------------------------------------
+r4229 | vlefevre | 2006-11-17 09:07:23 +0000 (Fri, 17 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: Added a comment concerning GMP version checking.
+
+------------------------------------------------------------------------
+r4228 | vlefevre | 2006-11-17 08:58:29 +0000 (Fri, 17 Nov 2006) | 5 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: Before testing GMP header and library versions, set
+LD_RUN_PATH locally if a --with-gmp* option is used, so that the
+right version of the GMP library is used. There is no need to do
+something similar for "make check" as libtool does the job.
+
+------------------------------------------------------------------------
+r4227 | vlefevre | 2006-11-17 08:15:24 +0000 (Fri, 17 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Updated mpfr_erfc documentation (now supported in whole domain).
+
+------------------------------------------------------------------------
+r4226 | vlefevre | 2006-11-17 03:16:16 +0000 (Fri, 17 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: removed mpfr_pow_z bug.
+
+------------------------------------------------------------------------
+r4225 | vlefevre | 2006-11-17 03:13:24 +0000 (Fri, 17 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tests.c
+ M /trunk/tests/tgeneric.c
+
+Merged the new generic tests.
+
+------------------------------------------------------------------------
+r4224 | vlefevre | 2006-11-17 02:55:09 +0000 (Fri, 17 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+Partially fixed a bug in mpfr_pow_si (overflow/underflow detection for
+n < 0).
+
+------------------------------------------------------------------------
+r4223 | vlefevre | 2006-11-17 02:46:56 +0000 (Fri, 17 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+tests/tpow_z.c: various corrections.
+
+------------------------------------------------------------------------
+r4222 | vlefevre | 2006-11-17 02:27:06 +0000 (Fri, 17 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow.c
+
+Partially fixed another bug in mpfr_pow_z (overflow/underflow detection
+for z < 0) and added corresponding testcases.
+
+------------------------------------------------------------------------
+r4221 | vlefevre | 2006-11-17 01:56:31 +0000 (Fri, 17 Nov 2006) | 4 lines
+Changed paths:
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow.c
+
+Fixed a bug in mpfr_pow_z concerning the underflow flag and added the
+corresponding testcase (but the case z < 0 is still buggy concerning
+the flags).
+
+------------------------------------------------------------------------
+r4219 | zimmerma | 2006-11-16 15:02:08 +0000 (Thu, 16 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/algorithms.tex
+ M /trunk/erfc.c
+ M /trunk/tests/terf.c
+
+implemented asymptotic formula for erfc (fixed both slowness for large
+arguments, and call to MPFR_WARNING with return value NaN for huge arguments)
+
+------------------------------------------------------------------------
+r4218 | zimmerma | 2006-11-16 10:19:19 +0000 (Thu, 16 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+added new test
+
+------------------------------------------------------------------------
+r4216 | zimmerma | 2006-11-14 16:42:46 +0000 (Tue, 14 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/erfc.c
+ M /trunk/tests/terf.c
+
+fixed problem for large negative input
+
+------------------------------------------------------------------------
+r4215 | vlefevre | 2006-11-14 14:26:02 +0000 (Tue, 14 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: slight change in the proposed mpfr_lgamma prototype (arg order).
+
+------------------------------------------------------------------------
+r4214 | vlefevre | 2006-11-13 09:07:20 +0000 (Mon, 13 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.texi
+
+About mpfr_lngamma/mpfr_lgamma: added mpfr_lgamma to TODO and updated
+mpfr_lngamma description in mpfr.texi.
+
+------------------------------------------------------------------------
+r4213 | vlefevre | 2006-11-13 08:39:16 +0000 (Mon, 13 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: update.
+
+------------------------------------------------------------------------
+r4212 | vlefevre | 2006-11-13 07:26:31 +0000 (Mon, 13 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+tests/terf.c: added a test that yields a segfault (execute "terf 1").
+
+------------------------------------------------------------------------
+r4211 | zimmerma | 2006-11-10 16:05:07 +0000 (Fri, 10 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+moved the [gs]et_decimal64 functions after the [gs]et_ld functions
+
+------------------------------------------------------------------------
+r4210 | vlefevre | 2006-11-10 15:14:58 +0000 (Fri, 10 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: changed @code{--enable-decimal-float} into @samp{...}
+for consistency with the other configure options.
+
+------------------------------------------------------------------------
+r4209 | vlefevre | 2006-11-10 15:13:30 +0000 (Fri, 10 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: updated the note concerning mpfr_eint and mpfr_erfc.
+
+------------------------------------------------------------------------
+r4208 | vlefevre | 2006-11-10 14:54:19 +0000 (Fri, 10 Nov 2006) | 9 lines
+Changed paths:
+ M /branches/new-generic-tests/tests/Makefile.am
+ M /trunk/configure.in
+ M /trunk/eint.c
+ M /trunk/erfc.c
+ M /trunk/mpfr-impl.h
+
+Added warnings support.
+ * configure.in: added --enable-warnings configure option.
+ * mpfr-impl.h: defined MPFR_WARNING(W) macro.
+ * eint.c, erfc.c: use MPFR_WARNING instead of fprintf.
+ * tests/Makefile.am (new-generic-tests branch): run the tests with
+ MPFR_QUIET=1 to avoid output of useless warnings, as some tests
+ (with large arguments) can generate such warnings, which are all
+ expected.
+
+------------------------------------------------------------------------
+r4206 | vlefevre | 2006-11-10 13:28:54 +0000 (Fri, 10 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests
+
+Added tget_set_d64 to svn:ignore property of "tests" directory.
+
+------------------------------------------------------------------------
+r4205 | vlefevre | 2006-11-10 09:05:56 +0000 (Fri, 10 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: "add a configure test for --enable-logging..."
+
+------------------------------------------------------------------------
+r4204 | vlefevre | 2006-11-10 01:30:10 +0000 (Fri, 10 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+More information for --enable-logging configure option.
+
+------------------------------------------------------------------------
+r4203 | vlefevre | 2006-11-10 01:24:33 +0000 (Fri, 10 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/logging.c
+ M /trunk/mpfr-impl.h
+
+Fixed test of logging support.
+
+------------------------------------------------------------------------
+r4202 | vlefevre | 2006-11-10 01:01:24 +0000 (Fri, 10 Nov 2006) | 5 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/configure.in
+
+Removed --with-irix64 configure option and "case $OS_TYPE" code from
+configure.in; see
+ http://sympa.loria.fr/wwsympa/arc/mpfr/2006-11/msg00009.html
+for the reasons.
+
+------------------------------------------------------------------------
+r4201 | zimmerma | 2006-11-09 14:25:48 +0000 (Thu, 09 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_set_d64.c
+
+added more checks with native format
+
+------------------------------------------------------------------------
+r4200 | zimmerma | 2006-11-09 13:37:33 +0000 (Thu, 09 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/tests/tget_set_d64.c
+
+added detection of decimal format in configure (DPD or BID)
+
+------------------------------------------------------------------------
+r4199 | vlefevre | 2006-11-09 11:39:34 +0000 (Thu, 09 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: removed a useless cast (ISO C99 standard 6.2.5#3) and updated
+a comment as isdigit is no longer used.
+
+------------------------------------------------------------------------
+r4198 | vlefevre | 2006-11-09 11:13:48 +0000 (Thu, 09 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c fix: no longer use isdigit, as MPFR requires non-localized
+digits.
+
+------------------------------------------------------------------------
+r4197 | zimmerma | 2006-11-09 11:05:05 +0000 (Thu, 09 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+ M /trunk/tests/tget_set_d64.c
+
+modified to work on 64-bit machines too
+
+------------------------------------------------------------------------
+r4196 | vlefevre | 2006-11-09 09:31:09 +0000 (Thu, 09 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/get_d64.c
+
+get_d64.c: fixed problems related to signed/unsigned values.
+
+------------------------------------------------------------------------
+r4195 | vlefevre | 2006-11-09 09:03:17 +0000 (Thu, 09 Nov 2006) | 4 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+strtofr.c: fixed a bug that could occur on platforms with signed chars,
+when the user provides a string with negative characters (e.g. accented
+characters, in practice).
+
+------------------------------------------------------------------------
+r4194 | zimmerma | 2006-11-09 07:29:15 +0000 (Thu, 09 Nov 2006) | 4 lines
+Changed paths:
+ M /trunk/get_d64.c
+ M /trunk/set_d64.c
+ M /trunk/tests/tget_set_d64.c
+
+complete rewrite of mpfr_set_decimal64 and mpfr_get_decimal64: now use
+internal string <-> _Decimal64 conversion functions, which perform native
+conversion from/to BID or DPD
+
+------------------------------------------------------------------------
+r4193 | zimmerma | 2006-11-08 09:32:52 +0000 (Wed, 08 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_set_decimal64 and mpfr_get_decimal64
+
+------------------------------------------------------------------------
+r4192 | vlefevre | 2006-11-08 08:55:33 +0000 (Wed, 08 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+mpfr-impl.h: fixed a compile error if _Decimal64 is unknown.
+
+------------------------------------------------------------------------
+r4191 | zimmerma | 2006-11-08 07:47:07 +0000 (Wed, 08 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/get_d64.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/set_d64.c
+ M /trunk/tests/tget_set_d64.c
+
+added new configure option --enable-decimal-float to build mpfr_set_decimal64
+and mpfr_get_decimal64 (checks _Decimal64, and _GMP_IEEE_FLOATS is defined)
+
+------------------------------------------------------------------------
+r4190 | zimmerma | 2006-11-07 16:47:45 +0000 (Tue, 07 Nov 2006) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/get_d64.c
+ M /trunk/mpfr.h
+ M /trunk/set_d64.c
+ M /trunk/tests/tget_set_d64.c
+
+added --enable-decimal-float in configure, and corresponding macro
+WANT_DECIMAL_FLOATS
+
+------------------------------------------------------------------------
+r4189 | vlefevre | 2006-11-07 15:09:16 +0000 (Tue, 07 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+tests/tversion.c: improved error message and added gmp.h/libgmp test.
+
+------------------------------------------------------------------------
+r4188 | vlefevre | 2006-11-07 14:38:42 +0000 (Tue, 07 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+Fixed a small bug in tests/tversion.c (should never occur anyway).
+
+------------------------------------------------------------------------
+r4187 | vlefevre | 2006-11-06 01:23:37 +0000 (Mon, 06 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/logging.c
+
+logging.c: clean-up.
+
+------------------------------------------------------------------------
+r4186 | vlefevre | 2006-11-05 16:12:16 +0000 (Sun, 05 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: updated things to do before a release.
+
+------------------------------------------------------------------------
+r4185 | zimmerma | 2006-11-05 15:41:27 +0000 (Sun, 05 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_d64.c
+ M /trunk/get_str.c
+ M /trunk/mpfr.h
+ A /trunk/set_d64.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tget_set_d64.c
+
+added new (preliminary) conversions functions to/from decimal64
+
+------------------------------------------------------------------------
+r4184 | zimmerma | 2006-11-05 15:17:30 +0000 (Sun, 05 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/erfc.c
+
+changed header file: stdlib.h -> stdio.h
+
+------------------------------------------------------------------------
+r4183 | vlefevre | 2006-11-03 18:38:05 +0000 (Fri, 03 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Fixed a bug related to signed/unsigned types.
+
+------------------------------------------------------------------------
+r4182 | vlefevre | 2006-11-03 10:05:51 +0000 (Fri, 03 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+tgamma.c: avoid useless mpfr_get_d.
+
+------------------------------------------------------------------------
+r4181 | vlefevre | 2006-11-03 09:54:24 +0000 (Fri, 03 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+tpow.c: replaced a mpfr_cmp_d by a mpfr_cmp_str1.
+
+------------------------------------------------------------------------
+r4180 | vlefevre | 2006-11-03 09:50:45 +0000 (Fri, 03 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+lngamma.c: added a comment.
+
+------------------------------------------------------------------------
+r4179 | vlefevre | 2006-11-03 09:42:31 +0000 (Fri, 03 Nov 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tlngamma.c
+
+tlngamma.c: avoid useless mpfr_get_d.
+
+------------------------------------------------------------------------
+r4178 | vlefevre | 2006-10-27 21:21:56 +0000 (Fri, 27 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+
+eint.c: better overflow checking; fix: all allocated memory now freed.
+
+------------------------------------------------------------------------
+r4177 | vlefevre | 2006-10-27 17:03:32 +0000 (Fri, 27 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+
+eint.c: forgot 2 mpfr_clear's.
+
+------------------------------------------------------------------------
+r4174 | vlefevre | 2006-10-27 16:12:34 +0000 (Fri, 27 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+
+eint.c fix: and changed the #if into if.
+
+------------------------------------------------------------------------
+r4173 | vlefevre | 2006-10-27 16:10:22 +0000 (Fri, 27 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+
+eint.c fix: replaced BITS_PER_MP_LIMB by sizeof(mp_exp_t) * CHAR_BIT.
+
+------------------------------------------------------------------------
+r4172 | vlefevre | 2006-10-27 12:39:20 +0000 (Fri, 27 Oct 2006) | 4 lines
+Changed paths:
+ M /trunk/erfc.c
+ M /trunk/mpfr.texi
+
+The current implementation of mpfr_erfc cannot compute the result for
+large inputs. Return NaN with the erange flag set instead of aborting.
+Documented this behavior in mpfr.texi.
+
+------------------------------------------------------------------------
+r4171 | zimmerma | 2006-10-27 11:56:14 +0000 (Fri, 27 Oct 2006) | 3 lines
+Changed paths:
+ M /trunk/eint.c
+
+improved bound for x with BITS_PER_MP_LIMB=32
+ added bound for BITS_PER_MP_LIMB=64
+
+------------------------------------------------------------------------
+r4169 | vlefevre | 2006-10-27 01:30:32 +0000 (Fri, 27 Oct 2006) | 4 lines
+Changed paths:
+ M /trunk/eint.c
+ M /trunk/mpfr.texi
+
+The current implementation of mpfr_eint cannot compute the result for
+large inputs. Return NaN with the erange flag set instead of aborting.
+Documented this behavior in mpfr.texi.
+
+------------------------------------------------------------------------
+r4168 | vlefevre | 2006-10-27 00:59:33 +0000 (Fri, 27 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+tzeta.c patch 4166 should have been committed to the trunk. Fixing...
+
+------------------------------------------------------------------------
+r4167 | zimmerma | 2006-10-26 17:17:01 +0000 (Thu, 26 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+
+added tests for overflows or underflows
+
+------------------------------------------------------------------------
+r4166 | zimmerma | 2006-10-26 15:19:43 +0000 (Thu, 26 Oct 2006) | 2 lines
+Changed paths:
+ M /branches/new-generic-tests/tests/tzeta.c
+ M /trunk/zeta.c
+
+fixed problem for large negative s (return +Inf or -Inf)
+
+------------------------------------------------------------------------
+r4165 | zimmerma | 2006-10-26 13:55:26 +0000 (Thu, 26 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/coth.c
+
+fixed dummy error in last commit
+
+------------------------------------------------------------------------
+r4164 | vlefevre | 2006-10-26 08:52:01 +0000 (Thu, 26 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+
+In latest change, replaced exit(1) by abort().
+
+------------------------------------------------------------------------
+r4163 | zimmerma | 2006-10-26 08:18:23 +0000 (Thu, 26 Oct 2006) | 4 lines
+Changed paths:
+ M /trunk/eint.c
+ M /trunk/tests/teint.c
+
+added test for eint()
+added error message when input is too large in eint(), waiting for asymptotic
+ expansion
+
+------------------------------------------------------------------------
+r4162 | vlefevre | 2006-10-26 01:40:17 +0000 (Thu, 26 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/gen_inverse.h
+
+Untabified and added a FIXME.
+
+------------------------------------------------------------------------
+r4161 | zimmerma | 2006-10-25 17:49:57 +0000 (Wed, 25 Oct 2006) | 3 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/csch.c
+ M /trunk/gen_inverse.h
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tsech.c
+
+fixed overflow/underflow problems in csch and sech
+fixed problem for huge argument in coth
+
+------------------------------------------------------------------------
+r4159 | vlefevre | 2006-10-25 17:01:07 +0000 (Wed, 25 Oct 2006) | 9 lines
+Changed paths:
+ M /trunk/FAQ.html
+ M /trunk/faq.xsl
+ M /trunk/update-faq
+
+FAQ-related updates:
+ * faq.xsl: Include styles from http://www.mpfr.org/styles/visual.css
+ by using a system entity (but GNOME libxslt bug 345147 is still
+ present in Debian, so don't use /*<![CDATA[*/ and /*]]>*/ yet).
+ * update-faq: add /*<![CDATA[*/ and /*]]>*/ after calling xsltproc.
+ * FAQ.html: update from the MPFR web site: various changes, including:
+ + added id attributes on dt elements (FAQ items) to allow anchors;
+ + updated FAQ for undefined references.
+
+------------------------------------------------------------------------
+r4157 | vlefevre | 2006-10-25 14:18:59 +0000 (Wed, 25 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: mention the MPFR FAQ.
+
+------------------------------------------------------------------------
+r4155 | vlefevre | 2006-10-23 02:10:13 +0000 (Mon, 23 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/set_uj.c
+
+Added a comment about a warning (this confused a user).
+
+------------------------------------------------------------------------
+r4153 | vlefevre | 2006-10-11 11:43:07 +0000 (Wed, 11 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: added an item about version information.
+
+------------------------------------------------------------------------
+r4152 | vlefevre | 2006-10-05 14:40:39 +0000 (Thu, 05 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: updated item.
+
+------------------------------------------------------------------------
+r4151 | zimmerma | 2006-10-05 10:52:30 +0000 (Thu, 05 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item
+
+------------------------------------------------------------------------
+r4149 | zimmerma | 2006-10-02 19:55:09 +0000 (Mon, 02 Oct 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed wrong emax in example for mpfr_subnormalize
+
+------------------------------------------------------------------------
+r4147 | vlefevre | 2006-09-07 09:27:11 +0000 (Thu, 07 Sep 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+MPFR manual: say that errno may be set to non-zero.
+
+------------------------------------------------------------------------
+r4145 | vlefevre | 2006-08-31 12:26:29 +0000 (Thu, 31 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+tests/tests.c: typo.
+
+------------------------------------------------------------------------
+r4143 | vlefevre | 2006-08-28 12:09:10 +0000 (Mon, 28 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/texp2.c
+
+Fixed texp2 overflow tests on 64-bit machines.
+
+------------------------------------------------------------------------
+r4142 | vlefevre | 2006-08-28 11:58:54 +0000 (Mon, 28 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+tests/reuse.c: avoid a warning; code reformatted (GNU style).
+
+------------------------------------------------------------------------
+r4140 | vlefevre | 2006-08-23 14:08:12 +0000 (Wed, 23 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: minor update.
+
+------------------------------------------------------------------------
+r4138 | vlefevre | 2006-08-21 12:51:49 +0000 (Mon, 21 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: updated "known bugs" section.
+
+------------------------------------------------------------------------
+r4136 | vlefevre | 2006-08-21 12:40:20 +0000 (Mon, 21 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Fixed an exponent/flags-related bug in lngamma.c.
+
+------------------------------------------------------------------------
+r4134 | vlefevre | 2006-08-21 11:12:25 +0000 (Mon, 21 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk
+
+Updated svn:ignore property.
+
+------------------------------------------------------------------------
+r4133 | vlefevre | 2006-08-20 08:34:40 +0000 (Sun, 20 Aug 2006) | 5 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+Fixed several problems in pow.c concerning underflows, overflows and
+flags (including the inexact flag, which could be incorrectly set in
+case of NaN), and added some testcases. Problems in pow_z.c have not
+been fixed yet.
+
+------------------------------------------------------------------------
+r4131 | vlefevre | 2006-08-20 00:44:26 +0000 (Sun, 20 Aug 2006) | 5 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+
+Partial fix: The inexact flag was not always set in some functions.
+In particular, it is now set by mpfr_check_range (if t is not zero)
+since mpfr_check_range usually comes just after MPFR_SAVE_EXPO_FREE
+(which restores the previous flags).
+
+------------------------------------------------------------------------
+r4129 | vlefevre | 2006-08-19 14:33:23 +0000 (Sat, 19 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+Added an assertion for mpfr_exp2 and a test.
+
+------------------------------------------------------------------------
+r4127 | vlefevre | 2006-08-16 20:09:49 +0000 (Wed, 16 Aug 2006) | 5 lines
+Changed paths:
+ M /trunk/expm1.c
+
+Optimized mpfr_expm1 for large (in absolute value) negative values in
+order to avoid the TMD (the result is very close to -1). Without this
+patch, mpfr_expm1 could take dozens of MBs and the new generic tests
+for texpm1 could take several hours instead of less than 1 second.
+
+------------------------------------------------------------------------
+r4125 | vlefevre | 2006-08-16 16:31:25 +0000 (Wed, 16 Aug 2006) | 7 lines
+Changed paths:
+ M /trunk/expm1.c
+
+Fixed a bug in expm1 for very small negative arguments (and perhaps
+some very small positive arguments too); this bug is similar to the
+one in log1p that was recently found and fixed. It was detected by
+the new generic tests (not committed yet), therefore no testcases
+are provided. Note: the mpfr_expm1 function is still buggy (freezes
+on -0.10E18, prec 2 -> prec 13); this is a different bug.
+
+------------------------------------------------------------------------
+r4123 | vlefevre | 2006-08-16 09:20:00 +0000 (Wed, 16 Aug 2006) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+In mpfr_exp2, the overflow flag was not set if mpfr_exp2 overflowed
+with x < emax. Added testcase.
+
+------------------------------------------------------------------------
+r4121 | vlefevre | 2006-08-15 17:52:21 +0000 (Tue, 15 Aug 2006) | 4 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+The latest mpfr_exp2 fix contained a bug. Partially rewrote mpfr_exp2
+to fix this bug and another one (and added a corresponding testcase:
+exp2(10000000000.5), which was freezing).
+
+------------------------------------------------------------------------
+r4119 | vlefevre | 2006-08-15 11:37:20 +0000 (Tue, 15 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+Better fix for exp2 exponent range bug.
+
+------------------------------------------------------------------------
+r4117 | vlefevre | 2006-08-15 10:44:34 +0000 (Tue, 15 Aug 2006) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+Fixed bug in mpfr_exp2 when the argument is an integer and emin > 1.
+Added a testcase to texp2.
+
+------------------------------------------------------------------------
+r4116 | vlefevre | 2006-08-14 23:00:39 +0000 (Mon, 14 Aug 2006) | 3 lines
+Changed paths:
+ M /trunk/tests
+
+Added tget_ld_2exp to svn:ignore property of "tests" directory
+(should have been done in rev 4028).
+
+------------------------------------------------------------------------
+r4114 | vlefevre | 2006-08-14 22:23:01 +0000 (Mon, 14 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/log1p.c
+ M /trunk/tests/tlog1p.c
+
+Fixed bug in log1p for small negative values of x and added testcase.
+
+------------------------------------------------------------------------
+r4112 | vlefevre | 2006-08-14 17:39:01 +0000 (Mon, 14 Aug 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Code style correction for ansi2knr.
+
+------------------------------------------------------------------------
+r4110 | vlefevre | 2006-07-25 21:10:21 +0000 (Tue, 25 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: more information.
+
+------------------------------------------------------------------------
+r4108 | vlefevre | 2006-07-25 20:36:23 +0000 (Tue, 25 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: added a note about include/library paths.
+
+------------------------------------------------------------------------
+r4106 | vlefevre | 2006-07-21 08:22:40 +0000 (Fri, 21 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+INSTALL: added information about setup after the library installation.
+
+------------------------------------------------------------------------
+r4104 | vlefevre | 2006-07-20 07:23:06 +0000 (Thu, 20 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Improved linker flag settings on darwin.
+
+------------------------------------------------------------------------
+r4103 | vlefevre | 2006-07-18 07:51:58 +0000 (Tue, 18 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: fixed a linking problem on darwin.
+
+------------------------------------------------------------------------
+r4101 | vlefevre | 2006-07-16 02:52:18 +0000 (Sun, 16 Jul 2006) | 5 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/tests/Makefile.am
+
+One needs automake 1.6; autoreconf fails with automake 1.4. Adding
+the 1.6 automake option will make the error message less obfuscated,
+but unfortunately, one won't have the necessary automake version
+automatically called, even if it is installed.
+
+------------------------------------------------------------------------
+r4099 | zimmerma | 2006-07-05 14:35:36 +0000 (Wed, 05 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item
+
+------------------------------------------------------------------------
+r4098 | zimmerma | 2006-07-05 14:23:57 +0000 (Wed, 05 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/root.c
+
+fixed wrong comment (thanks Keith Briggs)
+
+------------------------------------------------------------------------
+r4097 | zimmerma | 2006-07-05 14:23:16 +0000 (Wed, 05 Jul 2006) | 2 lines
+Changed paths:
+ M /trunk/root.c
+
+new mpn_rootrem is still not in gmp-4.2
+
+------------------------------------------------------------------------
+r4096 | zimmerma | 2006-06-20 12:55:55 +0000 (Tue, 20 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+replaced <= by =
+
+------------------------------------------------------------------------
+r4095 | zimmerma | 2006-06-19 13:57:32 +0000 (Mon, 19 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+changed <= into =
+
+------------------------------------------------------------------------
+r4094 | zimmerma | 2006-06-19 09:10:38 +0000 (Mon, 19 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+comments from Keith Briggs
+
+------------------------------------------------------------------------
+r4093 | vlefevre | 2006-06-09 13:36:30 +0000 (Fri, 09 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: corrected several English mistakes and typography.
+
+------------------------------------------------------------------------
+r4092 | zimmerma | 2006-06-09 12:41:47 +0000 (Fri, 09 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+fixed typo
+
+------------------------------------------------------------------------
+r4091 | zimmerma | 2006-06-09 09:51:59 +0000 (Fri, 09 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+replaced error() by \error()
+
+------------------------------------------------------------------------
+r4090 | vlefevre | 2006-06-09 08:17:58 +0000 (Fri, 09 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: another fixed notation for roundings.
+
+------------------------------------------------------------------------
+r4089 | zimmerma | 2006-06-09 08:07:29 +0000 (Fri, 09 Jun 2006) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added section on Notations
+fixed notations for roundings
+
+------------------------------------------------------------------------
+r4088 | vlefevre | 2006-06-09 07:49:43 +0000 (Fri, 09 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+algorithms.tex: changed the page style to plain (for page numbers).
+
+------------------------------------------------------------------------
+r4086 | vlefevre | 2006-06-07 23:48:43 +0000 (Wed, 07 Jun 2006) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+
+------------------------------------------------------------------------
+r4083 | vlefevre | 2006-05-29 19:00:31 +0000 (Mon, 29 May 2006) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Define HAVE_ATTRIBUTE_MODE if supported; useful for s390, but incomplete
+and will fail on platforms with gcc and CHAR_BIT != 8.
+
+------------------------------------------------------------------------
+r4081 | vlefevre | 2006-05-19 16:43:35 +0000 (Fri, 19 May 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Add compiler flags (CPPFLAGS, LDFLAGS) in a consistent order.
+
+------------------------------------------------------------------------
+r4079 | vlefevre | 2006-05-18 00:10:06 +0000 (Thu, 18 May 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+MPFR manual consistency: Custom interface -> Custom Interface.
+
+------------------------------------------------------------------------
+r4075 | vlefevre | 2006-05-17 23:20:38 +0000 (Wed, 17 May 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: added a note about the change 4049 in div.c.
+
+------------------------------------------------------------------------
+r4072 | vlefevre | 2006-04-18 15:08:52 +0000 (Tue, 18 Apr 2006) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+Removed the #ifndef __hpux from mul.c (after a test on a HP-UX machine,
+I got no failures, even with the old mpfr-longlong.h).
+
+------------------------------------------------------------------------
+r4071 | vlefevre | 2006-04-18 14:38:10 +0000 (Tue, 18 Apr 2006) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added a point on mpfr-longlong.h in "To make a release".
+
+------------------------------------------------------------------------
+r4070 | vlefevre | 2006-04-18 14:37:19 +0000 (Tue, 18 Apr 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr-longlong.h
+
+Updated mpfr-longlong.h from the GMP 4.2 longlong.h file.
+
+------------------------------------------------------------------------
+r4068 | vlefevre | 2006-04-18 13:30:52 +0000 (Tue, 18 Apr 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr.texi: removed dot from a section title.
+
+------------------------------------------------------------------------
+r4066 | vlefevre | 2006-04-11 13:54:39 +0000 (Tue, 11 Apr 2006) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+
+------------------------------------------------------------------------
+r4065 | vlefevre | 2006-04-06 13:58:46 +0000 (Thu, 06 Apr 2006) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+div.c: removed the bad use of MPFR_LIMB_ZERO.
+
+------------------------------------------------------------------------
+r4064 | vlefevre | 2006-04-06 12:52:24 +0000 (Thu, 06 Apr 2006) | 3 lines
+Changed paths:
+ M /trunk/get_f.c
+
+In get_f.c, updated the case precy + sh > precx: this one was correct,
+but added a comment, assertions and simplified a MPN_ZERO.
+
+------------------------------------------------------------------------
+r4063 | vlefevre | 2006-04-05 16:32:23 +0000 (Wed, 05 Apr 2006) | 4 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+tget_f.c: test that there is no lost of accuracy when converting
+a mpfr_t number into a mpf_t number (test with various precisions
+and exponents).
+
+------------------------------------------------------------------------
+r4062 | vlefevre | 2006-04-05 15:52:26 +0000 (Wed, 05 Apr 2006) | 3 lines
+Changed paths:
+ M /trunk/get_f.c
+
+The fix of get_f.c was wrong. This should be now OK for the case
+precy + sh <= precx.
+
+------------------------------------------------------------------------
+r4061 | vlefevre | 2006-04-05 09:31:34 +0000 (Wed, 05 Apr 2006) | 2 lines
+Changed paths:
+ M /trunk/get_f.c
+ M /trunk/tests/tget_f.c
+
+Fixed bug in mpfr_get_f (reported by Yury Lukach) and added test.
+
+------------------------------------------------------------------------
+r4059 | vlefevre | 2006-03-31 16:47:40 +0000 (Fri, 31 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/fdl.texi
+
+Updated FDL to version 1.2.
+
+------------------------------------------------------------------------
+r4057 | vlefevre | 2006-03-31 16:30:52 +0000 (Fri, 31 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+ M /trunk/lngamma.c
+ M /trunk/mparam_h.in
+ M /trunk/mpzroot.c
+ M /trunk/tests/mpf_compat.h
+
+Updated FSF address.
+
+------------------------------------------------------------------------
+r4055 | vlefevre | 2006-03-31 14:19:52 +0000 (Fri, 31 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-longlong.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_ld_2exp.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Fixed FSF address.
+
+------------------------------------------------------------------------
+r4053 | vlefevre | 2006-03-30 14:41:30 +0000 (Thu, 30 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+Another FAQ update (taking GMP 4.2 into account).
+
+------------------------------------------------------------------------
+r4051 | vlefevre | 2006-03-30 14:22:52 +0000 (Thu, 30 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+FAQ update.
+
+------------------------------------------------------------------------
+r4050 | vlefevre | 2006-03-24 14:46:54 +0000 (Fri, 24 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-impl.h
+
+Removed all code related to mpn_sub_nc (no longer used).
+
+------------------------------------------------------------------------
+r4049 | vlefevre | 2006-03-24 13:51:52 +0000 (Fri, 24 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+div.c: fixed a bug and no longer use mpn_sub_nc.
+
+------------------------------------------------------------------------
+r4048 | vlefevre | 2006-03-24 12:43:41 +0000 (Fri, 24 Mar 2006) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+Some clean-up in div.c; do not steal GMP's namespace (could lead to
+clashes if future GMP versions define the corresponding macros).
+
+------------------------------------------------------------------------
+r4047 | vlefevre | 2006-03-24 08:49:28 +0000 (Fri, 24 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/configure.in
+
+Build shared libraries by default.
+
+------------------------------------------------------------------------
+r4046 | vlefevre | 2006-03-23 10:57:46 +0000 (Thu, 23 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+random2.c: minor change suggested by Patrick.
+
+------------------------------------------------------------------------
+r4044 | vlefevre | 2006-03-23 09:18:54 +0000 (Thu, 23 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+configure.in: typography consistency.
+
+------------------------------------------------------------------------
+r4043 | vlefevre | 2006-03-23 09:16:34 +0000 (Thu, 23 Mar 2006) | 4 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Mention --enable-thread-safe and --enable-shared in the INSTALL file
+since users may need them and could be confused otherwise (just seen
+that). Untabified the file.
+
+------------------------------------------------------------------------
+r4041 | vlefevre | 2006-03-16 18:10:24 +0000 (Thu, 16 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+TODO: new exception "division by zero" / "pole".
+
+------------------------------------------------------------------------
+r4040 | vlefevre | 2006-03-16 18:04:36 +0000 (Thu, 16 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: added "Do not use C99-only features, such as...".
+
+------------------------------------------------------------------------
+r4038 | zimmerma | 2006-03-16 14:49:50 +0000 (Thu, 16 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/expm1.c
+ M /trunk/log1p.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/zeta.c
+
+replaced 6th empty argument of MPFR_FAST_COMPUTE_IF_SMALL_INPUT by {}
+
+------------------------------------------------------------------------
+r4037 | vlefevre | 2006-03-14 16:07:28 +0000 (Tue, 14 Mar 2006) | 3 lines
+Changed paths:
+ M /trunk/random2.c
+
+In random2.c, replaced NULL by 0 (more general) and removed the
+now unnecessary #include <stdio.h>.
+
+------------------------------------------------------------------------
+r4036 | zimmerma | 2006-03-14 15:33:31 +0000 (Tue, 14 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+added missing include file
+
+------------------------------------------------------------------------
+r4035 | vlefevre | 2006-03-14 14:59:00 +0000 (Tue, 14 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Tests: added new worst case for x^(3/2).
+
+------------------------------------------------------------------------
+r4034 | zimmerma | 2006-03-02 17:28:41 +0000 (Thu, 02 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added reference to INRIA report for Zeta
+
+------------------------------------------------------------------------
+r4033 | zimmerma | 2006-03-02 11:05:35 +0000 (Thu, 02 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added another reference
+
+------------------------------------------------------------------------
+r4032 | zimmerma | 2006-03-02 11:02:23 +0000 (Thu, 02 Mar 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added reference
+
+------------------------------------------------------------------------
+r4031 | vlefevre | 2006-02-28 23:20:24 +0000 (Tue, 28 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+More details concerning mpfr_eq.
+
+------------------------------------------------------------------------
+r4030 | zimmerma | 2006-02-28 10:46:59 +0000 (Tue, 28 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+removed "but does not make much sense"
+
+------------------------------------------------------------------------
+r4029 | zimmerma | 2006-02-28 09:39:25 +0000 (Tue, 28 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added contribution from Damien
+
+------------------------------------------------------------------------
+r4028 | zimmerma | 2006-02-28 09:18:17 +0000 (Tue, 28 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tget_ld_2exp.c
+
+new test file for mpfr_get_ld_2exp
+
+------------------------------------------------------------------------
+r4027 | zimmerma | 2006-02-27 10:15:24 +0000 (Mon, 27 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+ M /trunk/get_ld.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+added mpfr_get_ld_2exp (contributed by Damien Stehle)
+
+------------------------------------------------------------------------
+r4026 | vlefevre | 2006-02-20 14:40:28 +0000 (Mon, 20 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Updated mpfr_random2 user documentation.
+
+------------------------------------------------------------------------
+r4024 | vlefevre | 2006-02-20 10:12:06 +0000 (Mon, 20 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+ M /trunk/tests/trandom.c
+
+Fixed bug in mpfr_random2 when size == 0 and added testcase.
+
+------------------------------------------------------------------------
+r4023 | vlefevre | 2006-02-20 10:07:41 +0000 (Mon, 20 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+trandom.c: reformat.
+
+------------------------------------------------------------------------
+r4022 | vlefevre | 2006-02-20 10:06:47 +0000 (Mon, 20 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+trandom.c: use calloc instead of malloc and check return value.
+
+------------------------------------------------------------------------
+r4021 | vlefevre | 2006-02-20 09:42:13 +0000 (Mon, 20 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+mpfr_random2_raw -> static.
+
+------------------------------------------------------------------------
+r4019 | vlefevre | 2006-02-17 08:17:46 +0000 (Fri, 17 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Added mpfr_remainder to TODO.
+
+------------------------------------------------------------------------
+r4018 | zimmerma | 2006-02-15 14:40:35 +0000 (Wed, 15 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+
+fixed wrong url
+
+------------------------------------------------------------------------
+r4017 | vlefevre | 2006-02-15 13:41:51 +0000 (Wed, 15 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+Fixed various spelling mistakes, typos... in algorithms.tex.
+
+------------------------------------------------------------------------
+r4016 | vlefevre | 2006-02-15 13:20:41 +0000 (Wed, 15 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+In algorithms.tex, \em -> \emph.
+
+------------------------------------------------------------------------
+r4015 | vlefevre | 2006-02-15 13:17:33 +0000 (Wed, 15 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+Typography corrections in algorithms.tex.
+
+------------------------------------------------------------------------
+r4014 | vlefevre | 2006-02-15 13:04:22 +0000 (Wed, 15 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+In algorithms.tex, added a missing blackslash.
+
+------------------------------------------------------------------------
+r4013 | vlefevre | 2006-02-15 13:02:07 +0000 (Wed, 15 Feb 2006) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+In algorithms.tex, removed \date (was incorrectly used) and added the
+web site as a footnote.
+
+------------------------------------------------------------------------
+r4012 | vlefevre | 2006-02-13 17:25:19 +0000 (Mon, 13 Feb 2006) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+ M /trunk/tests/trandom.c
+
+Code reformatted. C99 comment replaced by traditional comment.
+
+------------------------------------------------------------------------
+r4011 | hanrot | 2006-02-13 15:03:43 +0000 (Mon, 13 Feb 2006) | 6 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/random2.c
+ M /trunk/tests/trandom.c
+
+* Added comments on all random number generator functions ;
+* Inlined the mpn_random2 code in mpfr_random2, to avoid the use of the
+same internal randstate ; added a mpfr_random2_raw (not exported at the
+time) to allow specification of a randstate ;
+* Checked normalization of the result of random2 in trandom.c
+
+------------------------------------------------------------------------
+r4009 | vlefevre | 2006-01-31 09:53:51 +0000 (Tue, 31 Jan 2006) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Changed a part of the documentation of mpfr_get_d_2exp, introduced in
+rev 4008, to specify a behavior very similar to the ISO C standard.
+
+------------------------------------------------------------------------
+r4008 | zimmerma | 2006-01-31 07:28:05 +0000 (Tue, 31 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed documentation bug
+
+------------------------------------------------------------------------
+r4006 | vlefevre | 2006-01-19 15:00:18 +0000 (Thu, 19 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+ M /trunk/tests/tset_ld.c
+
+Reverted comments on <float.h> (that were added in r3976).
+
+------------------------------------------------------------------------
+r4005 | vlefevre | 2006-01-19 14:53:44 +0000 (Thu, 19 Jan 2006) | 6 lines
+Changed paths:
+ M /trunk/get_d.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_d.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_ld.c
+
+Replaced -0.0 by a new macro DBL_NEG_ZERO. With MSVC, the negative zero
+no longer depends on the non-standard _chgsign function, as
+ static double double_zero = 0.0;
+ # define DBL_NEG_ZERO (-double_zero)
+has been reported to work.
+
+------------------------------------------------------------------------
+r4004 | vlefevre | 2006-01-17 12:31:26 +0000 (Tue, 17 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Added comments.
+
+------------------------------------------------------------------------
+r4002 | vlefevre | 2006-01-13 14:37:25 +0000 (Fri, 13 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/get_f.c
+
+Type clean-up.
+
+------------------------------------------------------------------------
+r4001 | vlefevre | 2006-01-13 14:11:41 +0000 (Fri, 13 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+The problem with the conversion was not completely fixed... Now OK.
+
+------------------------------------------------------------------------
+r4000 | vlefevre | 2006-01-13 14:04:31 +0000 (Fri, 13 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+Fixed conversion with a non-representable value.
+
+------------------------------------------------------------------------
+r3999 | vlefevre | 2006-01-13 13:31:23 +0000 (Fri, 13 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+Untabify.
+
+------------------------------------------------------------------------
+r3997 | vlefevre | 2006-01-12 10:27:27 +0000 (Thu, 12 Jan 2006) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+More reliable tests for mpfr_set_f (x, y, GMP_RNDN) for
+y = 2^emax and y = 2^(emax-1).
+
+------------------------------------------------------------------------
+r3996 | vlefevre | 2006-01-12 10:15:33 +0000 (Thu, 12 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+Use mpfr_get_emax() instead of obsolete __mpfr_emax.
+
+------------------------------------------------------------------------
+r3995 | vlefevre | 2006-01-12 10:12:29 +0000 (Thu, 12 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+More reliable test for mpfr_set_f (x, y, GMP_RNDN) for y=2^ULONG_MAX.
+
+------------------------------------------------------------------------
+r3994 | vlefevre | 2006-01-12 10:00:45 +0000 (Thu, 12 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+Untabified.
+
+------------------------------------------------------------------------
+r3993 | vlefevre | 2006-01-12 09:56:13 +0000 (Thu, 12 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+Fixed a bug related to exponent range.
+
+------------------------------------------------------------------------
+r3992 | vlefevre | 2006-01-12 09:47:53 +0000 (Thu, 12 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+Replaced obsolete __mpfr_emax by __gmpfr_emax.
+
+------------------------------------------------------------------------
+r3990 | vlefevre | 2006-01-11 16:50:15 +0000 (Wed, 11 Jan 2006) | 2 lines
+Changed paths:
+ D /trunk/add_one_ulp.c
+ D /trunk/sub_one_ulp.c
+
+Removed add_one_ulp.c and sub_one_ulp.c (no longer used).
+
+------------------------------------------------------------------------
+r3987 | vlefevre | 2006-01-10 13:49:26 +0000 (Tue, 10 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+MPFR manual: changes from Paul concerning the ulps.
+
+------------------------------------------------------------------------
+r3986 | vlefevre | 2006-01-10 09:32:17 +0000 (Tue, 10 Jan 2006) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+In the manual, replaced "exact rounding" by "correct rounding",
+and added a sentence on the consequence of correct rounding (as
+suggested by Paul).
+
+------------------------------------------------------------------------
+r3985 | vlefevre | 2006-01-05 02:20:28 +0000 (Thu, 05 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/gamma.c
+ M /trunk/generic.c
+ M /trunk/get_exp.c
+ M /trunk/isinf.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/iszero.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/powerof2.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/set.c
+ M /trunk/set_exp.c
+ M /trunk/set_inf.c
+ M /trunk/set_nan.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/tanh.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Added ', Inc.' when missing after 'Free Software Foundation'.
+
+------------------------------------------------------------------------
+r3984 | vlefevre | 2006-01-05 02:14:39 +0000 (Thu, 05 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: Added a note about copyright notices.
+
+------------------------------------------------------------------------
+r3983 | vlefevre | 2006-01-05 02:02:47 +0000 (Thu, 05 Jan 2006) | 7 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/FAQ.html
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/abort_prec_max.c
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/faq.xsl
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/lngamma.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mparam_h.in
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-longlong.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mpzroot.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/rootrem.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/stack_interface.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlngamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstckintc.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsubnormal.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tests/tzeta_ui.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/zeta.c
+ M /trunk/zeta_ui.c
+
+Updated the copyright notices according to the new GNU rules on:
+ http://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices
+i.e. added 2006 to every MPFR file.
+Note: the copyright notices (currently 336) should match the regexp
+ Copyright.* 2006 Free Software
+so that it will be easier to update them for the next year...
+
+------------------------------------------------------------------------
+r3982 | zimmerma | 2006-01-03 11:49:03 +0000 (Tue, 03 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion from K. Briggs
+
+------------------------------------------------------------------------
+r3981 | vlefevre | 2006-01-01 22:22:53 +0000 (Sun, 01 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+Updated copyright line (we are now in 2006!).
+
+------------------------------------------------------------------------
+r3980 | zimmerma | 2006-01-01 21:09:01 +0000 (Sun, 01 Jan 2006) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+use mpfr_overflow
+
+------------------------------------------------------------------------
+r3979 | zimmerma | 2005-12-29 17:48:46 +0000 (Thu, 29 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+ M /trunk/tests/tset_f.c
+
+fixed bug in mpfr_set_f for huge argument
+
+------------------------------------------------------------------------
+r3978 | zimmerma | 2005-12-26 11:04:31 +0000 (Mon, 26 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/get_f.c
+ M /trunk/tests/tget_f.c
+
+bug fix in mpfr_get_f
+
+------------------------------------------------------------------------
+r3976 | zimmerma | 2005-12-23 15:45:17 +0000 (Fri, 23 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+ M /trunk/tests/tset_ld.c
+
+updated comment for float.h (_chgsign)
+
+------------------------------------------------------------------------
+r3975 | zimmerma | 2005-12-23 15:33:43 +0000 (Fri, 23 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+fixed bug found by Vincent (worst-case)
+
+------------------------------------------------------------------------
+r3974 | zimmerma | 2005-12-23 12:28:00 +0000 (Fri, 23 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+ M /trunk/tests/tset_ld.c
+
+patch for Visual C (does not compile -0.0 properly)
+
+------------------------------------------------------------------------
+r3973 | zimmerma | 2005-12-23 12:17:45 +0000 (Fri, 23 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+patch for Visual C (-0.0)
+
+------------------------------------------------------------------------
+r3972 | zimmerma | 2005-12-20 21:09:41 +0000 (Tue, 20 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+fixed typo
+
+------------------------------------------------------------------------
+r3971 | vlefevre | 2005-12-16 16:58:24 +0000 (Fri, 16 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+Better definition for mpf_set_prec_raw (so that the value is kept).
+
+------------------------------------------------------------------------
+r3970 | vlefevre | 2005-12-08 11:56:03 +0000 (Thu, 08 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+Updated a comment.
+
+------------------------------------------------------------------------
+r3969 | vlefevre | 2005-12-08 11:51:41 +0000 (Thu, 08 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+Added test cases for a bug introduced on 2005-01-29 in sin.c rev 3248.
+
+------------------------------------------------------------------------
+r3968 | vlefevre | 2005-12-08 02:12:03 +0000 (Thu, 08 Dec 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+README.dev: remember to test MPFR on the worst cases.
+
+------------------------------------------------------------------------
+r3967 | zimmerma | 2005-11-29 20:56:16 +0000 (Tue, 29 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added lemma + reference
+
+------------------------------------------------------------------------
+r3966 | vlefevre | 2005-11-25 01:36:29 +0000 (Fri, 25 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Removed mpfr_div bug from BUGS (as it has been fixed).
+
+------------------------------------------------------------------------
+r3964 | vlefevre | 2005-11-25 00:59:13 +0000 (Fri, 25 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+Added consistency tests for mpfr_div (e.g. to test small-size divisors).
+
+------------------------------------------------------------------------
+r3963 | zimmerma | 2005-11-24 20:39:23 +0000 (Thu, 24 Nov 2005) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+fixed efficiency bug for small divisor (division had same cost than for
+divisor of the same size than the result)
+
+------------------------------------------------------------------------
+r3960 | vlefevre | 2005-11-23 14:35:54 +0000 (Wed, 23 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+
+Updated FAQ.
+
+------------------------------------------------------------------------
+r3959 | vlefevre | 2005-11-23 14:35:38 +0000 (Wed, 23 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/faq.xsl
+
+faq.xsl: add copyright information to the downloaded FAQ.
+
+------------------------------------------------------------------------
+r3957 | vlefevre | 2005-11-23 10:53:04 +0000 (Wed, 23 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/README.dev
+ M /trunk/update-version
+
+Added information about the patches to the INSTALL file.
+
+------------------------------------------------------------------------
+r3956 | vlefevre | 2005-11-23 08:38:39 +0000 (Wed, 23 Nov 2005) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+
+BUGS: Noted the slow division when the precision of the divisor
+is small compared to the precision of the target.
+
+------------------------------------------------------------------------
+r3955 | vlefevre | 2005-11-21 20:31:47 +0000 (Mon, 21 Nov 2005) | 3 lines
+Changed paths:
+ M /trunk/rootrem.c
+
+Fixed a bug preventing the compilation of MPFR with GMP 4.1.90
+(non-public development version) without the build directory.
+
+------------------------------------------------------------------------
+r3954 | vlefevre | 2005-11-21 14:43:49 +0000 (Mon, 21 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/rootrem.c
+
+Fixed memory leak in mpfr_mpn_rootrem().
+
+------------------------------------------------------------------------
+r3953 | vlefevre | 2005-11-09 16:34:09 +0000 (Wed, 09 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Added a note about running the trunk tests in a branch.
+
+------------------------------------------------------------------------
+r3952 | vlefevre | 2005-11-09 16:18:35 +0000 (Wed, 09 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tinternals.c
+ M /trunk/tests/tzeta_ui.c
+
+Make trunk tests work with MPFR 2.2 (branch), by testing the version.
+
+------------------------------------------------------------------------
+r3951 | vlefevre | 2005-11-09 16:09:16 +0000 (Wed, 09 Nov 2005) | 2 lines
+Changed paths:
+ D /trunk/tests/.cvsignore
+
+Removed .cvsignore file (useless after the switch to Subversion).
+
+------------------------------------------------------------------------
+r3948 | vlefevre | 2005-11-09 15:42:41 +0000 (Wed, 09 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/cache.c
+
+Added a MPFR_UNLIKELY.
+
+------------------------------------------------------------------------
+r3947 | vlefevre | 2005-11-09 14:41:46 +0000 (Wed, 09 Nov 2005) | 5 lines
+Changed paths:
+ M /trunk/round_near_x.c
+
+In mpfr_round_near_x, use the new MPFR_RNDRAW_GEN with a correct middle
+handler instead of MPFR_RNDRAW_EVEN so that the correction of the wrong
+rounding is no longer necessary (BTW, the wrong rounding could have lead
+to problems in case of intermediate underflow/overflow -- not checked).
+
+------------------------------------------------------------------------
+r3946 | vlefevre | 2005-11-09 14:05:46 +0000 (Wed, 09 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tinternals.c
+
+mpfr_round_near_x test completed.
+
+------------------------------------------------------------------------
+r3945 | vlefevre | 2005-11-09 11:57:03 +0000 (Wed, 09 Nov 2005) | 9 lines
+Changed paths:
+ M /trunk/tests/tcbrt.c
+
+Added a test for mpfr_cbrt, from the following failure with MPFR 2.2
+and gcc 4.0.2 under Linux/m68k:
+ Seed GMP_CHECK_RANDOMIZE=1131612275 (include this in bug reports)
+ results differ for x=1.1000e-2 prec=5 rnd_mode=GMP_RNDN
+ got 1.1000e-1
+ expected 1.0111e-1
+ approx 0.101110001001100E0
+ FAIL: tcbrt
+
+------------------------------------------------------------------------
+r3943 | vlefevre | 2005-11-04 22:11:53 +0000 (Fri, 04 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Improved note r3493 concerning mpfr_set_d/ld.
+
+------------------------------------------------------------------------
+r3941 | vlefevre | 2005-11-04 14:26:49 +0000 (Fri, 04 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+More information in the "Reporting Bugs" section.
+
+------------------------------------------------------------------------
+r3940 | vlefevre | 2005-11-04 01:28:04 +0000 (Fri, 04 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Added a comment about the macros MPFR_RNDRAW* and the labels.
+
+------------------------------------------------------------------------
+r3939 | vlefevre | 2005-11-04 00:58:23 +0000 (Fri, 04 Nov 2005) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+Moved definitions of struct __gmpfr_cache_s and mpfr_cache_t, and
+declarations of mpfr_init_cache, mpfr_clear_cache and mpfr_cache
+from mpfr.h to mpfr-impl.h as they are internal (not documented).
+
+------------------------------------------------------------------------
+r3938 | vlefevre | 2005-11-03 16:39:31 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tinternals.c
+
+Eliminated the case inex == 0.
+
+------------------------------------------------------------------------
+r3937 | vlefevre | 2005-11-03 16:26:38 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tinternals.c
+
+Started to write code to test mpfr_round_near_x.
+
+------------------------------------------------------------------------
+r3936 | vlefevre | 2005-11-03 14:32:01 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/strtofr.c
+
+Typos & English usage.
+
+------------------------------------------------------------------------
+r3935 | vlefevre | 2005-11-03 14:27:26 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/round_near_x.c
+
+Fixed typos.
+
+------------------------------------------------------------------------
+r3934 | zimmerma | 2005-11-03 09:24:43 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added hint on forbidden variable name
+
+------------------------------------------------------------------------
+r3932 | zimmerma | 2005-11-03 07:35:53 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added "tune" item for new releases
+
+------------------------------------------------------------------------
+r3931 | zimmerma | 2005-11-03 07:24:38 +0000 (Thu, 03 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+done make tune for amd64 with gmp-4.1.4
+
+------------------------------------------------------------------------
+r3929 | vlefevre | 2005-11-02 17:22:13 +0000 (Wed, 02 Nov 2005) | 15 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/hypot.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/thypot.c
+
+Merged the changes from branch vlefevre:
+ * mpfr-impl.h: Added MPFR_RNDRAW_GEN based on MPFR_RNDRAW and
+ MPFR_RNDRAW_EVEN codes, but taking an additional argument: a
+ handler executed in rounding to nearest mode when the value
+ is the middle of two consecutive numbers in dest precision.
+ MPFR_RNDRAW and MPFR_RNDRAW_EVEN are now defined by a "call"
+ to MPFR_RNDRAW_GEN.
+ * cache.c: Clean-up and use MPFR_RNDRAW_GEN instead of
+ MPFR_RNDRAW_EVEN to avoid an unnecessary correction in the
+ halfway case.
+ * hypot.c: Fixed mpfr_hypot when the rounding mode is to nearest,
+ x is "much larger" than y, and x is the middle of two consecutive
+ numbers in the target precision.
+ * tests/thypot.c: Added the corresponding testcase.
+
+------------------------------------------------------------------------
+r3928 | vlefevre | 2005-11-02 17:09:25 +0000 (Wed, 02 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk
+ M /trunk/tests
+
+Updated svn:ignore property.
+
+------------------------------------------------------------------------
+r3926 | zimmerma | 2005-11-02 16:12:59 +0000 (Wed, 02 Nov 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+fixed remaining problems
+
+------------------------------------------------------------------------
+r3924 | zimmerma | 2005-11-02 13:49:00 +0000 (Wed, 02 Nov 2005) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+
+declared variables as mp_prec_t instead of int
+use MPFR_MPZ_SIZEINBASE2 instead of mpz_sizeinbase
+
+------------------------------------------------------------------------
+r3919 | vlefevre | 2005-11-02 09:27:53 +0000 (Wed, 02 Nov 2005) | 5 lines
+Changed paths:
+ M /trunk/constant.c
+ M /trunk/mpfr-impl.h
+
+Reverted the latest change to constant.c: removed MPFR_THREAD_ATTR as
+these constants can be shared. Removed MPFR_THREAD_ATTR from mpfr-impl.h
+too (this should have been the right correction for rev 3838 concerning
+the type mismatch). Thanks to Patrick for noticing this.
+
+------------------------------------------------------------------------
+r3918 | vlefevre | 2005-10-31 21:27:08 +0000 (Mon, 31 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/int_ceil_log2.c
+ M /trunk/mpfr-impl.h
+
+Added an MPFR_UNLIKELY (suggested by Patrick) and an MPFR_ASSERTN.
+
+------------------------------------------------------------------------
+r3917 | zimmerma | 2005-10-31 18:55:13 +0000 (Mon, 31 Oct 2005) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/exp3.c
+
+factored calls to gmp_alloc
+removed unused variables
+
+------------------------------------------------------------------------
+r3916 | zimmerma | 2005-10-31 14:49:45 +0000 (Mon, 31 Oct 2005) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/atan.c
+ M /trunk/tanh.c
+
+improved atan (now can cut series before 2^m)
+revised error analysis and code of tanh
+
+------------------------------------------------------------------------
+r3915 | vlefevre | 2005-10-31 12:17:09 +0000 (Mon, 31 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/log10.c
+
+Reformat (GNU coding style).
+
+------------------------------------------------------------------------
+r3914 | vlefevre | 2005-10-31 12:08:13 +0000 (Mon, 31 Oct 2005) | 5 lines
+Changed paths:
+ M /trunk/div_ui.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul_ui.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tinternals.c
+
+Fixed MPFR_INT_CEIL_LOG2 (in mpfr-impl.h) and __gmpfr_int_ceil_log2
+(in int_ceil_log2.c) when the argument is a power of 2, and added a
+test (new test file tests/tinternals.c). This made a bug appear in
+div_ui.c and mul_ui.c; fixed that too.
+
+------------------------------------------------------------------------
+r3913 | vlefevre | 2005-10-31 11:43:58 +0000 (Mon, 31 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+Added a test that fails after fixing MPFR_INT_CEIL_LOG2.
+
+------------------------------------------------------------------------
+r3912 | zimmerma | 2005-10-30 20:07:45 +0000 (Sun, 30 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/exp3.c
+ M /trunk/tests/texp.c
+
+improved exp_3 (binary-splitting algorithm)
+
+------------------------------------------------------------------------
+r3911 | vlefevre | 2005-10-30 14:50:52 +0000 (Sun, 30 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Fixed padding-bit test.
+
+------------------------------------------------------------------------
+r3910 | vlefevre | 2005-10-30 13:20:46 +0000 (Sun, 30 Oct 2005) | 5 lines
+Changed paths:
+ M /trunk/cos.c
+
+3 corrections in cos.c concerning maxi:
+ * corrected a comment;
+ * failed if sizeof(int) <= sizeof(long) / 2;
+ * now take possible padding bits into account.
+
+------------------------------------------------------------------------
+r3909 | zimmerma | 2005-10-29 21:07:36 +0000 (Sat, 29 Oct 2005) | 4 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/exp3.c
+ M /trunk/root.c
+ M /trunk/rootrem.c
+
+patched root.c to use rootrem.c with gmp-4.1.90
+added comment in exp3.c
+added more initial guard bits in agm
+
+------------------------------------------------------------------------
+r3908 | zimmerma | 2005-10-29 13:14:20 +0000 (Sat, 29 Oct 2005) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mulders.c
+ M /trunk/sqr.c
+ M /trunk/tuneup.c
+
+now tune Mulders short square (not yet used)
+improved mpfr_cos
+
+------------------------------------------------------------------------
+r3907 | zimmerma | 2005-10-26 15:45:42 +0000 (Wed, 26 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/root.c
+ M /trunk/rootrem.c
+
+updated code for gmp-dev
+
+------------------------------------------------------------------------
+r3906 | vlefevre | 2005-10-26 11:28:36 +0000 (Wed, 26 Oct 2005) | 2 lines
+Changed paths:
+ D /trunk/.cvsignore
+
+Removed .cvsignore file (useless after the switch to Subversion).
+
+------------------------------------------------------------------------
+r3903 | vlefevre | 2005-10-25 01:33:31 +0000 (Tue, 25 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/update-version
+
+More portable update-version script (use perl instead of sed).
+
+------------------------------------------------------------------------
+r3889 | vlefevre | 2005-10-24 13:43:07 +0000 (Mon, 24 Oct 2005) | 4 lines
+Changed paths:
+ M /trunk/README
+ M /trunk/README.dev
+ D /trunk/fixperm
+
+First revision after the switch to Subversion:
+ * Removed fixperm as it is now useless.
+ * Updated README and README.dev files.
+
+------------------------------------------------------------------------
+r3888 | vlefevre | 2005-10-24 11:29:40 +0000 (Mon, 24 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3887 | zimmerma | 2005-10-19 20:23:44 +0000 (Wed, 19 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/algorithms.tex
+
+documented algorithm used in mpfr_agm and fixed code accordingly
+
+------------------------------------------------------------------------
+r3886 | zimmerma | 2005-10-10 09:43:26 +0000 (Mon, 10 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added efficiency item
+
+------------------------------------------------------------------------
+r3885 | zimmerma | 2005-10-10 09:16:44 +0000 (Mon, 10 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/mpzroot.c
+ M /trunk/root.c
+ M /trunk/rootrem.c
+
+now mpzroot/rootrem compile without gmp internal headers
+
+------------------------------------------------------------------------
+r3884 | vlefevre | 2005-10-07 16:43:40 +0000 (Fri, 07 Oct 2005) | 3 lines
+Changed paths:
+ M /trunk/root.c
+
+Disabled new rootrem/mpz_root as compilation fails (headers can't
+be found).
+
+------------------------------------------------------------------------
+r3883 | vlefevre | 2005-10-07 16:30:45 +0000 (Fri, 07 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Temporary optimization (patch from Patrick Pelissier).
+
+------------------------------------------------------------------------
+r3882 | vlefevre | 2005-10-06 10:03:56 +0000 (Thu, 06 Oct 2005) | 4 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+One of the tests was using the fabs function, but -lm isn't given when
+generating the executable, making the linking fail under HP-UX. Fixed
+by not using this fabs function.
+
+------------------------------------------------------------------------
+r3880 | zimmerma | 2005-10-05 21:57:48 +0000 (Wed, 05 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+small improvement in sign detection
+
+------------------------------------------------------------------------
+r3879 | zimmerma | 2005-10-05 20:36:56 +0000 (Wed, 05 Oct 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/mpzroot.c
+ M /trunk/root.c
+ A /trunk/rootrem.c
+
+improved mpfr_root, using the new mpn_rootrem code written with Torbjo"rn
+
+------------------------------------------------------------------------
+r3876 | vlefevre | 2005-09-29 09:52:33 +0000 (Thu, 29 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3875 | vlefevre | 2005-09-29 09:47:08 +0000 (Thu, 29 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/tests/tset_si.c
+
+Fixed bug in mpfr_set_ui macro when parameters are expressions
+with side effects.
+
+------------------------------------------------------------------------
+r3874 | zimmerma | 2005-09-29 06:40:15 +0000 (Thu, 29 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+fixed missing accent
+
+------------------------------------------------------------------------
+r3873 | vlefevre | 2005-09-28 15:30:17 +0000 (Wed, 28 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Small optimization.
+
+------------------------------------------------------------------------
+r3872 | vlefevre | 2005-09-28 14:28:19 +0000 (Wed, 28 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tlngamma.c
+
+Test the sign of 0.
+
+------------------------------------------------------------------------
+r3871 | zimmerma | 2005-09-28 14:14:42 +0000 (Wed, 28 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+ M /trunk/tests/tlngamma.c
+
+fixed infinite loop for lngamma(2)
+
+------------------------------------------------------------------------
+r3870 | vlefevre | 2005-09-28 00:45:27 +0000 (Wed, 28 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Updated libmpfr_la_LDFLAGS (note: it shouldn't be incremented again
+before the 2.3.0 release).
+
+------------------------------------------------------------------------
+r3869 | zimmerma | 2005-09-26 16:28:47 +0000 (Mon, 26 Sep 2005) | 2 lines
+Changed paths:
+ A /trunk/zeta_ui.c
+
+new function: Zeta with integer argument
+
+------------------------------------------------------------------------
+r3868 | zimmerma | 2005-09-23 21:35:03 +0000 (Fri, 23 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tzeta_ui.c
+
+new function mpfr_zeta_ui for integer argument
+
+------------------------------------------------------------------------
+r3867 | zimmerma | 2005-09-21 13:51:34 +0000 (Wed, 21 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added brief description of algorithm for mpfr_zeta
+
+------------------------------------------------------------------------
+r3863 | vlefevre | 2005-09-18 23:36:44 +0000 (Sun, 18 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Mentioned problems with the Tru64 make and other minor changes.
+
+------------------------------------------------------------------------
+r3861 | vlefevre | 2005-09-17 10:24:43 +0000 (Sat, 17 Sep 2005) | 5 lines
+Changed paths:
+ M /trunk/configure.in
+
+Fixed the GMP linking test: replaced __gmp_version, which corresponds
+to a variable, by __gmpz_init (suggested by the GMP documentation),
+which corresponds to a function, as the auto tools assume the symbol
+corresponds to a function. It was failing with the AIX linker.
+
+------------------------------------------------------------------------
+r3857 | vlefevre | 2005-09-16 14:22:40 +0000 (Fri, 16 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/const_euler.c
+
+Untabify.
+
+------------------------------------------------------------------------
+r3856 | vlefevre | 2005-09-16 13:22:53 +0000 (Fri, 16 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3854 | vlefevre | 2005-09-16 10:58:41 +0000 (Fri, 16 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Untabify.
+
+------------------------------------------------------------------------
+r3852 | zimmerma | 2005-09-16 09:41:47 +0000 (Fri, 16 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added missing documentation for mpfr_get_f and mpfr_pow_z
+
+------------------------------------------------------------------------
+r3851 | vlefevre | 2005-09-16 08:02:15 +0000 (Fri, 16 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fixed typos found by Tomonori Kouya.
+
+------------------------------------------------------------------------
+r3850 | zimmerma | 2005-09-16 07:38:22 +0000 (Fri, 16 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/coth.c
+ M /trunk/tests/tcoth.c
+
+fixed stupid bug (coth was computing 1/tan instead of 1/tanh)
+
+------------------------------------------------------------------------
+r3849 | zimmerma | 2005-09-15 21:55:08 +0000 (Thu, 15 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/const_euler.c
+
+fixed overflow problem for large precision
+
+------------------------------------------------------------------------
+r3848 | zimmerma | 2005-09-15 21:11:25 +0000 (Thu, 15 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+added log(precz) in initial precision
+
+------------------------------------------------------------------------
+r3844 | zimmerma | 2005-09-13 12:57:38 +0000 (Tue, 13 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/tests/texp.c
+
+fixed bug in exp(-eps) for rounding toward zero (test was also wrong...)
+
+------------------------------------------------------------------------
+r3843 | vlefevre | 2005-09-13 02:05:56 +0000 (Tue, 13 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Updated "To make a release".
+
+------------------------------------------------------------------------
+r3839 | vlefevre | 2005-09-13 01:32:41 +0000 (Tue, 13 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Minor update.
+
+------------------------------------------------------------------------
+r3838 | vlefevre | 2005-09-13 01:28:09 +0000 (Tue, 13 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/constant.c
+
+Added missing MPFR_THREAD_ATTR.
+
+------------------------------------------------------------------------
+r3835 | vlefevre | 2005-09-11 22:50:06 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tuneup.c
+
+Avoid a conflict with GMP.
+
+------------------------------------------------------------------------
+r3834 | vlefevre | 2005-09-11 22:37:58 +0000 (Sun, 11 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/mparam_h.in
+ M /trunk/mul.c
+ M /trunk/tuneup.c
+
+Reverted to previous mparam_h.in and mul.c, and applied Patrick's
+patch instead.
+
+------------------------------------------------------------------------
+r3832 | vlefevre | 2005-09-11 22:15:29 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3830 | vlefevre | 2005-09-11 21:59:31 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tstckintc.c
+
+Added #include <string.h> for memmove (see ISO C99 standard).
+
+------------------------------------------------------------------------
+r3829 | vlefevre | 2005-09-11 21:56:32 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Minor change.
+
+------------------------------------------------------------------------
+r3828 | vlefevre | 2005-09-11 21:55:20 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/trint.c
+
+Fixed uninitialized variable (with gcc -std=c99).
+
+------------------------------------------------------------------------
+r3827 | vlefevre | 2005-09-11 21:43:14 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fixed a #ifdef (when --enable-assert isn't used).
+
+------------------------------------------------------------------------
+r3824 | vlefevre | 2005-09-11 18:21:02 +0000 (Sun, 11 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3823 | vlefevre | 2005-09-11 17:56:43 +0000 (Sun, 11 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/int_ceil_log2.c
+ M /trunk/mpfr-impl.h
+
+Changed the MPFR_ASSERTD into a MPFR_ASSERTN for MPFR_INT_CEIL_LOG2
+since the assertion cannot be guaranteed for every C implementation.
+
+------------------------------------------------------------------------
+r3822 | pelissip | 2005-09-10 15:20:48 +0000 (Sat, 10 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fix spelling mistake.
+
+------------------------------------------------------------------------
+r3821 | pelissip | 2005-09-10 15:17:54 +0000 (Sat, 10 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add new note about MPFR_TMP_DECL
+
+------------------------------------------------------------------------
+r3819 | zimmerma | 2005-09-09 14:45:54 +0000 (Fri, 09 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+reduced default of MPFR_MUL_THRESHOLD by 1, since now MPFR_MUL_THRESHOLD+1
+is considered in mul.c
+
+------------------------------------------------------------------------
+r3818 | vlefevre | 2005-09-09 14:37:51 +0000 (Fri, 09 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+Fixed another LaTeX error.
+
+------------------------------------------------------------------------
+r3817 | vlefevre | 2005-09-09 14:26:08 +0000 (Fri, 09 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3816 | vlefevre | 2005-09-09 12:09:47 +0000 (Fri, 09 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Updated "To make a release".
+
+------------------------------------------------------------------------
+r3815 | vlefevre | 2005-09-09 10:21:11 +0000 (Fri, 09 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Use (mpz_t *) 0 instead of NULL (this is not less clear and this
+works with the native SunOS 4 C compiler).
+
+------------------------------------------------------------------------
+r3814 | zimmerma | 2005-09-09 09:33:04 +0000 (Fri, 09 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+avoid . in mpf_set_str (locale-sensitive)
+
+------------------------------------------------------------------------
+r3813 | zimmerma | 2005-09-09 09:26:22 +0000 (Fri, 09 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/lngamma.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tlngamma.c
+
+cleanup of gamma and lngamma
+
+------------------------------------------------------------------------
+r3812 | zimmerma | 2005-09-08 09:37:46 +0000 (Thu, 08 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+MUL_THRESHOLD -> MUL_THRESHOLD+1 (to allow MUL_THRESHOLD=0, needed for
+tuneup.c)
+
+------------------------------------------------------------------------
+r3811 | zimmerma | 2005-09-08 09:21:02 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+fixed LaTeX error
+
+------------------------------------------------------------------------
+r3809 | vlefevre | 2005-09-08 09:12:20 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Fix.
+
+------------------------------------------------------------------------
+r3808 | vlefevre | 2005-09-08 09:08:46 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3804 | vlefevre | 2005-09-08 09:02:58 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ A /trunk/fixperm
+
+Added fixperm script to fix the file permissions broken by CVS.
+
+------------------------------------------------------------------------
+r3803 | vlefevre | 2005-09-08 09:01:50 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update.
+
+------------------------------------------------------------------------
+r3798 | zimmerma | 2005-09-08 06:48:10 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item
+
+------------------------------------------------------------------------
+r3797 | vlefevre | 2005-09-08 06:45:52 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3795 | vlefevre | 2005-09-08 02:51:45 +0000 (Thu, 08 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Fix: readded dependencies.
+
+------------------------------------------------------------------------
+r3793 | vlefevre | 2005-09-06 14:37:32 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tversion.c
+
+More detailed error message.
+
+------------------------------------------------------------------------
+r3791 | vlefevre | 2005-09-06 13:54:57 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Change for ansi2knr.
+
+------------------------------------------------------------------------
+r3790 | vlefevre | 2005-09-06 13:42:02 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Code clean-up (again).
+
+------------------------------------------------------------------------
+r3789 | vlefevre | 2005-09-06 13:31:12 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Use GMP's allocate functions instead of C's. Code clean-up.
+
+------------------------------------------------------------------------
+r3788 | vlefevre | 2005-09-06 13:02:37 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/lngamma.c
+
+Reformat.
+
+------------------------------------------------------------------------
+r3787 | zimmerma | 2005-09-06 12:42:39 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+missing set_emin
+
+------------------------------------------------------------------------
+r3786 | zimmerma | 2005-09-06 12:25:03 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+added missing call to MPFR_TEST_USE_RANDS() [3 blocks non-freed]
+
+------------------------------------------------------------------------
+r3784 | vlefevre | 2005-09-06 12:00:54 +0000 (Tue, 06 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+Fixed a bug (detected after mpfr_set_str_binary has been fixed)
+in tests/tsub.c introduced in 1.6 (2001-10-19).
+
+------------------------------------------------------------------------
+r3783 | vlefevre | 2005-09-06 11:50:09 +0000 (Tue, 06 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+mpfr_set_str_binary was buggy and inefficient. Let's use mpfr_strtofr.
+
+------------------------------------------------------------------------
+r3781 | vlefevre | 2005-09-06 11:30:40 +0000 (Tue, 06 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Replaced unsigned long bit-fields (GCC extension) by insigned int
+bit-fields.
+
+------------------------------------------------------------------------
+r3779 | vlefevre | 2005-09-05 13:28:20 +0000 (Mon, 05 Sep 2005) | 4 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+MPN_COPY now calls memcpy only if dst != src (otherwise this is an
+undefined behavior), and if WANT_ASSERT is defined, it checks that
+there is no overlap.
+
+------------------------------------------------------------------------
+r3776 | vlefevre | 2005-09-02 14:08:09 +0000 (Fri, 02 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Avoid MIPSpro / IRIX64 (incorrect) optimizations for DOUBLE_ISNAN.
+
+------------------------------------------------------------------------
+r3775 | vlefevre | 2005-09-02 13:25:32 +0000 (Fri, 02 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-impl.h
+
+More portable DOUBLE_ISNAN (useful for MIPSpro under IRIX64).
+
+------------------------------------------------------------------------
+r3774 | zimmerma | 2005-09-02 12:55:37 +0000 (Fri, 02 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+improved trade-off between fac_ui and gamma when argument is integer
+
+------------------------------------------------------------------------
+r3773 | vlefevre | 2005-09-02 12:33:24 +0000 (Fri, 02 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Reformat.
+
+------------------------------------------------------------------------
+r3772 | zimmerma | 2005-09-02 09:52:07 +0000 (Fri, 02 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed remaining problem in gamma
+removed LogGamma from TODO
+
+------------------------------------------------------------------------
+r3771 | vlefevre | 2005-09-02 08:17:37 +0000 (Fri, 02 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/sub1sp.c
+
+Do not put expressions with side effects in MPFR_ASSERTN.
+
+------------------------------------------------------------------------
+r3770 | zimmerma | 2005-09-01 21:44:42 +0000 (Thu, 01 Sep 2005) | 3 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+now uses lngamma code for x < 1 too
+added new tests from Kenneth Wilder
+
+------------------------------------------------------------------------
+r3769 | zimmerma | 2005-09-01 11:54:57 +0000 (Thu, 01 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+added another test
+
+------------------------------------------------------------------------
+r3768 | zimmerma | 2005-09-01 08:59:19 +0000 (Thu, 01 Sep 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+removed useless prototype
+
+------------------------------------------------------------------------
+r3764 | vlefevre | 2005-08-31 23:57:06 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+Fixed memory leak (missing MPFR_TMP_FREE in a particular case).
+
+------------------------------------------------------------------------
+r3763 | vlefevre | 2005-08-31 23:52:53 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+Fixed the code formatting.
+
+------------------------------------------------------------------------
+r3762 | vlefevre | 2005-08-31 23:38:13 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Updated Point 6 of "To make a release".
+
+------------------------------------------------------------------------
+r3761 | vlefevre | 2005-08-31 23:27:29 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Fixed memory leak (missing MPFR_TMP_FREE in a particular case).
+
+------------------------------------------------------------------------
+r3759 | zimmerma | 2005-08-31 20:32:03 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added lngamma
+
+------------------------------------------------------------------------
+r3758 | zimmerma | 2005-08-31 20:29:36 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added new test (emax)
+
+------------------------------------------------------------------------
+r3757 | zimmerma | 2005-08-31 20:28:25 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+now random tests also use x >= 1
+
+------------------------------------------------------------------------
+r3756 | zimmerma | 2005-08-31 20:26:33 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+added SAVE_EXPO stuff
+
+------------------------------------------------------------------------
+r3754 | zimmerma | 2005-08-31 20:25:36 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ A /trunk/lngamma.c
+ M /trunk/mpfr.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tlngamma.c
+
+new function lngamma
+
+------------------------------------------------------------------------
+r3753 | zimmerma | 2005-08-31 20:24:16 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+now uses lngamma code for x > 1
+
+------------------------------------------------------------------------
+r3752 | zimmerma | 2005-08-31 20:23:06 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added lngamma
+
+------------------------------------------------------------------------
+r3750 | vlefevre | 2005-08-31 12:21:14 +0000 (Wed, 31 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/VERSION
+ M /trunk/configure.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated version to 2.3.0.
+
+------------------------------------------------------------------------
+r3749 | vlefevre | 2005-08-31 12:18:31 +0000 (Wed, 31 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+Fix for the following problem: #error is not sufficient with cc
+on IRIX64, and autoconf 2.59 doesn't cope with that.
+
+------------------------------------------------------------------------
+r3745 | vlefevre | 2005-08-30 13:23:51 +0000 (Tue, 30 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk
+ A /trunk/.cvsignore
+ M /trunk/tests
+ A /trunk/tests/.cvsignore
+
+Added .cvsignore files.
+
+------------------------------------------------------------------------
+r3744 | vlefevre | 2005-08-30 12:08:42 +0000 (Tue, 30 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Unobfuscated 2 assertions.
+
+------------------------------------------------------------------------
+r3743 | vlefevre | 2005-08-30 11:59:12 +0000 (Tue, 30 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Fixed indentation and some comments.
+
+------------------------------------------------------------------------
+r3742 | vlefevre | 2005-08-30 11:49:24 +0000 (Tue, 30 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Recommitted the patch (without discarding previous modifications).
+
+------------------------------------------------------------------------
+r3741 | vlefevre | 2005-08-30 11:46:58 +0000 (Tue, 30 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+Reverted to the previous version, as the patch discarded previous
+modifications.
+
+------------------------------------------------------------------------
+r3740 | zimmerma | 2005-08-30 10:27:11 +0000 (Tue, 30 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+added two new tests
+
+------------------------------------------------------------------------
+r3739 | zimmerma | 2005-08-30 10:09:59 +0000 (Tue, 30 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+patch from Patrick to solve efficiency problem when one operand is sparse
+(e.g. from ui_pow_ui)
+
+------------------------------------------------------------------------
+r3738 | zimmerma | 2005-08-29 14:07:51 +0000 (Mon, 29 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/gamma.c
+ M /trunk/mpfr-impl.h
+ M /trunk/pow.c
+ M /trunk/tests/tgamma.c
+
+check for overflow/underflow in pow and gamma
+
+------------------------------------------------------------------------
+r3737 | vlefevre | 2005-08-24 15:37:36 +0000 (Wed, 24 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/print_raw.c
+ M /trunk/sub1sp.c
+
+When WANT_ASSERT >= 2: the corresponding messages are now output
+to stderr instead of stdout.
+
+------------------------------------------------------------------------
+r3736 | vlefevre | 2005-08-24 14:23:41 +0000 (Wed, 24 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3735 | vlefevre | 2005-08-24 14:16:04 +0000 (Wed, 24 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/set_uj.c
+
+Improved C compliance when mp_limb_t and uintmax_t have the same size
+(concerning >> BITS_PER_MP_LIMB); some other small improvements.
+
+------------------------------------------------------------------------
+r3734 | vlefevre | 2005-08-24 13:27:12 +0000 (Wed, 24 Aug 2005) | 5 lines
+Changed paths:
+ M /trunk/round_p.c
+ M /trunk/tests/tcan_round.c
+
+No longer assume that a mp_limb_t fits in an unsigned long (this
+is not true under IRIX, where a mp_limb_t has 64 bits and a long
+has 32 bits by default). In round_p.c, error messages are output
+to stderr instead of stdout.
+
+------------------------------------------------------------------------
+r3733 | vlefevre | 2005-08-23 17:21:45 +0000 (Tue, 23 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3732 | vlefevre | 2005-08-23 15:57:21 +0000 (Tue, 23 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+This was wrong. Let's do it even more like the 2.1 branch.
+
+------------------------------------------------------------------------
+r3731 | vlefevre | 2005-08-23 15:41:39 +0000 (Tue, 23 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3730 | vlefevre | 2005-08-23 15:37:53 +0000 (Tue, 23 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Patch 1.25 didn't work under OSF1 with cc. Let's do it like
+the 2.1 branch (it now does work under OSF1 with cc).
+
+------------------------------------------------------------------------
+r3729 | vlefevre | 2005-08-21 22:57:15 +0000 (Sun, 21 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.texi
+ M /trunk/out_str.c
+ M /trunk/strtofr.c
+
+Better locale support (for the decimal point in string conversions
+and input/output).
+
+------------------------------------------------------------------------
+r3728 | vlefevre | 2005-08-18 17:17:02 +0000 (Thu, 18 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3727 | vlefevre | 2005-08-18 17:08:30 +0000 (Thu, 18 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Misc changes (spelling, typography...).
+
+------------------------------------------------------------------------
+r3726 | vlefevre | 2005-08-18 17:03:17 +0000 (Thu, 18 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1sp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/coth.c
+ M /trunk/div-short.c
+ M /trunk/div.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uintmax.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/gamma.c
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_str.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/gmp_op.c
+ M /trunk/inp_str.c
+ M /trunk/isinteger.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/log_b2.h
+ M /trunk/minmax.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/out_str.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/print_raw.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/root.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sqrt.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/swap.c
+ M /trunk/tanh.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/urandomb.c
+
+Removed trailing spaces (better for future patches, as such spaces
+are sometimes stripped).
+
+------------------------------------------------------------------------
+r3725 | vlefevre | 2005-08-18 16:35:19 +0000 (Thu, 18 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1sp.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div-short.c
+ M /trunk/div.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_ld.c
+ M /trunk/get_str.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/init2.c
+ M /trunk/inp_str.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/print_raw.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_q.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/RRTest.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/zeta.c
+
+Converted tabs to spaces with expand.
+
+------------------------------------------------------------------------
+r3724 | vlefevre | 2005-08-18 15:27:33 +0000 (Thu, 18 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/extract.c
+ M /trunk/fits_u.h
+ M /trunk/free_cache.c
+ M /trunk/generic.c
+ M /trunk/get_si.c
+ M /trunk/init2.c
+ M /trunk/mpfr-test.h
+ M /trunk/next.c
+ M /trunk/print_raw.c
+ M /trunk/set_f.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tversion.c
+
+Updated copyright line.
+
+------------------------------------------------------------------------
+r3723 | vlefevre | 2005-08-18 14:51:33 +0000 (Thu, 18 Aug 2005) | 4 lines
+Changed paths:
+ M /trunk/set_ld.c
+ M /trunk/tests/tset_ld.c
+
+Support C implementations giving an incorrect value for the precision
+of long double or where long doubles are implemented with FP expansions
+(like under Mac OS X), as in the 2.1 branch.
+
+------------------------------------------------------------------------
+r3722 | vlefevre | 2005-08-18 13:46:30 +0000 (Thu, 18 Aug 2005) | 5 lines
+Changed paths:
+ M /trunk/get_ld.c
+ M /trunk/mpfr-impl.h
+
+Updated mpfr_get_ld: removed useless and non-portable hacks, fixed
+bugs, and slightly changed the behavior for the x87 extended format
+(we shouldn't return long double's with more precision than really
+supported, e.g. on FreeBSD and NetBSD).
+
+------------------------------------------------------------------------
+r3721 | vlefevre | 2005-08-18 13:08:07 +0000 (Thu, 18 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+Added an assertion.
+
+------------------------------------------------------------------------
+r3720 | vlefevre | 2005-08-17 16:45:18 +0000 (Wed, 17 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Reformatted (GNU style).
+
+------------------------------------------------------------------------
+r3719 | pelissip | 2005-08-17 16:26:10 +0000 (Wed, 17 Aug 2005) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+Improve the warning message by adding the lines:
+"we cannot run a program linked with GMP (if you cannot
+see the version numbers above)."
+
+------------------------------------------------------------------------
+r3718 | zimmerma | 2005-08-16 14:26:05 +0000 (Tue, 16 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added pointer for gamma
+
+------------------------------------------------------------------------
+r3717 | zimmerma | 2005-08-16 14:24:15 +0000 (Tue, 16 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+fixed comments (code did not change)
+
+------------------------------------------------------------------------
+r3716 | zimmerma | 2005-08-16 14:01:22 +0000 (Tue, 16 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+ M /trunk/gamma.c
+
+added formula for gamma function
+
+------------------------------------------------------------------------
+r3715 | zimmerma | 2005-08-16 13:20:14 +0000 (Tue, 16 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+fixed last test (expected result was wrong)
+
+------------------------------------------------------------------------
+r3714 | zimmerma | 2005-08-16 13:19:09 +0000 (Tue, 16 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+fixed bug for tiny input
+
+------------------------------------------------------------------------
+r3713 | zimmerma | 2005-08-16 09:36:05 +0000 (Tue, 16 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+added test case
+
+------------------------------------------------------------------------
+r3712 | pelissip | 2005-08-12 15:11:37 +0000 (Fri, 12 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Reintroduce the computing of the dependencies.
+
+------------------------------------------------------------------------
+r3711 | vlefevre | 2005-08-11 14:56:47 +0000 (Thu, 11 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tset_d.c
+
+Added MPFR_DOUBLE_SPEC (not used yet, except for warning messages).
+
+------------------------------------------------------------------------
+r3710 | vlefevre | 2005-08-10 20:41:16 +0000 (Wed, 10 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Completed the documentation of mpfr_strtofr (concerning the exponent).
+
+------------------------------------------------------------------------
+r3709 | vlefevre | 2005-08-10 20:32:41 +0000 (Wed, 10 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Removed double spaces in mpfr_strtofr description (this matters
+for the info format).
+
+------------------------------------------------------------------------
+r3708 | vlefevre | 2005-08-10 01:02:57 +0000 (Wed, 10 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+Added a temporary test for non-IEEE-754 double's.
+
+------------------------------------------------------------------------
+r3707 | pelissip | 2005-08-09 08:17:14 +0000 (Tue, 09 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/tests/tstckintc.c
+
+Fix bug for pre-ansi compiler.
+
+------------------------------------------------------------------------
+r3706 | pelissip | 2005-08-09 08:16:46 +0000 (Tue, 09 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Remove redundant entries.
+
+------------------------------------------------------------------------
+r3705 | zimmerma | 2005-08-08 13:01:31 +0000 (Mon, 08 Aug 2005) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/TODO
+ M /trunk/sin.c
+ M /trunk/tests/tsin.c
+
+fixed bug in mpfr_sin (possible wrong inexact flag for rounding to nearest)
+added items in NEWS and TODO
+
+------------------------------------------------------------------------
+r3704 | pelissip | 2005-08-05 23:09:58 +0000 (Fri, 05 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update information
+
+------------------------------------------------------------------------
+r3703 | pelissip | 2005-08-05 23:08:29 +0000 (Fri, 05 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/stack_interface.c
+ M /trunk/tests/tstckintc.c
+
+Rename mpfr_stack to mpfr_custom_
+
+------------------------------------------------------------------------
+r3695 | vlefevre | 2005-08-03 10:35:59 +0000 (Wed, 03 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/FAQ.html
+ M /trunk/README
+
+Added/updated copyright information.
+
+------------------------------------------------------------------------
+r3694 | vlefevre | 2005-08-03 10:13:41 +0000 (Wed, 03 Aug 2005) | 2 lines
+Changed paths:
+ M /branches/mpfr-2-1-branch/NEWS
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3693 | pelissip | 2005-08-02 08:28:22 +0000 (Tue, 02 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove "Stack Interface" from TODO.
+
+------------------------------------------------------------------------
+r3692 | pelissip | 2005-08-01 15:23:51 +0000 (Mon, 01 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tsubnormal.c
+
+Add test file for mpfr_subnormalize
+
+------------------------------------------------------------------------
+r3691 | pelissip | 2005-08-01 15:23:07 +0000 (Mon, 01 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation for MPFR stack interface
+
+------------------------------------------------------------------------
+r3690 | pelissip | 2005-08-01 14:04:35 +0000 (Mon, 01 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tstckintc.c
+
+Add a new test to avoid potential problems if mp_limb_t != long.
+
+------------------------------------------------------------------------
+r3689 | vlefevre | 2005-08-01 10:04:33 +0000 (Mon, 01 Aug 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3685 | pelissip | 2005-07-26 16:08:02 +0000 (Tue, 26 Jul 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/stack_interface.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tstckintc.c
+
+Add first version of MPFR stack interface.
+Need to check if everything is ok, specially the test.
+
+------------------------------------------------------------------------
+r3684 | pelissip | 2005-07-26 14:07:18 +0000 (Tue, 26 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fix and clean up logging for GCC 4.0.x
+
+------------------------------------------------------------------------
+r3683 | pelissip | 2005-07-26 13:02:30 +0000 (Tue, 26 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Clean up code.
+
+------------------------------------------------------------------------
+r3682 | pelissip | 2005-07-26 12:26:08 +0000 (Tue, 26 Jul 2005) | 4 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/logging.c
+ M /trunk/mpfr-impl.h
+
+Improve logging:
+ + The file is not created if there is nothing to log.
+ + Add new ENVIRONMENT variables: MPFR_LOG_ALL and MPFR_LOG_STAT.
+
+------------------------------------------------------------------------
+r3681 | pelissip | 2005-07-26 12:06:11 +0000 (Tue, 26 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Add experimental code (Disabled).
+
+------------------------------------------------------------------------
+r3680 | pelissip | 2005-07-26 12:05:45 +0000 (Tue, 26 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+Fix comment
+
+------------------------------------------------------------------------
+r3679 | pelissip | 2005-07-26 12:05:03 +0000 (Tue, 26 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+Add a new regression test (to fix).
+
+------------------------------------------------------------------------
+r3678 | pelissip | 2005-07-22 14:01:30 +0000 (Fri, 22 Jul 2005) | 4 lines
+Changed paths:
+ M /trunk/erfc.c
+
+Fix bug for high values of input (assertion failed)
+because erf(x) ~ 1, so 1-erf(x) ~ 0, and we can't
+get the EXP of tmp.
+
+------------------------------------------------------------------------
+r3677 | pelissip | 2005-07-18 12:55:30 +0000 (Mon, 18 Jul 2005) | 3 lines
+Changed paths:
+ M /trunk/update-version
+
+Fix bug (AC_INIT version wasn't updated).
+Display a note about libtool version before quitting.
+
+------------------------------------------------------------------------
+r3676 | pelissip | 2005-07-18 12:54:45 +0000 (Mon, 18 Jul 2005) | 4 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Clean up.
+Add comment.
+Add a new test: check if the charset has consecutive values.
+
+------------------------------------------------------------------------
+r3675 | vlefevre | 2005-07-12 21:27:55 +0000 (Tue, 12 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Updated documentation of mpfr_strtofr.
+
+------------------------------------------------------------------------
+r3674 | pelissip | 2005-07-12 09:48:36 +0000 (Tue, 12 Jul 2005) | 3 lines
+Changed paths:
+ M /trunk/exp3.c
+
+Fix an overflow bug (use of int instead of unsigned long).
+Optimize code (5% faster).
+
+------------------------------------------------------------------------
+r3671 | vlefevre | 2005-07-11 16:13:27 +0000 (Mon, 11 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-impl.h
+ D /trunk/strcasecmp.c
+ D /trunk/strncasecmp.c
+ M /trunk/strtofr.c
+
+Fixed locale bug. Function strncasecmp is no longer used.
+
+------------------------------------------------------------------------
+r3670 | vlefevre | 2005-07-09 17:52:53 +0000 (Sat, 09 Jul 2005) | 5 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/acinclude.m4
+ M /trunk/tests/tests.c
+
+In the tests, set the locale to the current one. This allows to test
+MPFR under various locales, showing a bug in the parse_string function
+due to the use of the strncasecmp function ('i' and 'I' don't match
+with LC_ALL="tr_TR.ISO8859-9").
+
+------------------------------------------------------------------------
+r3669 | pelissip | 2005-07-07 07:38:02 +0000 (Thu, 07 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Improve displayed warning if GMP versions differ.
+
+------------------------------------------------------------------------
+r3668 | pelissip | 2005-07-06 08:45:47 +0000 (Wed, 06 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Add a solution for a problem.
+
+------------------------------------------------------------------------
+r3667 | vlefevre | 2005-07-05 13:47:37 +0000 (Tue, 05 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+Added in-place tests for atan(+/-0).
+
+------------------------------------------------------------------------
+r3665 | pelissip | 2005-07-05 08:04:21 +0000 (Tue, 05 Jul 2005) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+
+Fix bug of signed 0.
+Optimize code. (20% for 53 bits).
+
+------------------------------------------------------------------------
+r3664 | pelissip | 2005-07-05 08:03:38 +0000 (Tue, 05 Jul 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+Improve test for signed 0.
+
+------------------------------------------------------------------------
+r3663 | pelissip | 2005-06-28 16:46:42 +0000 (Tue, 28 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+
+Simplify a condition which was always true.
+(p is always negative).
+
+------------------------------------------------------------------------
+r3662 | pelissip | 2005-06-28 16:13:03 +0000 (Tue, 28 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Add assertion.
+
+------------------------------------------------------------------------
+r3661 | pelissip | 2005-06-28 16:09:00 +0000 (Tue, 28 Jun 2005) | 4 lines
+Changed paths:
+ M /trunk/atan.c
+
+Simplify code for final step (when i== n0):
+since we do n0-i=0 steps, atan(Ak/2^k) ~= Ak/2^k.
+So we could speed up the final computation (9% faster).
+
+------------------------------------------------------------------------
+r3660 | pelissip | 2005-06-28 15:52:32 +0000 (Tue, 28 Jun 2005) | 4 lines
+Changed paths:
+ M /trunk/atan.c
+
+Optimize: when computing arctan(p/2^r) simplify
+p/2^r if p is even.
+Clean up and remove tabi table. It was useless.
+
+------------------------------------------------------------------------
+r3659 | pelissip | 2005-06-22 08:58:50 +0000 (Wed, 22 Jun 2005) | 6 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Clean up configure and acinclude:
+ + Remove useless test in MPFR_CONFIGS (Check for valid NAN).
+ Its result is not use by MPFR.
+ + Remove useless macros (AC_CHECK_OS, AC_CHECK_MACH and AC_MY_HEADERS).
+ + Move detection of math/rint,round,floor,ceil to MPFR_CONFIGS.
+
+------------------------------------------------------------------------
+r3658 | vlefevre | 2005-06-20 09:30:34 +0000 (Mon, 20 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+GNU coding style.
+
+------------------------------------------------------------------------
+r3657 | zimmerma | 2005-06-16 13:48:23 +0000 (Thu, 16 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+improved m=0 case when b is a power of 2
+
+------------------------------------------------------------------------
+r3656 | pelissip | 2005-06-15 16:12:27 +0000 (Wed, 15 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+
+Replace mpfr_div_2ui call by SET_EXP/GET_EXP
+since it can't overflow.
+
+------------------------------------------------------------------------
+r3655 | pelissip | 2005-06-15 15:47:16 +0000 (Wed, 15 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Speed up a few (from 10822 to 10600).
+
+------------------------------------------------------------------------
+r3654 | pelissip | 2005-06-15 13:56:23 +0000 (Wed, 15 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update
+
+------------------------------------------------------------------------
+r3653 | pelissip | 2005-06-14 11:42:25 +0000 (Tue, 14 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/powerof2.c
+
+Replace check for a power of 2 for the high limb by a check
+for "high bit limb" for the high limb.
+
+------------------------------------------------------------------------
+r3652 | pelissip | 2005-06-14 11:30:10 +0000 (Tue, 14 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Fix bug in mul_ui (always alloc buffer instead of trying to reuse it).
+
+------------------------------------------------------------------------
+r3651 | pelissip | 2005-06-14 11:27:56 +0000 (Tue, 14 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+Add new test (failed).
+
+------------------------------------------------------------------------
+r3650 | pelissip | 2005-06-14 11:17:55 +0000 (Tue, 14 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/div_ui.c
+ M /trunk/mul_ui.c
+
+Add Fast case for u==1
+Add Fast case for u a power of 2 (Call mul/div_2si).
+
+------------------------------------------------------------------------
+r3649 | pelissip | 2005-06-14 09:04:44 +0000 (Tue, 14 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Fix bug (use of GCC specific attribute).
+
+------------------------------------------------------------------------
+r3648 | pelissip | 2005-06-13 12:19:30 +0000 (Mon, 13 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/root.c
+ M /trunk/tests/troot.c
+
+Rechnage the meaning of root for k=0.
+
+------------------------------------------------------------------------
+r3647 | pelissip | 2005-06-13 12:03:30 +0000 (Mon, 13 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/root.c
+ M /trunk/tests/troot.c
+
+Fix bug with x<0 and k even
+
+------------------------------------------------------------------------
+r3646 | pelissip | 2005-06-13 11:45:50 +0000 (Mon, 13 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/root.c
+ M /trunk/tests/troot.c
+
+Add special case for k==0
+Add test for special case k==0
+
+------------------------------------------------------------------------
+r3645 | zimmerma | 2005-06-13 11:33:57 +0000 (Mon, 13 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+added assertion
+
+------------------------------------------------------------------------
+r3644 | pelissip | 2005-06-13 11:23:37 +0000 (Mon, 13 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/cache.c
+
+Improve efficiency of initial call to mpfr_cache.
+
+------------------------------------------------------------------------
+r3643 | pelissip | 2005-06-13 08:51:44 +0000 (Mon, 13 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsum.c
+
+Add new check (+INF -INF --> NAN).
+
+------------------------------------------------------------------------
+r3642 | pelissip | 2005-06-10 15:11:02 +0000 (Fri, 10 Jun 2005) | 6 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/sum.c
+ M /trunk/tests/tsum.c
+
+Fix bug of NAN and INF.
+Fix bug in documentation (mpfr_sum wasn't exactly what is described).
+Improve test.
+Change internal names.
+Clean up.
+
+------------------------------------------------------------------------
+r3641 | pelissip | 2005-06-10 15:05:54 +0000 (Fri, 10 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/eint.c
+
+Fix bug: check if mpfr_log returns 0.
+
+------------------------------------------------------------------------
+r3640 | pelissip | 2005-06-08 12:35:31 +0000 (Wed, 08 Jun 2005) | 5 lines
+Changed paths:
+ M /trunk/eint.c
+
+Replace MPFR_EXP to MPFR_GET_EXP
+Use GROUP function
+Use MPFR_MPZ_SIZEINBASE2
+Factorize the mpfr_mul_2exp chain.
+
+------------------------------------------------------------------------
+r3639 | pelissip | 2005-06-08 12:34:47 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+Replace int to mp_prec_t for precision...
+
+------------------------------------------------------------------------
+r3638 | pelissip | 2005-06-08 12:34:21 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/const_euler.c
+ M /trunk/mulders.c
+ M /trunk/zeta.c
+
+Fix warning due to comparison of unsigned and signed integers.
+
+------------------------------------------------------------------------
+r3637 | pelissip | 2005-06-08 11:45:06 +0000 (Wed, 08 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/extract.c
+ M /trunk/strtofr.c
+
+Fix warnings due to comparaison between signed and unsigned.
+Reinclude string.h for strtofr.
+
+------------------------------------------------------------------------
+r3635 | vlefevre | 2005-06-08 10:18:24 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+
+Fixed bug introduced with the new internal format on 2003-10-27.
+
+------------------------------------------------------------------------
+r3634 | vlefevre | 2005-06-08 10:02:28 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+
+Updated comments.
+
+------------------------------------------------------------------------
+r3633 | pelissip | 2005-06-08 10:00:21 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Fix introduced bug due to missing NULL.
+
+------------------------------------------------------------------------
+r3632 | pelissip | 2005-06-08 09:58:57 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/clear.c
+
+Fix introduced bug (NULL not defined).
+
+------------------------------------------------------------------------
+r3631 | pelissip | 2005-06-08 09:53:48 +0000 (Wed, 08 Jun 2005) | 4 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/atan.c
+ M /trunk/clear.c
+ M /trunk/div.c
+ M /trunk/gamma.c
+ M /trunk/get_f.c
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/round_p.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/strtofr.c
+ M /trunk/sub1sp.c
+ M /trunk/subnormal.c
+ M /trunk/zeta.c
+
+Clean up use of stdio.h:
+ it is now included by mpfr-impl iff DEBUG is defined or WANT_ASSERT is
+defined.
+
+------------------------------------------------------------------------
+r3630 | pelissip | 2005-06-08 09:53:05 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsum.c
+
+Fix warnings.
+
+------------------------------------------------------------------------
+r3629 | pelissip | 2005-06-08 09:13:41 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Clean up code.
+
+------------------------------------------------------------------------
+r3628 | pelissip | 2005-06-08 09:08:27 +0000 (Wed, 08 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/add1sp.c
+
+Improve checking if WANT_ASSERT >= 2
+
+------------------------------------------------------------------------
+r3627 | pelissip | 2005-06-07 16:06:38 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+Fix wrong assertion.
+
+------------------------------------------------------------------------
+r3626 | pelissip | 2005-06-07 16:03:24 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsum.c
+
+Improve test by adding special cases.
+
+------------------------------------------------------------------------
+r3625 | pelissip | 2005-06-07 16:02:48 +0000 (Tue, 07 Jun 2005) | 5 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+MPFR_GET_EXP was wrongly defined and does nothing due to recursive
+macro (mpfr_get_exp is also defined to be a fast macro). Fix this
+by removing the macro call in MPFR_GET_EXP in case of ASSERT >= 1.
+2 tests failed now!
+
+------------------------------------------------------------------------
+r3624 | pelissip | 2005-06-07 15:42:17 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsum.c
+
+Clean up and improve check.
+
+------------------------------------------------------------------------
+r3623 | pelissip | 2005-06-07 15:41:57 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+Handle case n==0 and n==1 as special cases.
+
+------------------------------------------------------------------------
+r3622 | pelissip | 2005-06-07 14:27:34 +0000 (Tue, 07 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/const_catalan.c
+ M /trunk/tests/tconst_catalan.c
+
+Simplify test to use tgeneric.
+Add note about Worst Case of const_catalan up to 100,000,000
+
+------------------------------------------------------------------------
+r3621 | pelissip | 2005-06-07 14:26:45 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Use GROUP functions.
+
+------------------------------------------------------------------------
+r3620 | pelissip | 2005-06-07 09:52:04 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tconst_pi.c
+
+Improve coverage.
+
+------------------------------------------------------------------------
+r3619 | pelissip | 2005-06-07 09:51:49 +0000 (Tue, 07 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fix bug in MPFR_GROUP_REPREC_3.
+
+------------------------------------------------------------------------
+r3618 | pelissip | 2005-06-06 14:49:55 +0000 (Mon, 06 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/ui_pow_ui.c
+
+Improve coverage
+
+------------------------------------------------------------------------
+r3617 | pelissip | 2005-06-06 14:13:47 +0000 (Mon, 06 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+Improve coverage test
+
+------------------------------------------------------------------------
+r3616 | pelissip | 2005-06-06 13:52:29 +0000 (Mon, 06 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tzeta.c
+
+Remove mpfr_sub_one_ulp from MPFR library.
+Keep the C file until we are sure it not needed anymore.
+
+------------------------------------------------------------------------
+r3615 | pelissip | 2005-06-06 13:42:40 +0000 (Mon, 06 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tnext.c
+
+Improve coverage.
+
+------------------------------------------------------------------------
+r3614 | pelissip | 2005-06-06 13:39:40 +0000 (Mon, 06 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/div_ui.c
+ M /trunk/hypot.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tzeta.c
+
+Remove mpfr_add_one_ulp from MPFR library.
+The function is still in the CVS.
+
+------------------------------------------------------------------------
+r3613 | pelissip | 2005-06-06 12:06:15 +0000 (Mon, 06 Jun 2005) | 4 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Add experimental code (disabled).
+For 5000 bits, gamma(12.5) takes 4s instead of 18s.
+But it changes the error analysis...
+
+------------------------------------------------------------------------
+r3612 | pelissip | 2005-06-06 11:27:08 +0000 (Mon, 06 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Reduce use of intermediary variables.
+
+------------------------------------------------------------------------
+r3611 | pelissip | 2005-06-06 09:42:16 +0000 (Mon, 06 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+Improve comment of previous change.
+
+------------------------------------------------------------------------
+r3610 | pelissip | 2005-06-06 09:30:13 +0000 (Mon, 06 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/zeta.c
+
+Use FastCompute if x is positive and big, ie it uses
+Zeta(x)=1+1/2^X+O(1/3^x)
+
+------------------------------------------------------------------------
+r3609 | pelissip | 2005-06-03 11:15:05 +0000 (Fri, 03 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/ui_pow_ui.c
+
+Add new and faster trivial case for y <= 1 and n <= 1
+
+------------------------------------------------------------------------
+r3608 | pelissip | 2005-06-02 16:20:05 +0000 (Thu, 02 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/COPYING
+ M /trunk/COPYING.LIB
+
+Forget thoses two. Update from FSF site.
+
+------------------------------------------------------------------------
+r3607 | pelissip | 2005-06-02 16:16:17 +0000 (Thu, 02 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+
+Finish updating files.
+
+------------------------------------------------------------------------
+r3606 | pelissip | 2005-06-02 16:12:06 +0000 (Thu, 02 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/abort_prec_max.c
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atan2.c
+ M /trunk/atanh.c
+ M /trunk/cache.c
+ M /trunk/cbrt.c
+ M /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_ld.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/const_catalan.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/constant.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/cot.c
+ M /trunk/coth.c
+ M /trunk/csc.c
+ M /trunk/csch.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eint.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/erfc.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fits_intmax.c
+ M /trunk/fits_s.h
+ M /trunk/fits_sint.c
+ M /trunk/fits_slong.c
+ M /trunk/fits_sshort.c
+ M /trunk/fits_u.h
+ M /trunk/fits_uint.c
+ M /trunk/fits_uintmax.c
+ M /trunk/fits_ulong.c
+ M /trunk/fits_ushort.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/free_cache.c
+ M /trunk/gamma.c
+ M /trunk/gen_inverse.h
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_exp.c
+ M /trunk/get_f.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/get_z.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/int_ceil_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/isqrt.c
+ M /trunk/iszero.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/logging.c
+ M /trunk/minmax.c
+ M /trunk/mp_clz_tab.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-longlong.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/mulders.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/powerof2.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/root.c
+ M /trunk/round_near_x.c
+ M /trunk/round_p.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/sec.c
+ M /trunk/sech.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_ld.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_sj.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/si_op.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/strcasecmp.c
+ M /trunk/strncasecmp.c
+ M /trunk/strtofr.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/subnormal.c
+ M /trunk/sum.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcopysign.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tcot.c
+ M /trunk/tests/tcoth.c
+ M /trunk/tests/tcsc.c
+ M /trunk/tests/tcsch.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teint.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfits.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_f.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tminmax.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/troot.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tsec.c
+ M /trunk/tests/tsech.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tstrtofr.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tversion.c
+ M /trunk/tests/tzeta.c
+ M /trunk/tuneup.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+ M /trunk/zeta.c
+
+Change the address of the FSF.
+
+------------------------------------------------------------------------
+r3605 | pelissip | 2005-06-02 15:55:58 +0000 (Thu, 02 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Optimize it a few by avoiding calling fac_ui for each iteration
+of the main loop.
+
+------------------------------------------------------------------------
+r3604 | pelissip | 2005-06-02 15:16:19 +0000 (Thu, 02 Jun 2005) | 4 lines
+Changed paths:
+ M /trunk/zeta.c
+
+Reduce # of vars inside the main loop.
+Use GROUP function.
+Improve overflow problems (Use of int instead of mp_prec_t).
+
+------------------------------------------------------------------------
+r3603 | pelissip | 2005-06-02 15:15:44 +0000 (Thu, 02 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Improve efficiency by removing 2 variables (Loop uses only 4 vars).
+Use GROUP.
+
+------------------------------------------------------------------------
+r3602 | pelissip | 2005-06-02 15:15:02 +0000 (Thu, 02 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/abort_prec_max.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+
+Add support for MPFR_GROUP functions.
+
+------------------------------------------------------------------------
+r3601 | pelissip | 2005-06-02 15:14:15 +0000 (Thu, 02 Jun 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add attribute const and noreturn for function (via macros).
+Add new macros GROUP_INIT_6 and GROUP_REPREC_6 for zeta and gamma.
+
+------------------------------------------------------------------------
+r3600 | zimmerma | 2005-06-02 10:17:09 +0000 (Thu, 02 Jun 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added missing functions from gnumeric
+
+------------------------------------------------------------------------
+r3599 | pelissip | 2005-06-02 09:22:55 +0000 (Thu, 02 Jun 2005) | 5 lines
+Changed paths:
+ M /trunk/TODO
+
+Update stack-interface.
+Remove round_near_x item.
+Add new functions to implement.
+Reformat file.
+
+------------------------------------------------------------------------
+r3598 | pelissip | 2005-06-02 07:40:56 +0000 (Thu, 02 Jun 2005) | 4 lines
+Changed paths:
+ M /trunk/tests/tconst_pi.c
+
+Fix input precision of mp_prec_t.
+May be outside 'int' range. So it uses 'long' instead and
+a proper check.
+
+------------------------------------------------------------------------
+r3597 | vlefevre | 2005-05-25 14:32:37 +0000 (Wed, 25 May 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Added coding recommendations concerning C++ compilers.
+
+------------------------------------------------------------------------
+r3596 | pelissip | 2005-05-23 12:31:57 +0000 (Mon, 23 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Final version of MPFR_GROUP macros.
+
+------------------------------------------------------------------------
+r3595 | pelissip | 2005-05-23 12:31:43 +0000 (Mon, 23 May 2005) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3594 | pelissip | 2005-05-20 09:30:19 +0000 (Fri, 20 May 2005) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+Remove variable t which wasn't used!
+
+------------------------------------------------------------------------
+r3593 | pelissip | 2005-05-18 15:57:10 +0000 (Wed, 18 May 2005) | 6 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/agm.c
+ M /trunk/cos.c
+ M /trunk/div-short.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/exp_2.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/init2.c
+ M /trunk/log.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/round_prec.c
+ M /trunk/set_f.c
+ M /trunk/sqr.c
+ M /trunk/sqrt.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sum.c
+ M /trunk/tests/tsum.c
+ M /trunk/tuneup.c
+
+Replace TMP_ALLOC by MPFR_TMP_ALLOC
+Replace TMP_DECL by MPFR_TMP_DECL
+Replace TMP_MARK by MPFR_TMP_MARK
+Replace TMP_FREE by MPFR_TMP_FREE
+Add support for GMP's TMP_SALLOC.
+
+------------------------------------------------------------------------
+r3592 | pelissip | 2005-05-18 13:17:40 +0000 (Wed, 18 May 2005) | 5 lines
+Changed paths:
+ M /trunk/pow.c
+
+New way of handling exact value.
+Fix bug of wrong rounding and wrong ternary value if the power
+is exact, but at an upper precision than the working precision.
+Now it computes the power exactly if it detects it is exact.
+
+------------------------------------------------------------------------
+r3591 | pelissip | 2005-05-18 13:13:15 +0000 (Wed, 18 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Precise that 1 is not the only value.
+
+------------------------------------------------------------------------
+r3590 | vlefevre | 2005-05-18 13:03:10 +0000 (Wed, 18 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+an 1 -> a 1.
+
+------------------------------------------------------------------------
+r3589 | pelissip | 2005-05-18 09:42:00 +0000 (Wed, 18 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add a note about special case 1
+
+------------------------------------------------------------------------
+r3588 | pelissip | 2005-05-18 09:01:41 +0000 (Wed, 18 May 2005) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+Add assertions
+Remove useless function is_odd_even.
+
+------------------------------------------------------------------------
+r3587 | pelissip | 2005-05-18 08:53:39 +0000 (Wed, 18 May 2005) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+Fix bug: returning 1 didn't take the rounding mode into account.
+Simplify dependencies of mpfr_pow.
+
+------------------------------------------------------------------------
+r3586 | pelissip | 2005-05-18 08:42:54 +0000 (Wed, 18 May 2005) | 4 lines
+Changed paths:
+ M /trunk/expm1.c
+ M /trunk/tests/texpm1.c
+
+Fix bug of overflow
+Fix bug of wrong ternary value in case of overflow
+Add test cases.
+
+------------------------------------------------------------------------
+r3585 | pelissip | 2005-05-18 08:22:55 +0000 (Wed, 18 May 2005) | 3 lines
+Changed paths:
+ M /trunk/cosh.c
+ M /trunk/tests/tcosh.c
+
+Fix bug of overflow.
+Fix bug of ternary value in case of overflow.
+
+------------------------------------------------------------------------
+r3584 | pelissip | 2005-05-18 08:22:28 +0000 (Wed, 18 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+Clean up previous patch.
+
+------------------------------------------------------------------------
+r3583 | pelissip | 2005-05-18 07:30:01 +0000 (Wed, 18 May 2005) | 4 lines
+Changed paths:
+ M /trunk/sinh.c
+ M /trunk/tests/tsinh.c
+
+Fix bug of overflow.
+Fix bug of ternary value in case of overflow.
+Still some bugs...
+
+------------------------------------------------------------------------
+r3582 | pelissip | 2005-05-17 16:17:12 +0000 (Tue, 17 May 2005) | 4 lines
+Changed paths:
+ M /trunk/tanh.c
+ M /trunk/tests/ttanh.c
+
+Rewrite the way of handling overflow.
+Fix bug due to overflow.
+Fix bug due to wrong ternary value.
+
+------------------------------------------------------------------------
+r3581 | pelissip | 2005-05-17 16:15:15 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Typo.
+
+------------------------------------------------------------------------
+r3580 | pelissip | 2005-05-17 15:37:02 +0000 (Tue, 17 May 2005) | 3 lines
+Changed paths:
+ M /trunk/sinh.c
+ M /trunk/tests/tsinh.c
+
+Fix bug of overflow.
+Still a problem if exp(x) is near the limit of EMAX_MAX.
+
+------------------------------------------------------------------------
+r3579 | pelissip | 2005-05-17 15:35:38 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add new macro MPFR_SAVE_DECL_UPDATE_FLAGS
+
+------------------------------------------------------------------------
+r3578 | pelissip | 2005-05-17 15:17:32 +0000 (Tue, 17 May 2005) | 3 lines
+Changed paths:
+ M /trunk/sinh.c
+ M /trunk/tests/tsinh.c
+
+Improve way of handling overflow (still not perfect but far better).
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3577 | pelissip | 2005-05-17 15:14:53 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/get_si.c
+ M /trunk/tests/tset_si.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3576 | vlefevre | 2005-05-17 15:14:37 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/thypot.c
+
+hypot(±oo, NaN) now returns +oo, as in ISO C99 (wasn't documented).
+
+------------------------------------------------------------------------
+r3575 | pelissip | 2005-05-17 14:09:21 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tasin.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3574 | pelissip | 2005-05-17 14:09:10 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+
+Remove useless test.
+
+------------------------------------------------------------------------
+r3573 | pelissip | 2005-05-17 13:28:02 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3572 | pelissip | 2005-05-17 13:06:26 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_z.c
+
+Improve coverage
+
+------------------------------------------------------------------------
+r3571 | pelissip | 2005-05-17 12:58:43 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmpabs.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3570 | pelissip | 2005-05-17 12:58:30 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/coverage
+
+Add CFLAGS -g.
+
+------------------------------------------------------------------------
+r3569 | pelissip | 2005-05-17 12:27:39 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Clean up
+
+------------------------------------------------------------------------
+r3568 | pelissip | 2005-05-17 12:13:44 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tfits.c
+
+Improve coverage tests.
+
+------------------------------------------------------------------------
+r3567 | pelissip | 2005-05-17 11:45:11 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3566 | pelissip | 2005-05-17 11:34:11 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+Special a condition by the simplified one.
+
+------------------------------------------------------------------------
+r3565 | pelissip | 2005-05-17 10:31:34 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_catalan.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tget_d.c
+
+Improve coverage test (Forget to test tiny functions).
+
+------------------------------------------------------------------------
+r3564 | pelissip | 2005-05-17 10:12:30 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/coverage
+
+Typo
+
+------------------------------------------------------------------------
+r3563 | pelissip | 2005-05-17 10:04:14 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ A /trunk/coverage
+
+Add 'coverage' script.
+
+------------------------------------------------------------------------
+r3562 | pelissip | 2005-05-17 10:03:54 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/constant.c
+
+Add 'static'
+
+------------------------------------------------------------------------
+r3561 | pelissip | 2005-05-17 08:52:13 +0000 (Tue, 17 May 2005) | 5 lines
+Changed paths:
+ M /trunk/cos.c
+
+Reformating code.
+Fix potential (?) overflow for very large precision.
+Various tiny optimizations
+Improve the initial estimation of the needed precision.
+
+------------------------------------------------------------------------
+r3560 | pelissip | 2005-05-17 08:46:45 +0000 (Tue, 17 May 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/constant.c
+ M /trunk/log.c
+ M /trunk/mpfr-impl.h
+
+Extract constants (__gmpfr_one, two and four) from log.c to constant.c
+Fix bug in MPFR_SET_ONE.
+
+------------------------------------------------------------------------
+r3559 | pelissip | 2005-05-17 08:45:00 +0000 (Tue, 17 May 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+Remove a space.
+
+------------------------------------------------------------------------
+r3558 | vlefevre | 2005-05-16 14:29:49 +0000 (Mon, 16 May 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Typography + spelling.
+
+------------------------------------------------------------------------
+r3557 | vlefevre | 2005-05-16 14:26:20 +0000 (Mon, 16 May 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Note that mpfr_out_str has slightly changed.
+
+------------------------------------------------------------------------
+r3556 | pelissip | 2005-05-16 07:34:04 +0000 (Mon, 16 May 2005) | 3 lines
+Changed paths:
+ M /trunk/TODO
+
+asin, atan, atanh are not slow anymore for small input.
+Remove it in the TODO.
+
+------------------------------------------------------------------------
+r3555 | vlefevre | 2005-05-14 17:53:00 +0000 (Sat, 14 May 2005) | 4 lines
+Changed paths:
+ M /trunk/atanh.c
+
+Fixed a bug due to a typo on a variable name. It produced a
+segmentation fault in the tests on Linux/ppc (uninitialized data were
+read), not always reproducible when stepping with gdb.
+
+------------------------------------------------------------------------
+r3553 | pelissip | 2005-05-13 11:49:46 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+ M /trunk/log1p.c
+
+Add support for MPFR_FAST_COMPUTE_IS_SMALL_INPUT
+
+------------------------------------------------------------------------
+r3552 | pelissip | 2005-05-13 11:41:39 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+
+Add support for FAST_COMPUTE_IS_SMALL_INPUT.
+
+------------------------------------------------------------------------
+r3551 | pelissip | 2005-05-13 10:58:38 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Add round_near_x support for small arguments.
+
+------------------------------------------------------------------------
+r3550 | pelissip | 2005-05-13 10:58:20 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/round_near_x.c
+
+Add new internal function mpfr_round_near_x.
+
+------------------------------------------------------------------------
+r3549 | zimmerma | 2005-05-13 09:37:42 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added missing documentation for mpfr_hypot
+
+------------------------------------------------------------------------
+r3548 | pelissip | 2005-05-13 09:12:07 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+Add a \n for all error strings.
+
+------------------------------------------------------------------------
+r3547 | pelissip | 2005-05-13 09:11:48 +0000 (Fri, 13 May 2005) | 2 lines
+Changed paths:
+ M /trunk/version.c
+
+Fix copyright date.
+
+------------------------------------------------------------------------
+r3546 | pelissip | 2005-05-13 09:11:11 +0000 (Fri, 13 May 2005) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/texp.c
+
+Fix some problems when you define mpfr_prec_t to be an unsigned short.
+Now all tests passed when mpfr_prec_t is defined to be an unsigned short
+on a 32 bit CPU!
+
+------------------------------------------------------------------------
+r3542 | vlefevre | 2005-05-12 09:21:49 +0000 (Thu, 12 May 2005) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+Detect/avoid potential integer overflows.
+
+------------------------------------------------------------------------
+r3541 | pelissip | 2005-05-12 08:55:27 +0000 (Thu, 12 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+Fix typos.
+
+------------------------------------------------------------------------
+r3540 | pelissip | 2005-05-11 15:43:40 +0000 (Wed, 11 May 2005) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+ M /trunk/tests/texp.c
+
+Same patch for exp_3.
+
+------------------------------------------------------------------------
+r3539 | pelissip | 2005-05-11 15:24:48 +0000 (Wed, 11 May 2005) | 5 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp_2.c
+ M /trunk/tests/texp.c
+
+Fix bug when exp(x) is near the limit of an overflow or an
+underflow (mpfr_exp_2 didn't allow an overflow/underflow in its
+internal loop).
+Add corresponding test case. exp_3 may need similar patchs.
+
+------------------------------------------------------------------------
+r3538 | vlefevre | 2005-05-11 11:03:55 +0000 (Wed, 11 May 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update (with reformatting so that the logs are readable on 80 columns).
+
+------------------------------------------------------------------------
+r3537 | pelissip | 2005-05-11 07:42:05 +0000 (Wed, 11 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/tests/tmul.c
+
+Fix bug due to wrong assertion.
+
+------------------------------------------------------------------------
+r3536 | pelissip | 2005-05-10 11:49:58 +0000 (Tue, 10 May 2005) | 9 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+
+1. Change the prototype of mpfr_can_round to use const.
+2. Change the prototype of mpfr_round_raw_2 (remove first argument since it is
+ useless).
+3. Change round_raw_generic to use preprocessor if rather than compiler
+ to detect if flag == 1 or 0
+4. mpfr_round_raw_xxx use const attribute too.
+5. Remove mpfr_round_raw_3 since it is unused by MPFR.
+6. Add first prototype of MPFR_FAST_COMPUTE_IF_SMALL.
+
+------------------------------------------------------------------------
+r3535 | pelissip | 2005-05-10 09:52:11 +0000 (Tue, 10 May 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update.
+
+------------------------------------------------------------------------
+r3534 | pelissip | 2005-05-10 09:34:22 +0000 (Tue, 10 May 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/tests/tmul.c
+
+Fix a bug in the product of 2limbs per 2 limbs.
+Add new regression test.
+
+------------------------------------------------------------------------
+r3533 | pelissip | 2005-05-10 07:28:06 +0000 (Tue, 10 May 2005) | 5 lines
+Changed paths:
+ M /trunk/configure.in
+
+Fix problem with mingw: if the configure detects MS-Windows, it skips the
+tests which try to link against GMP within the configure, hoping the Makefile
+works. The main problem is that we need libtool inside the configure to link
+against GMP.
+
+------------------------------------------------------------------------
+r3532 | pelissip | 2005-05-09 09:09:37 +0000 (Mon, 09 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+Improve random tests.
+
+------------------------------------------------------------------------
+r3531 | pelissip | 2005-05-04 16:20:06 +0000 (Wed, 04 May 2005) | 4 lines
+Changed paths:
+ M /trunk/cos.c
+
+Replace initial estimation of K0 from sqrt (p/2)
+to sqrt(p/16). It seems to be 30% faster for 5000 bits, and 5% faster
+for 50 bits.
+
+------------------------------------------------------------------------
+r3529 | vlefevre | 2005-05-04 15:59:49 +0000 (Wed, 04 May 2005) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+Reformatted the code.
+
+------------------------------------------------------------------------
+r3528 | zimmerma | 2005-05-04 15:20:17 +0000 (Wed, 04 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+fixed dummy init2 followed by set_prec
+
+------------------------------------------------------------------------
+r3527 | vlefevre | 2005-05-04 13:42:36 +0000 (Wed, 04 May 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Added LIA-2 functions to implement.
+
+------------------------------------------------------------------------
+r3526 | pelissip | 2005-05-04 09:51:10 +0000 (Wed, 04 May 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/TODO
+ A /trunk/coth.c
+ A /trunk/csch.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/sech.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tcot.c
+ A /trunk/tests/tcoth.c
+ A /trunk/tests/tcsch.c
+ M /trunk/tests/tsec.c
+ A /trunk/tests/tsech.c
+
+Add functions mpfr_sech, mpfr_coth and mpfr_csch.
+
+------------------------------------------------------------------------
+r3525 | pelissip | 2005-05-04 09:49:51 +0000 (Wed, 04 May 2005) | 2 lines
+Changed paths:
+ M /trunk/gen_inverse.h
+
+init2 alloc what is needed, not 2 (more efficient).
+
+------------------------------------------------------------------------
+r3524 | zimmerma | 2005-05-04 09:27:48 +0000 (Wed, 04 May 2005) | 4 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/algorithms.tex
+ M /trunk/asinh.c
+ M /trunk/const_euler.c
+ M /trunk/cosh.c
+ M /trunk/eint.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/hypot.c
+ M /trunk/log10.c
+ M /trunk/log2.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/tanh.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+
+improved const_euler and eint
+removed dependency from input precision in several functions
+fixed two bugs in pow (detection of exact cases)
+
+------------------------------------------------------------------------
+r3523 | pelissip | 2005-05-04 08:35:23 +0000 (Wed, 04 May 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update to reflect the current state.
+
+------------------------------------------------------------------------
+r3522 | pelissip | 2005-05-03 16:39:04 +0000 (Tue, 03 May 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Fix computing of `sup` to reflect what is described in algorithms.tex.
+
+------------------------------------------------------------------------
+r3521 | pelissip | 2005-05-03 14:57:04 +0000 (Tue, 03 May 2005) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+
+Tiny optimization of mpfr_atan.
+On opteron with p=53, from 9231 / 18049.89 / 81758 to 9004 / 17522.76 / 78601.
+
+------------------------------------------------------------------------
+r3520 | vlefevre | 2005-05-03 12:42:01 +0000 (Tue, 03 May 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Fixed a problem in test_small (already done in the 2.1 branch)
+when long double = double.
+
+------------------------------------------------------------------------
+r3519 | pelissip | 2005-05-03 10:42:41 +0000 (Tue, 03 May 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Improve detection again (use callback).
+
+------------------------------------------------------------------------
+r3518 | pelissip | 2005-05-03 10:15:46 +0000 (Tue, 03 May 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Improve previous change.
+
+------------------------------------------------------------------------
+r3517 | pelissip | 2005-05-03 09:51:50 +0000 (Tue, 03 May 2005) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/tests/trint.c
+
+Add detection of function round, rint, ceil, floor and nearbyint at configure
+time so that spe206 which defines itself as C99 compliant can build the
+trint test.
+
+------------------------------------------------------------------------
+r3516 | pelissip | 2005-05-03 08:55:18 +0000 (Tue, 03 May 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update (Move bugs to potential).
+
+------------------------------------------------------------------------
+r3515 | vlefevre | 2005-05-03 08:08:50 +0000 (Tue, 03 May 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/hypot.c
+ M /trunk/tests/thypot.c
+
+Fixed the mpfr_hypot bug, and re-enabled the test_large_small test.
+
+------------------------------------------------------------------------
+r3514 | vlefevre | 2005-05-02 23:17:44 +0000 (Mon, 02 May 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3512 | vlefevre | 2005-05-02 22:57:16 +0000 (Mon, 02 May 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Mention the mpfr_hypot bug.
+
+------------------------------------------------------------------------
+r3511 | vlefevre | 2005-05-02 22:46:56 +0000 (Mon, 02 May 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+Added a test showing a bug, enabled when TEST_LARGE_SMALL is defined
+(to avoid a freeze with make check).
+
+------------------------------------------------------------------------
+r3510 | pelissip | 2005-05-02 15:05:43 +0000 (Mon, 02 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix bug.
+
+------------------------------------------------------------------------
+r3509 | pelissip | 2005-05-02 15:05:30 +0000 (Mon, 02 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Remove useless function f.
+
+------------------------------------------------------------------------
+r3508 | pelissip | 2005-05-02 13:11:39 +0000 (Mon, 02 May 2005) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+
+Fix a bug: the test to detect EVEN_rounding was wrong.
+
+------------------------------------------------------------------------
+r3507 | pelissip | 2005-05-02 13:11:07 +0000 (Mon, 02 May 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update example of use of mpfr_subnormalize.
+
+------------------------------------------------------------------------
+r3506 | pelissip | 2005-05-02 13:10:44 +0000 (Mon, 02 May 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/cmp_str.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmpabs.c
+
+mpfr_cmp_str checks for NAN.
+Add macro mpfr_cmp0 in mpfr-test.
+
+------------------------------------------------------------------------
+r3505 | pelissip | 2005-05-02 13:09:35 +0000 (Mon, 02 May 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/troot.c
+
+Undo previous change for tgeneric.
+troot uses tgeneric_ui instead.
+
+------------------------------------------------------------------------
+r3504 | pelissip | 2005-05-01 09:21:43 +0000 (Sun, 01 May 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Add new funcions in reuse test.
+
+------------------------------------------------------------------------
+r3503 | zimmerma | 2005-04-30 11:03:47 +0000 (Sat, 30 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added efficiency item
+
+------------------------------------------------------------------------
+r3502 | zimmerma | 2005-04-30 10:36:21 +0000 (Sat, 30 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ M /trunk/algorithms.tex
+ A /trunk/eint.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/teint.c
+
+added mpfr_eint
+
+------------------------------------------------------------------------
+r3501 | pelissip | 2005-04-29 17:24:30 +0000 (Fri, 29 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Add something to do :)
+
+------------------------------------------------------------------------
+r3500 | zimmerma | 2005-04-29 08:19:01 +0000 (Fri, 29 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added comment about efficiency of atan
+
+------------------------------------------------------------------------
+r3499 | vlefevre | 2005-04-29 07:42:30 +0000 (Fri, 29 Apr 2005) | 3 lines
+Changed paths:
+ A /trunk/FAQ.html
+ M /trunk/Makefile.am
+ M /trunk/README
+ M /trunk/README.dev
+ A /trunk/faq.xsl
+ A /trunk/update-faq
+
+The FAQ is now distributed with MPFR. Use update-faq to update it
+from the MPFR web site.
+
+------------------------------------------------------------------------
+r3498 | zimmerma | 2005-04-29 07:30:29 +0000 (Fri, 29 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+commented out argument reduction analysis for arctan (was wrong)
+
+------------------------------------------------------------------------
+r3496 | zimmerma | 2005-04-28 09:47:32 +0000 (Thu, 28 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+wrong commit, put revision 1.37 back
+
+------------------------------------------------------------------------
+r3495 | zimmerma | 2005-04-28 09:45:05 +0000 (Thu, 28 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+wrong commit, put back revision 1.47
+
+------------------------------------------------------------------------
+r3494 | zimmerma | 2005-04-28 09:38:45 +0000 (Thu, 28 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/cos.c
+ M /trunk/sin.c
+
+added error analysis for Geoff's argument reduction for arctan
+
+------------------------------------------------------------------------
+r3493 | vlefevre | 2005-04-27 20:56:08 +0000 (Wed, 27 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added a note about mpfr_set_d and mpfr_set_ld.
+
+------------------------------------------------------------------------
+r3492 | vlefevre | 2005-04-27 13:51:06 +0000 (Wed, 27 Apr 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/update-version
+
+Define MPFR_VERSION_STRING using the update-version script
+(works with any compiler).
+
+------------------------------------------------------------------------
+r3491 | zimmerma | 2005-04-26 10:46:13 +0000 (Tue, 26 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added internal interface
+
+------------------------------------------------------------------------
+r3490 | zimmerma | 2005-04-26 10:02:01 +0000 (Tue, 26 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion from Geoff
+
+------------------------------------------------------------------------
+r3489 | zimmerma | 2005-04-26 09:37:28 +0000 (Tue, 26 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tversion.c
+
+added MPFR_VERSION_STRING
+
+------------------------------------------------------------------------
+r3488 | zimmerma | 2005-04-25 13:06:11 +0000 (Mon, 25 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new item
+
+------------------------------------------------------------------------
+r3487 | zimmerma | 2005-04-25 12:51:56 +0000 (Mon, 25 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/expm1.c
+ M /trunk/log1p.c
+
+improved expm1/log1p for small argument
+
+------------------------------------------------------------------------
+r3486 | zimmerma | 2005-04-25 12:16:12 +0000 (Mon, 25 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+
+improved to taken account of case |x| small (reported by Keith Briggs)
+
+------------------------------------------------------------------------
+r3485 | vlefevre | 2005-04-25 12:12:17 +0000 (Mon, 25 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added a missing "-" and replaced a few "-" by @minus{}.
+
+------------------------------------------------------------------------
+r3484 | vlefevre | 2005-04-25 11:53:56 +0000 (Mon, 25 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added a note for mpfr_cmp functions.
+
+------------------------------------------------------------------------
+r3483 | zimmerma | 2005-04-25 05:41:27 +0000 (Mon, 25 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+ M /trunk/tests/tset_ld.c
+
+fixed bug with tiny number
+
+------------------------------------------------------------------------
+r3482 | zimmerma | 2005-04-22 22:23:09 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed done item
+
+------------------------------------------------------------------------
+r3481 | pelissip | 2005-04-22 15:20:22 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add a macro for mpfr_const_catalan for internal use.
+
+------------------------------------------------------------------------
+r3480 | pelissip | 2005-04-22 15:18:33 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix typos.
+
+------------------------------------------------------------------------
+r3479 | zimmerma | 2005-04-22 10:38:21 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed Root, updated eint*
+
+------------------------------------------------------------------------
+r3478 | zimmerma | 2005-04-22 10:13:05 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ A /trunk/cot.c
+ A /trunk/csc.c
+ A /trunk/gen_inverse.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/sec.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tcot.c
+ A /trunk/tests/tcsc.c
+ A /trunk/tests/tsec.c
+
+added sec, csc, cot
+
+------------------------------------------------------------------------
+r3477 | zimmerma | 2005-04-22 08:48:44 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+proposal for exponential integral definition
+
+------------------------------------------------------------------------
+r3476 | zimmerma | 2005-04-22 05:38:41 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ M /trunk/tests/Makefile.am
+
+added mpfr_root, removed from TODO
+
+------------------------------------------------------------------------
+r3475 | zimmerma | 2005-04-22 05:32:01 +0000 (Fri, 22 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/cbrt.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/root.c
+ M /trunk/tests/tgeneric.c
+ A /trunk/tests/troot.c
+
+added mpfr_root
+
+------------------------------------------------------------------------
+r3474 | vlefevre | 2005-04-21 15:21:40 +0000 (Thu, 21 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3469 | vlefevre | 2005-04-21 13:05:42 +0000 (Thu, 21 Apr 2005) | 4 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Added the ability to change the control word when compiling tset_ld
+with -DWITH_FPU_CONTROL=1 and executing tset_ld with an argument
+(not used in the automatical tests yet).
+
+------------------------------------------------------------------------
+r3465 | vlefevre | 2005-04-21 09:32:22 +0000 (Thu, 21 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Added test_small (the same as in the 2.1 branch).
+
+------------------------------------------------------------------------
+r3463 | vlefevre | 2005-04-21 09:14:46 +0000 (Thu, 21 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+Updated a comment and reformatted the code.
+
+------------------------------------------------------------------------
+r3460 | zimmerma | 2005-04-21 06:33:22 +0000 (Thu, 21 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added explanation
+
+------------------------------------------------------------------------
+r3457 | zimmerma | 2005-04-20 07:59:38 +0000 (Wed, 20 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/const_catalan.c
+ M /trunk/tests/Makefile.am
+
+adjusted initial guard digits for const_catalan to avoid failure for prec<=10^4
+
+------------------------------------------------------------------------
+r3456 | zimmerma | 2005-04-20 05:53:17 +0000 (Wed, 20 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/const_catalan.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tconst_catalan.c
+
+updated documentation and improved tests for mpfr_const_catalan
+
+------------------------------------------------------------------------
+r3455 | zimmerma | 2005-04-20 03:43:06 +0000 (Wed, 20 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed Catalan's constant (done)
+
+------------------------------------------------------------------------
+r3454 | zimmerma | 2005-04-20 03:40:24 +0000 (Wed, 20 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ A /trunk/const_catalan.c
+ M /trunk/free_cache.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ A /trunk/tests/tconst_catalan.c
+
+added Catalan's constant
+
+------------------------------------------------------------------------
+r3453 | zimmerma | 2005-04-20 01:23:23 +0000 (Wed, 20 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added efficiency items suggested by Geoff Bailey
+
+------------------------------------------------------------------------
+r3452 | zimmerma | 2005-04-20 00:12:45 +0000 (Wed, 20 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+
+fixed minor problem (wrong rounding mode for x=0, y<0), thanks Geoff Bailey
+
+------------------------------------------------------------------------
+r3451 | zimmerma | 2005-04-19 09:23:28 +0000 (Tue, 19 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one efficiency item
+
+------------------------------------------------------------------------
+r3450 | zimmerma | 2005-04-19 09:01:03 +0000 (Tue, 19 Apr 2005) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+completely rewritten algorithm and error analysis for acosh
+(did not match those in acosh.c)
+
+------------------------------------------------------------------------
+r3449 | zimmerma | 2005-04-19 08:59:31 +0000 (Tue, 19 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+algorithm and error bound did not match those of algorithm.tex!!!
+
+------------------------------------------------------------------------
+r3448 | zimmerma | 2005-04-19 07:50:22 +0000 (Tue, 19 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added missing functions for Magma
+
+------------------------------------------------------------------------
+r3447 | zimmerma | 2005-04-19 07:17:54 +0000 (Tue, 19 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+
+changed semantics of mpfr_get_str for ndigits=0
+
+------------------------------------------------------------------------
+r3446 | zimmerma | 2005-04-14 13:44:58 +0000 (Thu, 14 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item (efficiency)
+
+------------------------------------------------------------------------
+r3445 | pelissip | 2005-04-14 13:29:06 +0000 (Thu, 14 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tatan.c
+
+Fix atan2 to fit C99 semantic.
+
+------------------------------------------------------------------------
+r3444 | pelissip | 2005-04-14 09:20:24 +0000 (Thu, 14 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix typos.
+
+------------------------------------------------------------------------
+r3443 | pelissip | 2005-04-14 09:20:13 +0000 (Thu, 14 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+
+Add TODO.
+
+------------------------------------------------------------------------
+r3442 | pelissip | 2005-04-14 08:48:54 +0000 (Thu, 14 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation for mpfr_subnormalize.
+
+------------------------------------------------------------------------
+r3441 | pelissip | 2005-04-14 08:14:49 +0000 (Thu, 14 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/subnormal.c
+
+Fix bugs.
+
+------------------------------------------------------------------------
+r3440 | pelissip | 2005-04-13 17:23:03 +0000 (Wed, 13 Apr 2005) | 3 lines
+Changed paths:
+ M /trunk/div_ui.c
+ M /trunk/tests/tsi_op.c
+
+Apply Guillaume's patch about mpfr_div_ui.
+Fix a bug in tsi_op (forget to clean memory).
+
+------------------------------------------------------------------------
+r3439 | pelissip | 2005-04-13 16:05:02 +0000 (Wed, 13 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ A /trunk/subnormal.c
+
+Add function mpfr_subnormalize (To Test!!!!!)
+
+------------------------------------------------------------------------
+r3438 | pelissip | 2005-04-13 15:48:51 +0000 (Wed, 13 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/atan2.c
+
+Add TODO.
+
+------------------------------------------------------------------------
+r3437 | pelissip | 2005-04-13 15:46:45 +0000 (Wed, 13 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+
+Fix wrong comment.
+
+------------------------------------------------------------------------
+r3436 | pelissip | 2005-04-07 13:35:38 +0000 (Thu, 07 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/terf.c
+
+Reenable tests.
+
+------------------------------------------------------------------------
+r3435 | pelissip | 2005-04-07 11:58:52 +0000 (Thu, 07 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation about mpfr_atan2.
+
+------------------------------------------------------------------------
+r3434 | pelissip | 2005-04-07 11:34:05 +0000 (Thu, 07 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsi_op.c
+ M /trunk/tests/tsub_ui.c
+
+Improve test suite by adding new random values.
+
+------------------------------------------------------------------------
+r3433 | pelissip | 2005-04-07 07:44:14 +0000 (Thu, 07 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tsub.c
+
+Add random tests (tgeneric + random2).
+
+------------------------------------------------------------------------
+r3432 | vlefevre | 2005-04-05 09:03:29 +0000 (Tue, 05 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Test with -ansi when making a release.
+
+------------------------------------------------------------------------
+r3431 | vlefevre | 2005-04-05 08:57:29 +0000 (Tue, 05 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Typo.
+
+------------------------------------------------------------------------
+r3430 | zimmerma | 2005-04-05 07:11:53 +0000 (Tue, 05 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/div-short.c
+ M /trunk/tests/terf.c
+
+replaced // comments by /* ... */
+
+------------------------------------------------------------------------
+r3428 | pelissip | 2005-04-04 10:12:29 +0000 (Mon, 04 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Add note about mpfr_neg
+
+------------------------------------------------------------------------
+r3427 | pelissip | 2005-04-04 08:54:42 +0000 (Mon, 04 Apr 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/NEWS
+ M /trunk/TODO
+ A /trunk/atan2.c
+ M /trunk/mpfr.h
+ M /trunk/tests/tatan.c
+
+Add function mpfr_atan2
+
+------------------------------------------------------------------------
+r3426 | pelissip | 2005-03-31 16:13:11 +0000 (Thu, 31 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+ M /trunk/mpfr-gmp.h
+ M /trunk/mulders.c
+
+Change to add future function mpfr_sqrhigh_n.
+
+------------------------------------------------------------------------
+r3425 | pelissip | 2005-03-31 14:52:03 +0000 (Thu, 31 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation for mpfr_erfc.
+
+------------------------------------------------------------------------
+r3424 | pelissip | 2005-03-31 13:26:32 +0000 (Thu, 31 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Add items.
+
+------------------------------------------------------------------------
+r3423 | pelissip | 2005-03-31 13:13:58 +0000 (Thu, 31 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ A /trunk/erfc.c
+ M /trunk/mpfr.h
+ M /trunk/tests/terf.c
+ M /trunk/tests/tgeneric.c
+
+Add function mpfr_erfc.
+Add a note about auto-checking correctness of MPFR.
+
+------------------------------------------------------------------------
+r3422 | vlefevre | 2005-03-30 14:49:03 +0000 (Wed, 30 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Added a testcase (the one added to the 2.1 branch).
+
+------------------------------------------------------------------------
+r3420 | pelissip | 2005-03-30 14:14:46 +0000 (Wed, 30 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Use random2 instead of random.
+
+------------------------------------------------------------------------
+r3419 | vlefevre | 2005-03-30 13:38:59 +0000 (Wed, 30 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/round_p.c
+
+Weaker conditions for return 0 in mpfr_round_p.
+
+------------------------------------------------------------------------
+r3418 | pelissip | 2005-03-30 13:13:20 +0000 (Wed, 30 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tgeneric.c
+ A /trunk/tests/tgeneric_ui.c
+ M /trunk/tests/tpow.c
+
+Add generic test for functions which looks
+ inexact = MPFR_TOTO (rop, op, INTEGER, RND);
+
+------------------------------------------------------------------------
+r3417 | pelissip | 2005-03-30 12:58:45 +0000 (Wed, 30 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+
+Add ceil(log2(size)) bits to initial precision to avoid
+committing in error for huge operands.
+
+------------------------------------------------------------------------
+r3416 | vlefevre | 2005-03-30 12:21:53 +0000 (Wed, 30 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Added a test (corresp. to the one added on 2005-03-25 in tpow_z.c).
+
+------------------------------------------------------------------------
+r3415 | vlefevre | 2005-03-29 10:25:12 +0000 (Tue, 29 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+
+Reformatted code (GNU style, untabify...).
+
+------------------------------------------------------------------------
+r3414 | pelissip | 2005-03-29 08:42:07 +0000 (Tue, 29 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Tiny update.
+Add group functions macros.
+
+------------------------------------------------------------------------
+r3413 | pelissip | 2005-03-29 07:51:18 +0000 (Tue, 29 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/tests/tpow_z.c
+
+Replace test ('p <= i') by assertion ('p > i).
+
+------------------------------------------------------------------------
+r3412 | zimmerma | 2005-03-25 21:35:57 +0000 (Fri, 25 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/mpfr.texi
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tpow_z.c
+
+fixed bug in pow_ui (and pow_z): missing factor 2 in error bound
+fixed bug in gamma of negative integer
+
+------------------------------------------------------------------------
+r3411 | pelissip | 2005-03-25 15:03:13 +0000 (Fri, 25 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/div-short.c
+
+Add info.
+
+------------------------------------------------------------------------
+r3410 | pelissip | 2005-03-25 15:02:36 +0000 (Fri, 25 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/print_raw.c
+
+Add new internal function for debugging reasons.
+
+------------------------------------------------------------------------
+r3409 | pelissip | 2005-03-25 08:43:12 +0000 (Fri, 25 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+Forget to free x and y
+
+------------------------------------------------------------------------
+r3408 | pelissip | 2005-03-25 08:38:26 +0000 (Fri, 25 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow_z.c
+
+Add failed regression test.
+
+------------------------------------------------------------------------
+r3407 | pelissip | 2005-03-25 08:38:10 +0000 (Fri, 25 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/div-short.c
+
+Improved version.
+
+------------------------------------------------------------------------
+r3406 | pelissip | 2005-03-25 08:32:09 +0000 (Fri, 25 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/tests/tmul.c
+
+Undo previous change (I was wrong).
+Add new regression test.
+
+------------------------------------------------------------------------
+r3405 | pelissip | 2005-03-24 10:47:41 +0000 (Thu, 24 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+Fix wrong extimated precision.
+It is log2(n+2) ulps so that log2(log2(n+2)) bits!
+
+------------------------------------------------------------------------
+r3404 | pelissip | 2005-03-24 10:01:31 +0000 (Thu, 24 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/div-short.c
+
+Add checking.
+
+------------------------------------------------------------------------
+r3403 | zimmerma | 2005-03-23 19:55:06 +0000 (Wed, 23 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added new test
+
+------------------------------------------------------------------------
+r3402 | pelissip | 2005-03-23 14:42:35 +0000 (Wed, 23 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_f.c
+
+Remove an signed integer trap overflow (GCC 4 + '-ftrapv').
+
+------------------------------------------------------------------------
+r3401 | pelissip | 2005-03-23 13:04:37 +0000 (Wed, 23 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Don't use Mulder at n+1 for MPFR_MUL_THRESHOLD+1
+
+------------------------------------------------------------------------
+r3400 | pelissip | 2005-03-23 13:03:55 +0000 (Wed, 23 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+Reduce the threshold for AMD64.
+
+------------------------------------------------------------------------
+r3399 | pelissip | 2005-03-22 13:58:19 +0000 (Tue, 22 Mar 2005) | 2 lines
+Changed paths:
+ A /trunk/div-short.c
+
+Initial version of Short Division.
+
+------------------------------------------------------------------------
+r3398 | pelissip | 2005-03-22 12:18:33 +0000 (Tue, 22 Mar 2005) | 4 lines
+Changed paths:
+ M /trunk/mul.c
+
+Fix bug on HP-UX.
+longlong's umul_ppmm seems to be buggy on such a system.
+Don't use it under HP-UX.
+
+------------------------------------------------------------------------
+r3396 | pelissip | 2005-03-21 10:34:12 +0000 (Mon, 21 Mar 2005) | 5 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/tests/tmul.c
+ M /trunk/tuneup.c
+
+Add case where bn == 1 and bn == 2 by using longlong.h.
+Modify tuneup to start with prec=2*BITS_PER_MP_LIMB+1
+Fix bug in computing the estimated precision when you switch from N limbs to N+1 limbs.
+Add regression tests.
+
+------------------------------------------------------------------------
+r3395 | vlefevre | 2005-03-19 01:27:54 +0000 (Sat, 19 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/isqrt.c
+
+Typo.
+
+------------------------------------------------------------------------
+r3394 | zimmerma | 2005-03-18 07:44:55 +0000 (Fri, 18 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one efficiency item
+
+------------------------------------------------------------------------
+r3393 | zimmerma | 2005-03-17 12:54:56 +0000 (Thu, 17 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added two property-tests
+
+------------------------------------------------------------------------
+r3391 | vlefevre | 2005-03-17 00:15:18 +0000 (Thu, 17 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/atanh.c
+ M /trunk/tests/tatanh.c
+
+Fixed a bug for mpfr_atanh(x) with 1 < |x| < 2 (found by Matt Reddick).
+
+------------------------------------------------------------------------
+r3390 | pelissip | 2005-03-14 10:07:14 +0000 (Mon, 14 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Update
+
+------------------------------------------------------------------------
+r3389 | pelissip | 2005-03-14 10:05:56 +0000 (Mon, 14 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tcan_round.c
+
+Improve test: compare between mpfr_round_p and mpfr_can_round.
+
+------------------------------------------------------------------------
+r3388 | pelissip | 2005-03-14 09:50:29 +0000 (Mon, 14 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/const_euler.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/erf.c
+ M /trunk/exp2.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/mul.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/zeta.c
+
+Replace mpfr_can_round (..., GMP_RNDN, GMP_RNDZ, ...) to fast replacement
+mpfr_round_p.
+
+------------------------------------------------------------------------
+r3387 | pelissip | 2005-03-14 09:49:36 +0000 (Mon, 14 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+Remove a FIXME.
+
+------------------------------------------------------------------------
+r3386 | pelissip | 2005-03-14 09:48:45 +0000 (Mon, 14 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr-impl.h
+ A /trunk/round_p.c
+
+Add new internal function mpfr_round_p which is a fast replacement
+to mpfr_can_round (x, y, GMP_RNDN, GMP_RNDZ, ...)
+
+------------------------------------------------------------------------
+r3385 | pelissip | 2005-03-14 09:47:44 +0000 (Mon, 14 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+Improve an error message.
+
+------------------------------------------------------------------------
+r3384 | pelissip | 2005-03-10 10:46:06 +0000 (Thu, 10 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+Fix bug: tmp may have changed in mulhigh code.
+Restore it before calling mpn_mul.
+
+------------------------------------------------------------------------
+r3383 | pelissip | 2005-03-09 15:53:12 +0000 (Wed, 09 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+Better defaults threshold.
+
+------------------------------------------------------------------------
+r3381 | pelissip | 2005-03-09 14:24:09 +0000 (Wed, 09 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+
+Handle case where Prec(a) ~ estimated prec of mulhigh.
+Add one extra limb, and still uses mulhigh.
+
+------------------------------------------------------------------------
+r3380 | pelissip | 2005-03-09 14:23:19 +0000 (Wed, 09 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tuneup.c
+
+Fix bug: compute Mulder Threshold from n/2+1 instead of (n+1)/2
+
+------------------------------------------------------------------------
+r3379 | pelissip | 2005-03-09 12:25:47 +0000 (Wed, 09 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Forget ';;' in switch.
+
+------------------------------------------------------------------------
+r3378 | pelissip | 2005-03-09 11:13:31 +0000 (Wed, 09 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Add '-v' for tuneup.
+
+------------------------------------------------------------------------
+r3377 | pelissip | 2005-03-09 11:10:56 +0000 (Wed, 09 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/mulders.c
+
+Add assertion.
+
+------------------------------------------------------------------------
+r3376 | pelissip | 2005-03-09 10:49:38 +0000 (Wed, 09 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/tests/tmul.c
+
+Improve checking
+Add test. Short Mulder product failed for this.
+
+------------------------------------------------------------------------
+r3375 | pelissip | 2005-03-09 10:20:51 +0000 (Wed, 09 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mul.c
+ M /trunk/sub1sp.c
+
+Improve full assertion mode (Check mpfr_mul).
+
+------------------------------------------------------------------------
+r3373 | pelissip | 2005-03-08 16:06:36 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/logging.c
+ M /trunk/mpfr-impl.h
+
+Move GLIBC detection from mpfr-impl to logging.c
+
+------------------------------------------------------------------------
+r3372 | pelissip | 2005-03-08 16:06:18 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Add log info.
+
+------------------------------------------------------------------------
+r3371 | pelissip | 2005-03-08 16:06:01 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+Improve default threshold.
+
+------------------------------------------------------------------------
+r3370 | pelissip | 2005-03-08 14:32:09 +0000 (Tue, 08 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/mul.c
+ M /trunk/tuneup.c
+
+Add Mulder Short product for mpfr_mul.
+Update algorithm.tex to describe the estimated error.
+
+------------------------------------------------------------------------
+r3369 | pelissip | 2005-03-08 14:14:49 +0000 (Tue, 08 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Add an assert.
+Cosmetic change.
+
+------------------------------------------------------------------------
+r3368 | pelissip | 2005-03-08 14:14:08 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+Update default values.
+
+------------------------------------------------------------------------
+r3367 | pelissip | 2005-03-08 14:13:35 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Clean up macro namespace.
+
+------------------------------------------------------------------------
+r3366 | pelissip | 2005-03-08 14:13:07 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tsqrt.c
+
+Cosmetics change.
+
+------------------------------------------------------------------------
+r3365 | zimmerma | 2005-03-08 13:24:44 +0000 (Tue, 08 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_f.c
+ M /trunk/mpfr.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tget_f.c
+
+new function mpfr_get_f
+
+------------------------------------------------------------------------
+r3364 | pelissip | 2005-03-08 08:57:00 +0000 (Tue, 08 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/tests/tadd1sp.c
+
+Fix bug in case of reuse of variable (a,b,a) with Exp(b)=Exp(a)+Prec(b).
+Move copy of mantissa after test.
+
+------------------------------------------------------------------------
+r3363 | pelissip | 2005-03-07 11:40:39 +0000 (Mon, 07 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.in
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mulders.c
+ M /trunk/tuneup.c
+
+Add tune for mpfr_mulhigh
+Add --with-mulhigh-size option at configure time.
+
+------------------------------------------------------------------------
+r3362 | pelissip | 2005-03-04 17:40:53 +0000 (Fri, 04 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+ M /trunk/tests/texp.c
+
+Fix bug due to wrong estimation of (get_d (x) / LOG2).
+TODO: Rexamine the algorithm of mpfr_exp_2!
+
+------------------------------------------------------------------------
+r3361 | pelissip | 2005-03-04 17:32:13 +0000 (Fri, 04 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+Transform DEBUG message to LOG message.
+
+------------------------------------------------------------------------
+r3360 | pelissip | 2005-03-04 17:14:03 +0000 (Fri, 04 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Improve it.
+
+------------------------------------------------------------------------
+r3359 | pelissip | 2005-03-04 17:13:42 +0000 (Fri, 04 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+ M /trunk/mparam_h.in
+ M /trunk/tuneup.c
+
+Tune mpfr_exp_2 now!
+
+------------------------------------------------------------------------
+r3358 | pelissip | 2005-03-03 14:59:25 +0000 (Thu, 03 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Fix bugs.
+
+------------------------------------------------------------------------
+r3357 | pelissip | 2005-03-03 14:25:20 +0000 (Thu, 03 Mar 2005) | 3 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Update it.
+New code for mpfr_mul.
+
+------------------------------------------------------------------------
+r3356 | pelissip | 2005-03-02 10:46:39 +0000 (Wed, 02 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/mparam_h.in
+
+Add new default threshold for different CPU.
+
+------------------------------------------------------------------------
+r3355 | pelissip | 2005-03-02 10:23:31 +0000 (Wed, 02 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Update for tune.
+
+------------------------------------------------------------------------
+r3354 | pelissip | 2005-03-02 08:57:26 +0000 (Wed, 02 Mar 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/tests/tatan.c
+
+Fix bug in estimated error (See previous ChangeLog).
+
+------------------------------------------------------------------------
+r3353 | pelissip | 2005-02-24 17:32:25 +0000 (Thu, 24 Feb 2005) | 6 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.in
+ A /trunk/mparam_h.in
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tuneup.c
+
+Add tune program for MPFR.
+Do make tune instead of make.
+BUT you need to have configure MPFR with --with-gmp-build=...
+(It uses internal libspeed.la of GMP).
+Tuning is slow...
+
+------------------------------------------------------------------------
+r3352 | pelissip | 2005-02-24 17:08:27 +0000 (Thu, 24 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Add note.
+
+------------------------------------------------------------------------
+r3349 | pelissip | 2005-02-22 16:40:41 +0000 (Tue, 22 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/fits_s.h
+ M /trunk/fits_u.h
+
+Tiny optimization
+
+------------------------------------------------------------------------
+r3348 | pelissip | 2005-02-22 12:30:56 +0000 (Tue, 22 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update
+
+------------------------------------------------------------------------
+r3347 | pelissip | 2005-02-22 12:12:18 +0000 (Tue, 22 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+
+Add logging.
+
+------------------------------------------------------------------------
+r3346 | pelissip | 2005-02-22 10:50:14 +0000 (Tue, 22 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/div_ui.c
+ M /trunk/mul_ui.c
+ M /trunk/si_op.c
+ M /trunk/ui_div.c
+
+Reduce InterObject dependency by moving mul_si, div_si and si_div
+to the unique function they used.
+Improve mul_ui by inlining the rounding.
+
+------------------------------------------------------------------------
+r3345 | pelissip | 2005-02-21 13:48:23 +0000 (Mon, 21 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+Improve test to 1.
+
+------------------------------------------------------------------------
+r3344 | vlefevre | 2005-02-21 13:08:46 +0000 (Mon, 21 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tsin.c
+
+Updated copyright lines.
+
+------------------------------------------------------------------------
+r3342 | vlefevre | 2005-02-21 12:13:00 +0000 (Mon, 21 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sub_ui.c
+
+Code reindented / reformatted.
+
+------------------------------------------------------------------------
+r3341 | vlefevre | 2005-02-21 12:09:47 +0000 (Mon, 21 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+ M /trunk/ui_sub.c
+
+Fixed a bug for u == 0 and x == +0 introduced in ui_sub.c 1.23,
+when 0 was taken into account as a special case: the sign of the
+result 0 was incorrect. -> Consider the case u == 0 first.
+
+------------------------------------------------------------------------
+r3340 | zimmerma | 2005-02-19 22:04:01 +0000 (Sat, 19 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/RRTest.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsin.c
+
+added generic tests in tpow
+
+------------------------------------------------------------------------
+r3339 | zimmerma | 2005-02-18 22:09:19 +0000 (Fri, 18 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/tests/tsqrt.c
+
+fixed bug (variable used twice for different things)
+
+------------------------------------------------------------------------
+r3338 | zimmerma | 2005-02-18 20:19:44 +0000 (Fri, 18 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+ M /trunk/mpfr-test.h
+ M /trunk/tests/RRTest.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+
+more changes for interface with NTL
+
+------------------------------------------------------------------------
+r3337 | pelissip | 2005-02-18 16:33:39 +0000 (Fri, 18 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+Likely a test.
+
+------------------------------------------------------------------------
+r3336 | pelissip | 2005-02-18 16:33:25 +0000 (Fri, 18 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Update
+
+------------------------------------------------------------------------
+r3335 | zimmerma | 2005-02-18 15:28:25 +0000 (Fri, 18 Feb 2005) | 2 lines
+Changed paths:
+ A /trunk/tests/RRTest.c
+ M /trunk/tests/tadd.c
+
+added interface for NTL
+
+------------------------------------------------------------------------
+r3334 | vlefevre | 2005-02-16 17:08:25 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3333 | vlefevre | 2005-02-16 17:05:19 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Suppress some spaces.
+
+------------------------------------------------------------------------
+r3332 | pelissip | 2005-02-16 16:04:54 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Reenable underflow tests.
+
+------------------------------------------------------------------------
+r3331 | pelissip | 2005-02-16 15:58:48 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Update
+
+------------------------------------------------------------------------
+r3330 | vlefevre | 2005-02-16 13:27:24 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ D /trunk/texinfo.tex
+
+Removed texinfo.tex, as it can be installed by autoreconf -i.
+
+------------------------------------------------------------------------
+r3329 | pelissip | 2005-02-16 13:19:25 +0000 (Wed, 16 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Fix LOADLIBES so that it works (it doesn't due to libtool change). But it
+still needs to have s static version of MPFR.
+
+------------------------------------------------------------------------
+r3328 | vlefevre | 2005-02-16 12:54:27 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+autoreconf -> autoreconf -i
+
+------------------------------------------------------------------------
+r3327 | pelissip | 2005-02-16 12:49:40 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/asinh.c
+ M /trunk/exp3.c
+ M /trunk/mpfr-impl.h
+ M /trunk/sin_cos.c
+ M /trunk/tan.c
+
+Fix wrong integer types.
+
+------------------------------------------------------------------------
+r3324 | vlefevre | 2005-02-16 11:03:35 +0000 (Wed, 16 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+ M /trunk/mul.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+
+Spelling mistakes & reformatted code.
+
+------------------------------------------------------------------------
+r3322 | vlefevre | 2005-02-15 16:28:31 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sub1.c
+
+Reformatted code.
+
+------------------------------------------------------------------------
+r3321 | pelissip | 2005-02-15 14:56:00 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+Improve initial prec.
+
+------------------------------------------------------------------------
+r3319 | pelissip | 2005-02-15 14:52:06 +0000 (Tue, 15 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/tanh.c
+
+Remove code.
+Add special case if t=1.
+
+------------------------------------------------------------------------
+r3318 | pelissip | 2005-02-15 14:51:51 +0000 (Tue, 15 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/sub1.c
+
+mpfr_set doesn't produce an EVEN inexact flag.
+Fix this.
+
+------------------------------------------------------------------------
+r3317 | pelissip | 2005-02-15 14:51:23 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+USe of mpfr_nexttozero.
+
+------------------------------------------------------------------------
+r3316 | pelissip | 2005-02-15 14:32:16 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/atanh.c
+
+Fix bug: use x instead of xf in LOG.
+
+------------------------------------------------------------------------
+r3315 | pelissip | 2005-02-15 10:29:31 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cosh.c
+ M /trunk/erf.c
+ M /trunk/exp.c
+ M /trunk/gamma.c
+ M /trunk/log.c
+ M /trunk/pow.c
+ M /trunk/sinh.c
+ M /trunk/tanh.c
+ M /trunk/zeta.c
+
+Log input and ouput of functions.
+
+------------------------------------------------------------------------
+r3314 | pelissip | 2005-02-15 10:06:39 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tan.c
+
+Fix bug of overflow in tan.
+
+------------------------------------------------------------------------
+r3313 | pelissip | 2005-02-15 09:54:23 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/tan.c
+
+Use of MPFR_LOG_FUNC.
+
+------------------------------------------------------------------------
+r3312 | pelissip | 2005-02-15 09:53:44 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Do not print final log message if there was no call.
+
+------------------------------------------------------------------------
+r3311 | pelissip | 2005-02-15 09:39:57 +0000 (Tue, 15 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+Add ZivLoop for sign
+
+------------------------------------------------------------------------
+r3310 | pelissip | 2005-02-14 16:02:59 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/logging.c
+
+Fix bug: during the display of a logged var, logging is turn off.
+
+------------------------------------------------------------------------
+r3309 | pelissip | 2005-02-14 15:55:12 +0000 (Mon, 14 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/mpfr-impl.h
+
+Add MPFR_LOG_FUNC
+Use mpfr_cos as testing example.
+
+------------------------------------------------------------------------
+r3308 | pelissip | 2005-02-14 14:38:06 +0000 (Mon, 14 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+
+Add ZivLoop controller for constantes.
+Augment exponent range in the cache.
+Remove it in const_pi.
+
+------------------------------------------------------------------------
+r3307 | pelissip | 2005-02-14 14:23:13 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Add generic ZivLoop controller.
+
+------------------------------------------------------------------------
+r3306 | fousse | 2005-02-14 14:21:50 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Document mpfr_sum returned int value.
+
+------------------------------------------------------------------------
+r3305 | pelissip | 2005-02-14 14:18:40 +0000 (Mon, 14 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/strtofr.c
+ M /trunk/sum.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/zeta.c
+
+Clean up code.
+Add generic ZivLoop controller.
+
+------------------------------------------------------------------------
+r3303 | fousse | 2005-02-14 13:33:31 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+Consider return value's precision for rounding in mpfr_sum.
+
+------------------------------------------------------------------------
+r3302 | zimmerma | 2005-02-14 12:41:16 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+removed garbage
+
+------------------------------------------------------------------------
+r3301 | pelissip | 2005-02-14 11:26:45 +0000 (Mon, 14 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/gamma.c
+ M /trunk/hypot.c
+
+Clean up
+Add ZivLoop
+
+------------------------------------------------------------------------
+r3300 | pelissip | 2005-02-14 10:55:09 +0000 (Mon, 14 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/const_log2.c
+
+Remove malloc/free.
+Use of MPFR_INT_CEIL_LOG2
+Add ZivLoop controller.
+
+------------------------------------------------------------------------
+r3299 | pelissip | 2005-02-14 10:54:42 +0000 (Mon, 14 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/erf.c
+
+Clean up code.
+Fix bug with Exponent range.
+Add ZivLoop controller.
+
+------------------------------------------------------------------------
+r3298 | pelissip | 2005-02-14 10:54:06 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/cbrt.c
+
+Cleanup code.
+
+------------------------------------------------------------------------
+r3297 | zimmerma | 2005-02-14 10:38:04 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/const_log2.c
+
+further efficiency improvement (avoid mpz_init/mpz_clear)
+
+------------------------------------------------------------------------
+r3296 | pelissip | 2005-02-14 10:11:17 +0000 (Mon, 14 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+
+Add ZivLoop controller.
+Clean up code.
+Optimize it by removing the # of used vars.
+
+------------------------------------------------------------------------
+r3295 | pelissip | 2005-02-14 10:10:51 +0000 (Mon, 14 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/asin.c
+ M /trunk/atan.c
+
+Add ZivLoop controller.
+
+------------------------------------------------------------------------
+r3294 | zimmerma | 2005-02-12 16:01:39 +0000 (Sat, 12 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/const_log2.c
+ M /trunk/mpfr-impl.h
+
+new faster algorithm for log(2)
+
+------------------------------------------------------------------------
+r3293 | pelissip | 2005-02-11 13:08:25 +0000 (Fri, 11 Feb 2005) | 6 lines
+Changed paths:
+ M /trunk/configure.in
+
+Remove detection of C++ and Fortran due to libtool.
+----
+Note (VL, 2010-02-08): this removal by an always false test was working
+with libtool 1.5.26, but doesn't work with libtool 2.2 to 2.2.6b (used
+by the MPFR 2.4.{0,1,2} tarballs).
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=568520
+------------------------------------------------------------------------
+r3292 | pelissip | 2005-02-11 11:28:00 +0000 (Fri, 11 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.in
+ M /trunk/tests/Makefile.am
+
+Clean up configure (simpler).
+Still a bug with CXXCPP to solve.
+
+------------------------------------------------------------------------
+r3291 | pelissip | 2005-02-11 11:27:36 +0000 (Fri, 11 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/const_log2.c
+ M /trunk/mpfr-impl.h
+
+Clean up const_log2 code.
+
+------------------------------------------------------------------------
+r3290 | pelissip | 2005-02-10 15:43:41 +0000 (Thu, 10 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/cosh.c
+ M /trunk/exp.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/log.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+
+Add log for other functions.
+Add ZivLoop too.
+Cleanup exp3.
+
+------------------------------------------------------------------------
+r3289 | pelissip | 2005-02-09 16:24:18 +0000 (Wed, 09 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Update for ICC (disable shared since it doesn't work).
+
+------------------------------------------------------------------------
+r3288 | pelissip | 2005-02-09 15:05:45 +0000 (Wed, 09 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+The previous fixs don't work. New one which works but is VERY ugly.
+
+------------------------------------------------------------------------
+r3287 | pelissip | 2005-02-09 14:26:29 +0000 (Wed, 09 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Fix again to avoid fail on laurent5...
+
+------------------------------------------------------------------------
+r3286 | pelissip | 2005-02-09 14:21:48 +0000 (Wed, 09 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Set CXXCPP to "g++ -E" to avoid detection (which may fail on some systems).
+
+------------------------------------------------------------------------
+r3285 | pelissip | 2005-02-09 14:11:13 +0000 (Wed, 09 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Reduce the tested compiler for C++ and Fortran to the minimum.
+
+------------------------------------------------------------------------
+r3284 | pelissip | 2005-02-09 13:19:17 +0000 (Wed, 09 Feb 2005) | 6 lines
+Changed paths:
+ M /trunk/configure.in
+
+Update GMP detection to be much more libtool compatible.
+As a consequence some tests using AC_RUN_IFELSE may fail due to ugly things
+like LD_LIBRARY_PATH no set or wrong selection of libgmp.
+So they just produce a warning, not a fatal error.
+TODO: Check if we can avoid thoses problems...
+
+------------------------------------------------------------------------
+r3283 | pelissip | 2005-02-08 15:49:12 +0000 (Tue, 08 Feb 2005) | 3 lines
+Changed paths:
+ D /trunk/ansi2knr.1
+ D /trunk/ansi2knr.c
+ D /trunk/config.guess
+ D /trunk/config.sub
+ D /trunk/depcomp
+ D /trunk/install-sh
+ D /trunk/missing
+ D /trunk/mkinstalldirs
+ M /trunk/prepare
+
+Remove automake and libtool files.
+Use `automake --add-missing --copy -i` to generate them.
+
+------------------------------------------------------------------------
+r3282 | pelissip | 2005-02-08 13:57:04 +0000 (Tue, 08 Feb 2005) | 2 lines
+Changed paths:
+ A /trunk/ansi2knr.1
+ A /trunk/ansi2knr.c
+
+Add support for ansi2knr
+
+------------------------------------------------------------------------
+r3281 | pelissip | 2005-02-08 13:54:10 +0000 (Tue, 08 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/README.dev
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/prepare
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tests.c
+ M /trunk/update-version
+
+Add support for Shared Library in MPFR (both Unix and Windows) by using libtool.
+Improve configure (remove unused macros, make dist produce .zip and .bz2)
+Update update-version to modify configure.in too.
+
+------------------------------------------------------------------------
+r3280 | pelissip | 2005-02-08 13:51:09 +0000 (Tue, 08 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update NEWS.
+
+------------------------------------------------------------------------
+r3279 | vlefevre | 2005-02-04 12:15:25 +0000 (Fri, 04 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3278 | pelissip | 2005-02-04 10:25:10 +0000 (Fri, 04 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Add forgotten functions to reuse test.
+
+------------------------------------------------------------------------
+r3277 | pelissip | 2005-02-04 10:10:37 +0000 (Fri, 04 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Improve reuse tests (Include 1, -1, 1/2, 2, PI and PI/2 now).
+
+------------------------------------------------------------------------
+r3276 | pelissip | 2005-02-04 09:14:37 +0000 (Fri, 04 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/tests/tatan.c
+
+Fix bug of atan(-1) (wrong sign).
+
+------------------------------------------------------------------------
+r3275 | pelissip | 2005-02-03 16:03:50 +0000 (Thu, 03 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Remove unused option --disable-cache.
+
+------------------------------------------------------------------------
+r3274 | pelissip | 2005-02-03 15:59:28 +0000 (Thu, 03 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_rnd.c
+
+Add option "thread-safe" to configure.
+Limited to use with GCC and ICC (using extension __thread).
+
+------------------------------------------------------------------------
+r3273 | pelissip | 2005-02-03 15:18:17 +0000 (Thu, 03 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add description of added functions.
+
+------------------------------------------------------------------------
+r3272 | pelissip | 2005-02-03 15:09:51 +0000 (Thu, 03 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+mpfr.h doesn't export anymore any globals.
+It doesn't define MPFR_FLAGS too.
+
+------------------------------------------------------------------------
+r3271 | pelissip | 2005-02-03 14:59:39 +0000 (Thu, 03 Feb 2005) | 7 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+Change user interface for mpfr_const_pi, mpfr_const_log2 and
+mpfr_const_euler. No more access to the cache itself.
+Create dummy functions which call the cache, and rename old
+functions to "_internal".
+Internally, it doesn't change at all (You still call directly
+the cache instead of the dummy function which calls the cache).
+
+------------------------------------------------------------------------
+r3270 | pelissip | 2005-02-03 14:43:20 +0000 (Thu, 03 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/mpfr.h
+ M /trunk/tests/texceptions.c
+
+Add functions mpfr_set_overflow, mpfr_set_underflow, mpfr_set_erangeflag,
+mpfr_set_inexflag, mpfr_set_nanflag
+
+------------------------------------------------------------------------
+r3269 | pelissip | 2005-02-03 14:33:31 +0000 (Thu, 03 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add1sp.c
+ M /trunk/add_one_ulp.c
+ M /trunk/cache.c
+ M /trunk/div.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/pow.c
+ M /trunk/pow_ui.c
+ M /trunk/pow_z.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+ M /trunk/set_sj.c
+ M /trunk/set_ui.c
+ M /trunk/set_uj.c
+ M /trunk/set_z.c
+ M /trunk/sqr.c
+ M /trunk/strtofr.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/tests/texceptions.c
+
+Rename internal functions mpfr_set_overflow in mpfr_overflow and
+ mpfr_set_underflow in mpfr_underflow so that we can add new functions
+mpfr_set_underflow and mpfr_set_overflow (which set the global flags).
+
+------------------------------------------------------------------------
+r3268 | pelissip | 2005-02-03 12:46:18 +0000 (Thu, 03 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/sin.c
+
+Add support for logging.
+Add support for ZivLoop.
+Improve efficiency if prec(op) >> prec(rop), and rop ~= 0
+
+------------------------------------------------------------------------
+r3267 | pelissip | 2005-02-03 12:44:51 +0000 (Thu, 03 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Fix wrong place for MPFR_LOG_BEGIN.
+
+------------------------------------------------------------------------
+r3266 | pelissip | 2005-02-03 12:44:15 +0000 (Thu, 03 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/logging.c
+
+Rename MPFR_LOG_BADCASE in MPFR_LOG_ZIV
+
+------------------------------------------------------------------------
+r3265 | pelissip | 2005-02-03 12:43:44 +0000 (Thu, 03 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Reduce the size of some lines (more than 80 chars).
+
+------------------------------------------------------------------------
+r3264 | pelissip | 2005-02-02 16:30:05 +0000 (Wed, 02 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+
+Fix again. My previous fix was incorrect.
+
+------------------------------------------------------------------------
+r3262 | pelissip | 2005-02-02 15:55:38 +0000 (Wed, 02 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/logging.c
+
+Fix wrong order of include system files.
+(printf.h is not available everywhere).
+
+------------------------------------------------------------------------
+r3261 | zimmerma | 2005-02-02 15:50:51 +0000 (Wed, 02 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+inexact flag was inexact :-)
+
+------------------------------------------------------------------------
+r3260 | pelissip | 2005-02-02 15:49:20 +0000 (Wed, 02 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/next.c
+ M /trunk/sin.c
+ M /trunk/sub1.c
+
+Move mpfr_nexttozero and mpfr_nexttoinf from static to mpfr-impl.
+Use them in sub1 and sin.
+
+------------------------------------------------------------------------
+r3259 | pelissip | 2005-02-02 14:58:36 +0000 (Wed, 02 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/README.dev
+ A /trunk/logging.c
+
+Add forgotten logging file.
+Add description of new macros in README.dev
+
+------------------------------------------------------------------------
+r3258 | pelissip | 2005-02-02 14:14:01 +0000 (Wed, 02 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/tests/tcos.c
+
+Add support for ZivLoop controller and logging.
+
+------------------------------------------------------------------------
+r3257 | pelissip | 2005-02-02 14:13:39 +0000 (Wed, 02 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure.in
+ M /trunk/mpfr-impl.h
+
+Add experimental logging feature.
+Add ZivLoop controller.
+
+------------------------------------------------------------------------
+r3256 | pelissip | 2005-02-02 14:09:18 +0000 (Wed, 02 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+
+Forget that mpf doesn't have mpf_free_str.
+Fix this.
+
+------------------------------------------------------------------------
+r3255 | pelissip | 2005-02-02 13:50:45 +0000 (Wed, 02 Feb 2005) | 3 lines
+Changed paths:
+ M /trunk/sub1.c
+ M /trunk/tests/tsin.c
+
+Fix bug of sub1 if dest=src2 and src1 >> src2
+=> Fix problem of mpfr_sin
+
+------------------------------------------------------------------------
+r3254 | zimmerma | 2005-02-02 13:45:48 +0000 (Wed, 02 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tui_sub.c
+
+added two tests
+
+------------------------------------------------------------------------
+r3253 | pelissip | 2005-02-01 14:50:19 +0000 (Tue, 01 Feb 2005) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Now MPFR tries to get GMP's CC and CFLAGS from its build directory.
+
+------------------------------------------------------------------------
+r3252 | pelissip | 2005-02-01 09:58:43 +0000 (Tue, 01 Feb 2005) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+Add AC_COPYRIGHT
+Clean up AC_ARG_ENABLE handling
+Add `--enable-logging` option.
+
+------------------------------------------------------------------------
+r3251 | zimmerma | 2005-01-31 09:37:09 +0000 (Mon, 31 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item
+
+------------------------------------------------------------------------
+r3250 | pelissip | 2005-01-31 08:47:04 +0000 (Mon, 31 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Fix a wrong assertion when double == long double.
+
+------------------------------------------------------------------------
+r3249 | pelissip | 2005-01-31 08:44:16 +0000 (Mon, 31 Jan 2005) | 4 lines
+Changed paths:
+ M /trunk/sin.c
+
+Add loop counter
+Check if the result is 0 (Due to new algorithm, it may be 0)
+and in that case, increase a lot the precision.
+
+------------------------------------------------------------------------
+r3248 | zimmerma | 2005-01-29 20:40:51 +0000 (Sat, 29 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/sin.c
+
+changed algorithm for mpfr_sin (to get inexact flag)
+
+------------------------------------------------------------------------
+r3246 | vlefevre | 2005-01-29 11:32:17 +0000 (Sat, 29 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/tests/texp.c
+
+Fixed a sign bug in mpfr_exp (found by Mark J Watkins).
+
+------------------------------------------------------------------------
+r3245 | zimmerma | 2005-01-28 16:57:22 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+solved efficiency problem in mpfr_sin_sign for x near Pi
+
+------------------------------------------------------------------------
+r3243 | vlefevre | 2005-01-28 14:22:34 +0000 (Fri, 28 Jan 2005) | 3 lines
+Changed paths:
+ D /trunk/tests/tdump.c
+
+Removed tests/tdump.c (was no longer used and mpfr_dump is already
+tested in toutimpl.c).
+
+------------------------------------------------------------------------
+r3242 | vlefevre | 2005-01-28 14:20:09 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+Updated copyright line.
+
+------------------------------------------------------------------------
+r3240 | pelissip | 2005-01-28 13:49:30 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Clean up code (due to mix with Paul changes).
+
+------------------------------------------------------------------------
+r3239 | pelissip | 2005-01-28 13:43:11 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+Improve inexact code since sin & cos can't be exact if x != 0
+
+------------------------------------------------------------------------
+r3238 | vlefevre | 2005-01-28 13:28:30 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Removed a useless test in macro MPFR_UNSIGNED_MINUS_MODULO.
+
+------------------------------------------------------------------------
+r3237 | pelissip | 2005-01-28 13:10:04 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+
+Much faster worst case (ie result near 0 or 1).
+
+------------------------------------------------------------------------
+r3236 | zimmerma | 2005-01-28 13:08:20 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+speed-up special case where approximation is 1 or -1
+
+------------------------------------------------------------------------
+r3235 | vlefevre | 2005-01-28 13:04:10 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/rint.c
+
+Updated comments about the rounding modes.
+
+------------------------------------------------------------------------
+r3234 | pelissip | 2005-01-28 12:23:55 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/reldiff.c
+
+Fix bug and optimize code.
+
+------------------------------------------------------------------------
+r3233 | pelissip | 2005-01-28 11:00:34 +0000 (Fri, 28 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/get_str.c
+
+FIx a warning (Wrong proto between declaration and implementation :
+ forget some const).
+
+------------------------------------------------------------------------
+r3232 | vlefevre | 2005-01-28 10:58:01 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Updated copyright line.
+
+------------------------------------------------------------------------
+r3231 | vlefevre | 2005-01-28 10:56:19 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cmp_si.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/div.c
+ M /trunk/erf.c
+ M /trunk/exp_2.c
+ M /trunk/get_d.c
+ M /trunk/get_ld.c
+ M /trunk/get_str.c
+ M /trunk/get_z_exp.c
+ M /trunk/mpfr.h
+ M /trunk/mpn_exp.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/rint.c
+ M /trunk/set_str.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr_compat.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tzeta.c
+
+Updated copyright lines.
+
+------------------------------------------------------------------------
+r3230 | zimmerma | 2005-01-28 10:43:30 +0000 (Fri, 28 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+fixed efficiency problem in case of cos(Pi)
+
+------------------------------------------------------------------------
+r3229 | pelissip | 2005-01-28 09:58:28 +0000 (Fri, 28 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/rint.c
+ M /trunk/tests/trint.c
+
+Fix bug if dest==src.
+Transform some MPFR_ASSERTN to MPFR_ASSERTD.
+
+------------------------------------------------------------------------
+r3227 | pelissip | 2005-01-27 16:02:23 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Fix a buffer overflow.
+
+------------------------------------------------------------------------
+r3226 | pelissip | 2005-01-27 15:40:39 +0000 (Thu, 27 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/get_ld.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_ld.c
+ M /trunk/tests/tset_ld.c
+
+New version of mpfr_set_ld and mpfr_get_ld for IEEE Extended Little Endian.
+(Due to problem on x86 with extended precision).
+
+------------------------------------------------------------------------
+r3225 | zimmerma | 2005-01-27 13:58:24 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/mpfr_compat.c
+
+partially fixed memory leak
+
+------------------------------------------------------------------------
+r3224 | zimmerma | 2005-01-27 13:40:13 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+test for huge cancellation was misplaced
+
+------------------------------------------------------------------------
+r3223 | zimmerma | 2005-01-27 13:28:49 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tsum.c
+
+fixed memory leak
+
+------------------------------------------------------------------------
+r3222 | zimmerma | 2005-01-27 12:53:45 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+fixed inefficiency problem for x near from Pi
+
+------------------------------------------------------------------------
+r3221 | zimmerma | 2005-01-27 10:56:44 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmpabs.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/toutimpl.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tpow_z.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqr.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsum.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tzeta.c
+
+casts to allow compilation with g++
+
+------------------------------------------------------------------------
+r3220 | zimmerma | 2005-01-27 09:35:41 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+added missing cast
+
+------------------------------------------------------------------------
+r3219 | zimmerma | 2005-01-27 09:28:29 +0000 (Thu, 27 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+added missing casts
+
+------------------------------------------------------------------------
+r3218 | zimmerma | 2005-01-25 18:23:38 +0000 (Tue, 25 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+fixed bug (overlap in mpn_divrem)
+
+------------------------------------------------------------------------
+r3217 | vlefevre | 2005-01-24 16:23:29 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ D /trunk/tests/Makefile.in
+
+Removed tests/Makefile.in from CVS.
+
+------------------------------------------------------------------------
+r3216 | pelissip | 2005-01-24 15:48:34 +0000 (Mon, 24 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+Fix bug reported by Eric Buchlin by using new function
+mpfr_pow_z.
+
+------------------------------------------------------------------------
+r3215 | pelissip | 2005-01-24 15:36:49 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ A /trunk/pow_z.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tpow_z.c
+
+Add new function mpfr_pow_z and its test file.
+
+------------------------------------------------------------------------
+r3214 | pelissip | 2005-01-24 15:35:08 +0000 (Mon, 24 Jan 2005) | 4 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/tests/tpow.c
+
+Fix overflows problems.
+Clean up overflow handling.
+Maybe some bugs remain...
+
+------------------------------------------------------------------------
+r3213 | vlefevre | 2005-01-24 15:04:05 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3212 | pelissip | 2005-01-24 14:19:20 +0000 (Mon, 24 Jan 2005) | 4 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Add an explicit reference to mpfr_dump so that
+you can use this function inside the tests with GDB, even if
+you don't use it in the tests.
+
+------------------------------------------------------------------------
+r3211 | zimmerma | 2005-01-24 13:45:38 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+added check before mpz_get_si() call
+
+------------------------------------------------------------------------
+r3210 | vlefevre | 2005-01-24 10:43:16 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r3209 | vlefevre | 2005-01-24 10:31:26 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Corrections on the typography.
+
+------------------------------------------------------------------------
+r3208 | vlefevre | 2005-01-24 10:16:51 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Corrected English usage.
+
+------------------------------------------------------------------------
+r3207 | vlefevre | 2005-01-24 00:03:59 +0000 (Mon, 24 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Typos.
+
+------------------------------------------------------------------------
+r3206 | zimmerma | 2005-01-21 12:20:54 +0000 (Fri, 21 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added LOADLIBES=...
+
+------------------------------------------------------------------------
+r3201 | vlefevre | 2005-01-21 10:20:17 +0000 (Fri, 21 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+Updated Copyright line.
+
+------------------------------------------------------------------------
+r3195 | pelissip | 2005-01-20 14:32:20 +0000 (Thu, 20 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sub1.c
+
+Fix again this previous patch!
+
+------------------------------------------------------------------------
+r3194 | zimmerma | 2005-01-20 11:23:51 +0000 (Thu, 20 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpn_exp.c
+
+fixed problems in get_str for huge exponent
+
+------------------------------------------------------------------------
+r3193 | pelissip | 2005-01-20 09:53:45 +0000 (Thu, 20 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-longlong.h
+
+Update longlong from GMP 4.1.4 (problem with opteron).
+
+------------------------------------------------------------------------
+r3192 | pelissip | 2005-01-18 13:30:50 +0000 (Tue, 18 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/sum.c
+
+Fix bug in case n==0 or n==1 (Reported and fixed by Laurent Fousse).
+
+------------------------------------------------------------------------
+r3191 | pelissip | 2005-01-14 15:02:15 +0000 (Fri, 14 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/sub1.c
+
+Add comments
+Fix bug in my patch (Need tests).
+
+------------------------------------------------------------------------
+r3190 | pelissip | 2005-01-14 13:50:09 +0000 (Fri, 14 Jan 2005) | 7 lines
+Changed paths:
+ M /trunk/atan.c
+
+Optimize mpfr_atan_aux by removing all power of 2 in the sum to
+reduce the size of the multiplication, normalize the input to extract
+as many zeros as possible and add a special case if the input is 1
+(after normalisation). But it doesn't optimize too much...
+I need to invertigate a few more too understand what is still costly.
+It seems that mpz_mul is the most called function.
+
+------------------------------------------------------------------------
+r3189 | pelissip | 2005-01-14 13:28:45 +0000 (Fri, 14 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+Improve and fix tanh for big floats.
+
+------------------------------------------------------------------------
+r3188 | pelissip | 2005-01-14 13:28:03 +0000 (Fri, 14 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/sub1.c
+
+Fix bug in some corner case (Just hope it doesn't add new bugs).
+It should be much faster in these cases too.
+
+------------------------------------------------------------------------
+r3187 | pelissip | 2005-01-14 13:26:55 +0000 (Fri, 14 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+Remove warning
+
+------------------------------------------------------------------------
+r3186 | pelissip | 2005-01-14 11:40:22 +0000 (Fri, 14 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Tiny update
+
+------------------------------------------------------------------------
+r3185 | pelissip | 2005-01-14 08:20:35 +0000 (Fri, 14 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+
+Fix bug (Forget a debug line).
+
+------------------------------------------------------------------------
+r3184 | pelissip | 2005-01-13 16:21:47 +0000 (Thu, 13 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/sinh.c
+
+Fix overflow bug
+Optimize code
+
+------------------------------------------------------------------------
+r3183 | pelissip | 2005-01-13 08:22:09 +0000 (Thu, 13 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Fix bug in mpn_sub_nc in case the compiler optimize too much.
+
+------------------------------------------------------------------------
+r3182 | pelissip | 2005-01-12 10:00:52 +0000 (Wed, 12 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+
+Add forgotten 2005 copyright line.
+
+------------------------------------------------------------------------
+r3181 | pelissip | 2005-01-12 09:57:57 +0000 (Wed, 12 Jan 2005) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+
+Fix problem of `mpn_sub_nc' which may or may not be defined in libgmp.a
+ (Add a test in the configure and a new macro MPFR_HAVE_MPN_SUB_NC)
+Add MPFR_LOG2_BIT_PER_MP_LIMB macro
+
+------------------------------------------------------------------------
+r3180 | pelissip | 2005-01-12 09:22:37 +0000 (Wed, 12 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/atan.c
+
+Massive optimization of mpfr_atan (20x faster than 2.1.0 at 53 bits!)
+Minor optimization of mpfr_acos
+
+------------------------------------------------------------------------
+r3179 | pelissip | 2005-01-11 16:27:42 +0000 (Tue, 11 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Fix typo
+
+------------------------------------------------------------------------
+r3178 | pelissip | 2005-01-11 08:42:16 +0000 (Tue, 11 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/gmp_op.c
+
+Reduce size of code
+Optimize a few too.
+
+------------------------------------------------------------------------
+r3177 | pelissip | 2005-01-11 08:40:51 +0000 (Tue, 11 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Forget 2005 !
+
+------------------------------------------------------------------------
+r3176 | pelissip | 2005-01-11 08:39:49 +0000 (Tue, 11 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Improve and fix detection of NAN and GCC bug.
+
+------------------------------------------------------------------------
+r3175 | pelissip | 2005-01-04 15:04:18 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+new version (completely rewritten) by Paul Zimmermann.
+
+------------------------------------------------------------------------
+r3174 | pelissip | 2005-01-04 14:52:28 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/tests/tatan.c
+
+Fix forgotten '2005' Line.
+
+------------------------------------------------------------------------
+r3173 | pelissip | 2005-01-04 14:41:09 +0000 (Tue, 04 Jan 2005) | 5 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/tests/tatan.c
+
+Fix wrong inexact value (regression).
+FIXME: It seems that adding MPFR_GET_EXP (xp) bits is too much
+ (since previously it always add 0, but the results were quite
+ always exact - this bug was only discovered under rare case).
+
+------------------------------------------------------------------------
+r3172 | zimmerma | 2005-01-04 12:23:41 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item (mpfr_printf)
+
+------------------------------------------------------------------------
+r3171 | pelissip | 2005-01-04 10:34:17 +0000 (Tue, 04 Jan 2005) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+ M /trunk/mpfr-impl.h
+
+Optimize mpfr_exp2 by inlining some code, and by avoiding using
+mpz_sizeinbase.
+
+------------------------------------------------------------------------
+r3170 | pelissip | 2005-01-04 10:33:18 +0000 (Tue, 04 Jan 2005) | 4 lines
+Changed paths:
+ M /trunk/erf.c
+
+Remove unused code.
+Remove _MPFR_PROTO for static functions.
+Other cosmetic change.
+
+------------------------------------------------------------------------
+r3169 | pelissip | 2005-01-04 10:32:01 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/get_str.c
+
+Remove _MPFR_PROTO for static functions.
+
+------------------------------------------------------------------------
+r3168 | pelissip | 2005-01-04 10:29:14 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Remove unused code.
+
+------------------------------------------------------------------------
+r3167 | pelissip | 2005-01-04 10:28:41 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Optimize mpfr_get_d.
+
+------------------------------------------------------------------------
+r3166 | pelissip | 2005-01-04 10:28:03 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add a new configuration to check before releasing MPFR.
+
+------------------------------------------------------------------------
+r3165 | pelissip | 2005-01-04 10:26:44 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/sum.c
+
+Fix problem of tab with ncurses.
+
+------------------------------------------------------------------------
+r3164 | pelissip | 2005-01-04 10:26:14 +0000 (Tue, 04 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/cmp_si.c
+ M /trunk/get_z_exp.c
+
+Likely some tests
+
+------------------------------------------------------------------------
+r3163 | pelissip | 2005-01-04 10:25:40 +0000 (Tue, 04 Jan 2005) | 4 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+
+Fix bug if not gmp-impl.h (mpn_sub_nc is internal).
+Move MPFR_SET_EXP after checking the exponent range.
+Minor change in the way to return the ternary value.
+
+------------------------------------------------------------------------
+r3162 | zimmerma | 2005-01-01 12:17:16 +0000 (Sat, 01 Jan 2005) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/sum.c
+
+changed tab[] into *tab (and removed 'tab' in mpfr.h)
+
+------------------------------------------------------------------------
+r3161 | zimmerma | 2004-12-24 10:41:39 +0000 (Fri, 24 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+new version (completely rewritten)
+
+------------------------------------------------------------------------
+r3160 | zimmerma | 2004-12-24 10:28:47 +0000 (Fri, 24 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/tests/tsqrt.c
+
+improved coverage (and fixed bug)
+
+------------------------------------------------------------------------
+r3159 | pelissip | 2004-12-21 15:54:00 +0000 (Tue, 21 Dec 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+ M /trunk/tests/trint.c
+
+Fixed errors reported by Nelson H. F. Beebe
+(forget to include sys/fpu.h if defined and math.h if std=c99).
+
+------------------------------------------------------------------------
+r3158 | pelissip | 2004-12-20 12:54:45 +0000 (Mon, 20 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+Fix wrong integer type and a test.
+
+------------------------------------------------------------------------
+r3157 | pelissip | 2004-12-20 12:53:46 +0000 (Mon, 20 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Add some assertion.
+
+------------------------------------------------------------------------
+r3156 | pelissip | 2004-12-20 12:53:20 +0000 (Mon, 20 Dec 2004) | 3 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+Unlikely one test.
+Fix wrong integer type
+
+------------------------------------------------------------------------
+r3155 | pelissip | 2004-12-20 12:52:47 +0000 (Mon, 20 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+ M /trunk/sub1.c
+
+Reindent the code.
+
+------------------------------------------------------------------------
+r3154 | pelissip | 2004-12-17 14:18:49 +0000 (Fri, 17 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+ M /trunk/tan.c
+
+Optimize mpfr_tan
+
+------------------------------------------------------------------------
+r3153 | pelissip | 2004-12-17 13:36:51 +0000 (Fri, 17 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+
+Optimize the computing of the sign of sinus if GET_EXP(x) < 0
+
+------------------------------------------------------------------------
+r3152 | pelissip | 2004-12-17 13:20:13 +0000 (Fri, 17 Dec 2004) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+
+Optimize mpfr_cos.
+From 3363 / 21663.99 / 79727 to 3139 / 18920.58 / 69624 (opteron).
+
+------------------------------------------------------------------------
+r3151 | pelissip | 2004-12-17 13:13:50 +0000 (Fri, 17 Dec 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Fix precision used to test long double.
+Now it is sizeof(long_double)*CHAR_BIT instead of fixed 113.
+
+------------------------------------------------------------------------
+r3150 | pelissip | 2004-12-17 11:14:56 +0000 (Fri, 17 Dec 2004) | 3 lines
+Changed paths:
+ M /trunk/extract.c
+
+FIx wrong integer types
+Add an assertion.
+
+------------------------------------------------------------------------
+r3149 | pelissip | 2004-12-17 11:14:23 +0000 (Fri, 17 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+Likely / Unlikely some code.
+
+------------------------------------------------------------------------
+r3148 | pelissip | 2004-12-17 11:13:53 +0000 (Fri, 17 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/get_ld.c
+ M /trunk/set_d.c
+ M /trunk/set_ld.c
+ M /trunk/tests/tset_ld.c
+
+Fix problem with long double with ICC (Wrong x86 processor flag).
+
+------------------------------------------------------------------------
+r3147 | pelissip | 2004-12-16 13:41:21 +0000 (Thu, 16 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+Fix wrong integer types.
+
+------------------------------------------------------------------------
+r3146 | pelissip | 2004-12-16 13:37:23 +0000 (Thu, 16 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Fix bug.
+
+------------------------------------------------------------------------
+r3145 | pelissip | 2004-12-16 13:27:11 +0000 (Thu, 16 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+
+Optimize mpfr_acos by choosing a better initial precision.
+
+------------------------------------------------------------------------
+r3144 | pelissip | 2004-12-16 13:12:42 +0000 (Thu, 16 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+
+Optimize mpfr_asin by improving the choice of the initial precision.
+
+------------------------------------------------------------------------
+r3143 | pelissip | 2004-12-16 12:04:10 +0000 (Thu, 16 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Optimize mpfr_atan.
+
+------------------------------------------------------------------------
+r3142 | pelissip | 2004-12-15 16:32:57 +0000 (Wed, 15 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/inp_str.c
+ M /trunk/tests/tinp_str.c
+
+Fix problem with GCC 4.0 20041212.
+
+------------------------------------------------------------------------
+r3141 | pelissip | 2004-12-15 14:22:50 +0000 (Wed, 15 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Remove thread attribut until I found a good way to use it.
+
+------------------------------------------------------------------------
+r3140 | pelissip | 2004-12-15 10:49:11 +0000 (Wed, 15 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Test
+
+------------------------------------------------------------------------
+r3139 | pelissip | 2004-12-15 10:47:42 +0000 (Wed, 15 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/strtofr.c
+
+Add 'const' attribute to table.
+
+------------------------------------------------------------------------
+r3138 | pelissip | 2004-12-15 10:46:00 +0000 (Wed, 15 Dec 2004) | 2 lines
+Changed paths:
+ D /trunk/save_expo.c
+
+Remove unused file.
+
+------------------------------------------------------------------------
+r3137 | pelissip | 2004-12-15 09:04:07 +0000 (Wed, 15 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+New way of detecting GMP libraray, which should be more portable.
+
+------------------------------------------------------------------------
+r3136 | pelissip | 2004-12-14 12:30:30 +0000 (Tue, 14 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-test.h
+ M /trunk/tests/Makefile.am
+ D /trunk/tests/amd64.asm
+ M /trunk/tests/tests.c
+ M /trunk/tests/tset_ld.c
+ D /trunk/tests/x86.asm
+
+Remove useless assembly code.
+
+------------------------------------------------------------------------
+r3135 | pelissip | 2004-12-14 10:54:47 +0000 (Tue, 14 Dec 2004) | 6 lines
+Changed paths:
+ M /trunk/cmp.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/set.c
+
+Add "MPFR_USE_NO_MACRO" user macro: it allows the user to link
+directly with MPFR functions rather than using Macros to access
+them. It doesn't define MPFR variable inside mpfr.h too.
+Fix set.c and cmp.c in consequences.
+Fix mpf2mpfr.h to use mpfr_get_default_rounding_mode () if needed.
+
+------------------------------------------------------------------------
+r3134 | pelissip | 2004-12-13 14:32:26 +0000 (Mon, 13 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/mulders.c
+
+Improved prototype.
+
+------------------------------------------------------------------------
+r3133 | pelissip | 2004-12-13 14:31:11 +0000 (Mon, 13 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/set_q.c
+
+Fix bug of overflow (I hope).
+
+------------------------------------------------------------------------
+r3132 | pelissip | 2004-12-13 10:23:33 +0000 (Mon, 13 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.texi
+ M /trunk/set_q.c
+
+Update mpfr_set_q overflow problem.
+
+------------------------------------------------------------------------
+r3131 | pelissip | 2004-12-13 08:24:58 +0000 (Mon, 13 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/generic.c
+
+Fix wrong integer types.
+
+------------------------------------------------------------------------
+r3130 | pelissip | 2004-12-10 16:02:03 +0000 (Fri, 10 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Optimize by increasing with BITS_PER_MP_LIMB instead of log2(prec)
+
+------------------------------------------------------------------------
+r3129 | pelissip | 2004-12-10 15:59:15 +0000 (Fri, 10 Dec 2004) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+
+Clean up code (Fix integer types + rewrite some code).
+Optimize the code by reducing the number of used variables inside the loop.
+
+------------------------------------------------------------------------
+r3128 | pelissip | 2004-12-10 15:58:13 +0000 (Fri, 10 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+
+Replace mpfr_neg to MPFR_CHANGE_SIGN.
+
+------------------------------------------------------------------------
+r3127 | pelissip | 2004-12-10 15:57:48 +0000 (Fri, 10 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/add1sp.c
+
+Cosmetic changes.
+
+------------------------------------------------------------------------
+r3126 | pelissip | 2004-12-10 14:45:54 +0000 (Fri, 10 Dec 2004) | 4 lines
+Changed paths:
+ M /trunk/acos.c
+
+Clean the code.
+Avoid mixing integer types.
+Fix bug of overflow if Pi is in the range but not Pi/2.
+
+------------------------------------------------------------------------
+r3125 | pelissip | 2004-12-10 14:22:49 +0000 (Fri, 10 Dec 2004) | 5 lines
+Changed paths:
+ M /trunk/asin.c
+
+Clean up the code (Removing useless variables and avoid mixing wrong integer types).
+Optimize the code by improving memory allocation scheme and by incrementating by
+BITS_PER_MP_LIMB in case of an error instead of MPFR_INT_CEIL_LOG2 (prec).
+Fix an overflow bug for X=+/-1 (If PI is inside the exponent range, but not PI/2).
+
+------------------------------------------------------------------------
+r3124 | pelissip | 2004-12-09 14:34:47 +0000 (Thu, 09 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Simplify MPFR_SIGN by removing unnecessary ( ).
+
+------------------------------------------------------------------------
+r3123 | pelissip | 2004-12-09 14:31:23 +0000 (Thu, 09 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Add support for new attribut sentinel in incoming GCC 4.0
+
+------------------------------------------------------------------------
+r3122 | pelissip | 2004-12-09 13:23:25 +0000 (Thu, 09 Dec 2004) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+
+Optimize initial precision in case of EXP(x) < 0.
+
+------------------------------------------------------------------------
+r3121 | pelissip | 2004-12-09 10:13:55 +0000 (Thu, 09 Dec 2004) | 6 lines
+Changed paths:
+ M /trunk/cache.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_sj.c
+
+Optimize mpfr_set4.
+Inline rounding in mpfr_set4 and mpfr_cache
+mpfr_set4 dosn't return MPFR_EVEN_INEX (It was undocumented before).
+Fix problems with tests (Avoid mixing MPFR_EVEN_INEX and 1).
+Add MPFR_RNDRAW_EVEN for rounding with MPFR_EVEN_INEX inexact support
+
+------------------------------------------------------------------------
+r3120 | pelissip | 2004-12-08 14:08:45 +0000 (Wed, 08 Dec 2004) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/tests/tsqr.c
+
+Optimize mpfr_mul by inlining and rewriting the rounding.
+It seems that GCC option `-frename-registers` for mpfr_mul / Athlon XP
+improves its performance (But it decreases it on Pentium4)...
+
+------------------------------------------------------------------------
+r3119 | zimmerma | 2004-12-01 11:34:21 +0000 (Wed, 01 Dec 2004) | 2 lines
+Changed paths:
+ A /trunk/mulders.c
+
+first try to implement Mulders' algorithm
+
+------------------------------------------------------------------------
+r3118 | pelissip | 2004-11-29 15:10:29 +0000 (Mon, 29 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update TODO.
+
+------------------------------------------------------------------------
+r3117 | zimmerma | 2004-11-29 13:58:14 +0000 (Mon, 29 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added new tests for corner cases
+
+------------------------------------------------------------------------
+r3116 | zimmerma | 2004-11-29 13:52:35 +0000 (Mon, 29 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added algo for pi
+
+------------------------------------------------------------------------
+r3115 | pelissip | 2004-11-25 10:28:32 +0000 (Thu, 25 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/tan.c
+
+Change initial term if exp(a)<0.
+
+------------------------------------------------------------------------
+r3114 | pelissip | 2004-11-25 10:28:13 +0000 (Thu, 25 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+Simplify the inner loop.
+
+------------------------------------------------------------------------
+r3113 | pelissip | 2004-11-25 10:11:07 +0000 (Thu, 25 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+Change initial precision if EXP(op) < 0.
+
+------------------------------------------------------------------------
+r3112 | pelissip | 2004-11-23 12:49:15 +0000 (Tue, 23 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/set_z.c
+
+Optimize code and rewrite the rounding part.
+FIXME: It seems that the previous rounding code was buggy. Still I am not sure.
+
+------------------------------------------------------------------------
+r3111 | pelissip | 2004-11-23 12:48:00 +0000 (Tue, 23 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tgmpop.c
+
+Improve tests.
+
+------------------------------------------------------------------------
+r3110 | pelissip | 2004-11-19 14:38:28 +0000 (Fri, 19 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+Improve the initial value of prec: 10% improvement (?) on average.
+
+------------------------------------------------------------------------
+r3109 | pelissip | 2004-11-19 14:36:11 +0000 (Fri, 19 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+Improve coverage test.
+
+------------------------------------------------------------------------
+r3108 | pelissip | 2004-11-19 13:02:04 +0000 (Fri, 19 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+ M /trunk/ui_pow_ui.c
+
+Fix bug for mpfr_ui_pow_ui (Wrong inexact flag).
+
+------------------------------------------------------------------------
+r3107 | pelissip | 2004-11-19 12:39:10 +0000 (Fri, 19 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/get_z.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/tget_z.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_sj.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsqr.c
+ M /trunk/ufloor_log2.c
+
+Improve coverage tests.
+
+------------------------------------------------------------------------
+r3106 | pelissip | 2004-11-19 10:28:33 +0000 (Fri, 19 Nov 2004) | 4 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/README.dev
+ M /trunk/mpfr-impl.h
+
+Fix typos in INSTALL.
+Sort README.dev, and add a new section about How to write a MPFR function.
+Add a link to README.dev in mpfr-impl.h.
+
+------------------------------------------------------------------------
+r3105 | pelissip | 2004-11-19 08:35:48 +0000 (Fri, 19 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+
+Fix a bug on some compilators:
+ First MPFR_SAVE_EXPO_DECL, then TMP_DECL.
+
+------------------------------------------------------------------------
+r3104 | pelissip | 2004-11-18 15:53:55 +0000 (Thu, 18 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/tests/tpow.c
+
+Fix an overflow bug.
+
+------------------------------------------------------------------------
+r3103 | pelissip | 2004-11-18 15:15:27 +0000 (Thu, 18 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/tests/tset_si.c
+
+Fix bug with inexact flag.
+FIXME: Maybe still a bug with inexact flag if overflow in mpfr_mul_2exp ?
+
+------------------------------------------------------------------------
+r3102 | pelissip | 2004-11-18 15:00:06 +0000 (Thu, 18 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr-impl.h
+ M /trunk/pow_ui.c
+
+Remove mpfr_save_emin_emax and mpfr_restore_emin_emax
+from MPFR library since they are useless.
+
+------------------------------------------------------------------------
+r3101 | pelissip | 2004-11-18 14:55:08 +0000 (Thu, 18 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+Forget to remove rndraw.c test.
+
+------------------------------------------------------------------------
+r3100 | pelissip | 2004-11-18 14:52:59 +0000 (Thu, 18 Nov 2004) | 4 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add_ui.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/gamma.c
+ M /trunk/hypot.c
+ M /trunk/mpfr-impl.h
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/rint.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_ld.c
+ M /trunk/set_q.c
+ M /trunk/set_si_2exp.c
+ M /trunk/set_ui_2exp.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+ M /trunk/tanh.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+
+Replace use of mpfr_save_emin_emax () / mpfr_restore_emin_emax()
+by MPFR_SAVE_EXPO macros (DECL, MARK and FREE) which are faster
+and thread safe.
+
+------------------------------------------------------------------------
+r3098 | pelissip | 2004-11-18 14:04:52 +0000 (Thu, 18 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+Enable fast computing.
+
+------------------------------------------------------------------------
+r3097 | vlefevre | 2004-11-18 14:04:50 +0000 (Thu, 18 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix: GMP -> MPFR Copying Conditions (noted by Patrick).
+
+------------------------------------------------------------------------
+r3096 | pelissip | 2004-11-18 10:08:49 +0000 (Thu, 18 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Reorder the file and put sections to make it cleaner and more readable.
+
+------------------------------------------------------------------------
+r3095 | pelissip | 2004-11-18 09:11:19 +0000 (Thu, 18 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/log.c
+
+Reduce number of used variables.
+Optimize code and clean it.
+
+------------------------------------------------------------------------
+r3093 | vlefevre | 2004-11-18 08:56:06 +0000 (Thu, 18 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+In HTML, suppress the non-existing link to GMP.
+
+------------------------------------------------------------------------
+r3092 | pelissip | 2004-11-18 08:32:01 +0000 (Thu, 18 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/init2.c
+ M /trunk/mpfr-impl.h
+
+Add a prototype of own TMP_ALLOC. Don't know if it is a good idea.
+To enable it, just build MPFR with MPFR_USE_OWN_TMP_ALLOC.
+
+------------------------------------------------------------------------
+r3091 | pelissip | 2004-11-17 16:22:14 +0000 (Wed, 17 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/strtofr.c
+ M /trunk/sum.c
+
+Fix bug with TMP_MARK.
+
+------------------------------------------------------------------------
+r3090 | pelissip | 2004-11-16 16:14:43 +0000 (Tue, 16 Nov 2004) | 4 lines
+Changed paths:
+ M /trunk/pow_ui.c
+
+Optimize the code:
+ + Special case for n == 2
+ + The first squaring is done using the original input.
+
+------------------------------------------------------------------------
+r3089 | pelissip | 2004-11-16 16:13:30 +0000 (Tue, 16 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+
+Add new assertion to check.
+
+------------------------------------------------------------------------
+r3088 | pelissip | 2004-11-16 16:13:01 +0000 (Tue, 16 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/cmp2.c
+
+Likely / Unlikely some tests.
+
+------------------------------------------------------------------------
+r3087 | pelissip | 2004-11-15 11:44:26 +0000 (Mon, 15 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+Add unused code (Still needs a proof).
+
+------------------------------------------------------------------------
+r3086 | pelissip | 2004-11-15 11:43:33 +0000 (Mon, 15 Nov 2004) | 4 lines
+Changed paths:
+ M /trunk/get_exp.c
+ M /trunk/mpfr.h
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_prec.c
+ M /trunk/set_rnd.c
+ M /trunk/set_ui.c
+
+Add macro version for small functions:
+ mpfr_get_prec, mpfr_get_exp, mpfr_get_default_rounding_mode,
+ mpfr_get_default_prec and mpfr_set_ui
+
+------------------------------------------------------------------------
+r3085 | pelissip | 2004-11-15 08:38:36 +0000 (Mon, 15 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Refix another bug (The same).
+
+------------------------------------------------------------------------
+r3084 | pelissip | 2004-11-15 08:32:23 +0000 (Mon, 15 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Fix a bug (Use __gmpfr_ceil_log2 instead of MPFR_INT_CEIL_LOG2).
+
+------------------------------------------------------------------------
+r3083 | zimmerma | 2004-11-12 17:29:54 +0000 (Fri, 12 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added algorithm for mpfr_sqrt
+improved algorithm for mpfr_div
+
+------------------------------------------------------------------------
+r3082 | zimmerma | 2004-11-12 17:22:57 +0000 (Fri, 12 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+use MPFR_SET_EXP/MPFR_GET_EXP instead of MPFR_EXP(r)++
+
+------------------------------------------------------------------------
+r3081 | vlefevre | 2004-11-12 16:03:43 +0000 (Fri, 12 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Bug fix: delayed all the initializations after the singular test.
+
+------------------------------------------------------------------------
+r3080 | vlefevre | 2004-11-11 11:30:46 +0000 (Thu, 11 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Untabified the source.
+
+------------------------------------------------------------------------
+r3079 | vlefevre | 2004-11-11 11:26:51 +0000 (Thu, 11 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+The test MPFR_GET_EXP(u) != MPFR_EMAX_MAX is no longer necessary
+since we decided to lower MPFR_EMAX_MAX to avoid such tests.
+
+------------------------------------------------------------------------
+r3078 | pelissip | 2004-11-10 16:12:53 +0000 (Wed, 10 Nov 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/sqrt.c
+
+Remove use of CNST_LIMB and TMP_ALLOC_LIMB which are GMP internal.
+Add MPFR_LIMB_ZERO.
+
+------------------------------------------------------------------------
+r3077 | zimmerma | 2004-11-10 12:10:16 +0000 (Wed, 10 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/tests/tsqrt.c
+
+new simpler and faster code
+
+------------------------------------------------------------------------
+r3076 | pelissip | 2004-11-10 12:05:20 +0000 (Wed, 10 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cosh.c
+ M /trunk/erf.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/gamma.c
+ M /trunk/get_str.c
+ M /trunk/hypot.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sum.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+
+Replace __gmpfr_ceil_log2 by MPFR_INT_CEIL_LOG2 when possible.
+
+------------------------------------------------------------------------
+r3075 | pelissip | 2004-11-10 12:02:34 +0000 (Wed, 10 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add __extension__ to avoid warning useless in GCC.
+
+------------------------------------------------------------------------
+r3074 | vlefevre | 2004-11-03 16:14:38 +0000 (Wed, 03 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/README
+
+Update.
+
+------------------------------------------------------------------------
+r3069 | pelissip | 2004-11-03 09:11:31 +0000 (Wed, 03 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fix wrong Visual C++ code.
+
+------------------------------------------------------------------------
+r3068 | vlefevre | 2004-11-02 17:01:49 +0000 (Tue, 02 Nov 2004) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Code checking for GMP library wasn't working (always returning "yes"?).
+
+------------------------------------------------------------------------
+r3066 | vlefevre | 2004-10-27 16:34:33 +0000 (Wed, 27 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Updated copyright line.
+
+------------------------------------------------------------------------
+r3064 | vlefevre | 2004-10-27 14:13:24 +0000 (Wed, 27 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Added a bug and updated copyright line.
+
+------------------------------------------------------------------------
+r3062 | vlefevre | 2004-10-27 13:06:42 +0000 (Wed, 27 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3061 | vlefevre | 2004-10-27 13:04:10 +0000 (Wed, 27 Oct 2004) | 7 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/set_d.c
+
+Removed the definitions of DBL_POS_INF/DBL_NEG_INF/DBL_NAN for
+Visual C++ as they were incorrect. Modified DOUBLE_ISINF(x) so
+that infinities are no longer used (this should fix a part of
+the problem for Visual C++). If IEEE 754 is not supported, one
+should probably use the standard INFINITY macro instead of
+(1.0/0.0), since (1.0/0.0) is specific to IEEE 754.
+
+------------------------------------------------------------------------
+r3060 | vlefevre | 2004-10-27 11:55:05 +0000 (Wed, 27 Oct 2004) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/tests/tests.c
+
+Applied patch by Steve M. Robbins for non-IRIX MIPS systems
+(originally for MPFR 2.0.3).
+
+------------------------------------------------------------------------
+r3059 | vlefevre | 2004-10-26 02:11:43 +0000 (Tue, 26 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tsub1sp.c
+
+Reformatted the code.
+
+------------------------------------------------------------------------
+r3058 | vlefevre | 2004-10-26 01:49:26 +0000 (Tue, 26 Oct 2004) | 5 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/ttanh.c
+
+Replaced mpfr_set_emin/emax by set_emin/emax in tests to check
+the return value; defined set_emin/emax in "tests/tests.c".
+Fix: added missing #include <string.h> in "tests/tests.c".
+Removed variable names in prototypes in "mpfr-test.h".
+
+------------------------------------------------------------------------
+r3057 | vlefevre | 2004-10-22 13:19:48 +0000 (Fri, 22 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+
+Reformatted the code -> GNU style.
+
+------------------------------------------------------------------------
+r3054 | vlefevre | 2004-10-22 12:49:32 +0000 (Fri, 22 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3053 | pelissip | 2004-10-22 08:00:56 +0000 (Fri, 22 Oct 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Declaration of "tests_rand_start" and "tests_rand_end" with the same storage class specifier
+in tests.c (static missing line 65 and 109).
+
+------------------------------------------------------------------------
+r3052 | vlefevre | 2004-10-21 11:53:26 +0000 (Thu, 21 Oct 2004) | 4 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+Bug fixed: cast to unsigned char instead of int for isspace (no,
+these are not "psycho" systems, just systems with signed chars).
+Untabified the source.
+
+------------------------------------------------------------------------
+r3051 | pelissip | 2004-10-20 13:27:25 +0000 (Wed, 20 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Improve ICC CFLAGS by removins meaningless warnings.
+
+------------------------------------------------------------------------
+r3050 | pelissip | 2004-10-20 12:52:33 +0000 (Wed, 20 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+Remove some warnings on some "psycho" systems.
+
+------------------------------------------------------------------------
+r3049 | pelissip | 2004-10-20 09:37:55 +0000 (Wed, 20 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Update the chapter "Make a release".
+
+------------------------------------------------------------------------
+r3048 | pelissip | 2004-10-20 09:36:18 +0000 (Wed, 20 Oct 2004) | 4 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/tests.c
+ M /trunk/tests/tinp_str.c
+
+Fix bug when you build MPFR outside source directory.
+Add function src_fopen to open a file in the source directory, which
+may be different from the current directory.
+
+------------------------------------------------------------------------
+r3047 | pelissip | 2004-10-20 07:12:08 +0000 (Wed, 20 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Fix a typo.
+
+------------------------------------------------------------------------
+r3046 | vlefevre | 2004-10-19 13:07:28 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Another correction (English).
+
+------------------------------------------------------------------------
+r3045 | vlefevre | 2004-10-19 13:05:34 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Minor correction.
+
+------------------------------------------------------------------------
+r3044 | pelissip | 2004-10-19 12:49:15 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update NEWS to reflect the change in mpfr_set_str.
+
+------------------------------------------------------------------------
+r3043 | pelissip | 2004-10-19 12:45:45 +0000 (Tue, 19 Oct 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+ M /trunk/tests/tset_str.c
+
+Update mpfr_set_str to be much more like strtofr.
+Update the documentation to reflect the changes.
+
+------------------------------------------------------------------------
+r3042 | zimmerma | 2004-10-19 10:18:14 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+changed contributors section
+
+------------------------------------------------------------------------
+r3041 | pelissip | 2004-10-19 09:53:00 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Add a line about binary compatibility.
+
+------------------------------------------------------------------------
+r3040 | zimmerma | 2004-10-19 09:24:10 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+changed "contributors" section
+
+------------------------------------------------------------------------
+r3039 | zimmerma | 2004-10-19 09:02:46 +0000 (Tue, 19 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+changed rights (remove executable permission)
+
+------------------------------------------------------------------------
+r3038 | vlefevre | 2004-10-18 15:07:09 +0000 (Mon, 18 Oct 2004) | 7 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Misc corrections:
+ + spelling mistakes
+ + consistency: in direction @var{rnd} -> in the direction @var{rnd}
+ + @code{NULL} pointer -> null pointer (as in the C standard)
+ + in the example for mpfr_inits2 / mpfr_clears: NULL -> (void *) 0
+ as NULL isn't necessarily a pointer.
+
+------------------------------------------------------------------------
+r3037 | pelissip | 2004-10-18 14:23:01 +0000 (Mon, 18 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/README
+
+Update
+
+------------------------------------------------------------------------
+r3036 | pelissip | 2004-10-18 13:28:28 +0000 (Mon, 18 Oct 2004) | 7 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+ M /trunk/strtofr.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tstrtofr.c
+
+Change "unsigned int" to "int" for base in proto of strtofr.
+Change set_str to use strtofr (Fix a bug too).
+Limit base to 36 in strtofr (since get_str is limited to 36).
+Update documentation to reflect the changes.
+mpfr_get_d1 is moved to section internal in the documentation.
+Update the tests.
+
+------------------------------------------------------------------------
+r3035 | pelissip | 2004-10-18 13:21:55 +0000 (Mon, 18 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Hard code NAN, +INF and -INF values for MVC.
+
+------------------------------------------------------------------------
+r3034 | pelissip | 2004-10-18 09:47:37 +0000 (Mon, 18 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/tout_str.c
+
+Fix problem on systems where "/dev/null" doesn't exist.
+
+------------------------------------------------------------------------
+r3033 | vlefevre | 2004-10-16 10:48:15 +0000 (Sat, 16 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+ M /trunk/mpfr.texi
+
+Misc corrections.
+
+------------------------------------------------------------------------
+r3032 | vlefevre | 2004-10-15 14:06:28 +0000 (Fri, 15 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Updated the section "To make a release".
+
+------------------------------------------------------------------------
+r3031 | vlefevre | 2004-10-15 13:58:37 +0000 (Fri, 15 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/VERSION
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/version.c
+
+Updated the version on the trunk.
+
+------------------------------------------------------------------------
+r3030 | vlefevre | 2004-10-15 12:52:20 +0000 (Fri, 15 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r3029 | vlefevre | 2004-10-15 12:49:05 +0000 (Fri, 15 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update for 2.1.0.
+
+------------------------------------------------------------------------
+r3028 | vlefevre | 2004-10-13 08:35:11 +0000 (Wed, 13 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Added a comment about autoreconf and a bug in Debian (now fixed).
+
+------------------------------------------------------------------------
+r3027 | pelissip | 2004-10-12 07:24:51 +0000 (Tue, 12 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Add a note about Windows 64.
+
+------------------------------------------------------------------------
+r3026 | pelissip | 2004-10-11 13:52:42 +0000 (Mon, 11 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update documentation.
+
+------------------------------------------------------------------------
+r3025 | pelissip | 2004-10-11 13:52:29 +0000 (Mon, 11 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Improve Windows installation.
+
+------------------------------------------------------------------------
+r3024 | pelissip | 2004-10-11 13:52:07 +0000 (Mon, 11 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add a line about "near" and "far".
+
+------------------------------------------------------------------------
+r3023 | pelissip | 2004-10-07 11:53:27 +0000 (Thu, 07 Oct 2004) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+ M /trunk/tests/tget_str.c
+
+Add support for ".lib" since it seems to work.
+Display GMP version inside the configure.
+
+------------------------------------------------------------------------
+r3022 | zimmerma | 2004-10-05 09:45:29 +0000 (Tue, 05 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added one new test
+
+------------------------------------------------------------------------
+r3021 | vlefevre | 2004-10-04 13:40:35 +0000 (Mon, 04 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+Added worst cases.
+
+------------------------------------------------------------------------
+r3020 | zimmerma | 2004-10-02 07:28:07 +0000 (Sat, 02 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added new tests (worst-case)
+
+------------------------------------------------------------------------
+r3019 | zimmerma | 2004-10-01 12:31:46 +0000 (Fri, 01 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added new worst-cases (directed rounding)
+
+------------------------------------------------------------------------
+r3018 | zimmerma | 2004-10-01 07:35:34 +0000 (Fri, 01 Oct 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new function to implement (dilog)
+
+------------------------------------------------------------------------
+r3017 | zimmerma | 2004-09-30 16:11:13 +0000 (Thu, 30 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed bug in get_str_aux when one extra digit
+
+------------------------------------------------------------------------
+r3016 | vlefevre | 2004-09-30 16:06:25 +0000 (Thu, 30 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/rint.c
+ M /trunk/tests/trint.c
+
+Added functions mpfr_rint_round, mpfr_rint_trunc, mpfr_rint_ceil,
+mpfr_rint_floor.
+
+------------------------------------------------------------------------
+r3015 | pelissip | 2004-09-30 13:03:52 +0000 (Thu, 30 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+Add new test (One failed).
+
+------------------------------------------------------------------------
+r3014 | vlefevre | 2004-09-30 09:21:11 +0000 (Thu, 30 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/get_sj.c
+
+The cast to uintmax_t wasn't really useful, so I removed it.
+Added a comment.
+
+------------------------------------------------------------------------
+r3013 | vlefevre | 2004-09-30 09:06:37 +0000 (Thu, 30 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_sj.c
+
+The real fix for sizeof(intmax_t) == sizeof(mp_limb_t).
+
+------------------------------------------------------------------------
+r3012 | pelissip | 2004-09-30 08:08:59 +0000 (Thu, 30 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_sj.c
+
+Fix a bug if sizeof(intmax_t) == sizeof(mp_limb_t)
+
+------------------------------------------------------------------------
+r3011 | zimmerma | 2004-09-29 16:05:01 +0000 (Wed, 29 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added worst-case
+
+------------------------------------------------------------------------
+r3010 | pelissip | 2004-09-29 13:58:06 +0000 (Wed, 29 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/cmp.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ld.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcmpabs.c
+
+cmp(x,y) if x=NAN or y=NAN returns 0 and erange flag.
+
+------------------------------------------------------------------------
+r3009 | pelissip | 2004-09-29 12:54:47 +0000 (Wed, 29 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/NEWS
+ M /trunk/mpfr.texi
+
+Update documentation and NEWS to reflect new functions
+and functionnality.
+
+------------------------------------------------------------------------
+r3008 | pelissip | 2004-09-29 12:28:17 +0000 (Wed, 29 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_z.c
+ M /trunk/strtofr.c
+
+Improve assertion.
+
+------------------------------------------------------------------------
+r3007 | pelissip | 2004-09-29 12:27:36 +0000 (Wed, 29 Sep 2004) | 6 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/get_si.c
+ M /trunk/get_sj.c
+ M /trunk/get_ui.c
+ M /trunk/get_uj.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_sj.c
+ M /trunk/set_uj.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/tget_sj.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_sj.c
+
+Add mpfr_clear_erangeflag and mpfr_erangeflag_p.
+Add test for theses two functions.
+mpfr_get_[s/u][i/j] have a deterministic behavior in case of OVERFLOW.
+(Return the MINIMUM or the MAXIMUM in the current type, and set
+ERANGE_flag).
+
+------------------------------------------------------------------------
+r3006 | pelissip | 2004-09-29 12:23:54 +0000 (Wed, 29 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/fits_intmax.c
+ A /trunk/fits_uintmax.c
+ M /trunk/mpfr.h
+ M /trunk/tests/tfits.c
+
+Add mpfr_uintmax_p and mpfr_intmax_p.
+
+------------------------------------------------------------------------
+r3005 | pelissip | 2004-09-29 12:21:03 +0000 (Wed, 29 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/TODO
+
+Update INSTALL about C++
+Update TODO and VERSION.
+
+------------------------------------------------------------------------
+r3004 | pelissip | 2004-09-29 08:59:58 +0000 (Wed, 29 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Move mpfr_inits from mpfr-impl to mpfr.h.
+Add doc too.
+
+------------------------------------------------------------------------
+r3003 | pelissip | 2004-09-28 10:09:18 +0000 (Tue, 28 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_sj.c
+ M /trunk/get_uj.c
+
+Reindent the sources (again).
+
+------------------------------------------------------------------------
+r3002 | pelissip | 2004-09-28 09:26:34 +0000 (Tue, 28 Sep 2004) | 5 lines
+Changed paths:
+ M /trunk/mpn_exp.c
+
+Fix how to detect overflow so that it can be build with GCC -ftrapv
+option without any bugs (In the previous code, the overflow was
+detected afterwards, whereas, now, it is detected before).
+Fix also another real problem of overflow (Addition of two signed integers).
+
+------------------------------------------------------------------------
+r3001 | pelissip | 2004-09-28 08:24:07 +0000 (Tue, 28 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Rename this variable again.
+
+------------------------------------------------------------------------
+r3000 | pelissip | 2004-09-28 07:53:46 +0000 (Tue, 28 Sep 2004) | 4 lines
+Changed paths:
+ M /trunk/div.c
+
+Replace variable 'near' to 'the_real_near' since MSVC incorreclty
+recognize "far" and "near" as obsolete keywords (100% incorrect, and
+clearly MSVC fault but it doesn't cost many things to change the name).
+
+------------------------------------------------------------------------
+r2999 | pelissip | 2004-09-27 14:59:46 +0000 (Mon, 27 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix typo in the documentation about get_ functions.
+
+------------------------------------------------------------------------
+r2998 | pelissip | 2004-09-27 14:58:37 +0000 (Mon, 27 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_sj.c
+ M /trunk/get_uj.c
+
+Retab the sources.
+
+------------------------------------------------------------------------
+r2997 | vlefevre | 2004-09-27 13:58:21 +0000 (Mon, 27 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Added mpfr_get_uj and mpfr_get_sj in the changes 2.0.3 -> 2.1.0.
+
+------------------------------------------------------------------------
+r2996 | vlefevre | 2004-09-27 13:38:24 +0000 (Mon, 27 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Added an item about the future MPFR_FLAGS_ERANGE flag.
+
+------------------------------------------------------------------------
+r2995 | vlefevre | 2004-09-27 13:21:12 +0000 (Mon, 27 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_sj.c
+ A /trunk/get_uj.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tget_sj.c
+
+New functions mpfr_get_sj and mpfr_get_uj, with tests.
+
+------------------------------------------------------------------------
+r2994 | pelissip | 2004-09-27 08:35:25 +0000 (Mon, 27 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/set_sj.c
+
+Remove MPFR_NEED_LONGLONG_H macro.
+
+------------------------------------------------------------------------
+r2993 | vlefevre | 2004-09-26 22:18:46 +0000 (Sun, 26 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/set_sj.c
+
+Added a cast to avoid an integer overflow.
+
+------------------------------------------------------------------------
+r2992 | vlefevre | 2004-09-24 14:53:05 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_si.c
+
+Fixed integer overflow.
+
+------------------------------------------------------------------------
+r2991 | vlefevre | 2004-09-24 14:13:20 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_si.c
+
+Fixed bugs (like those in mpfr_get_ui).
+
+------------------------------------------------------------------------
+r2990 | vlefevre | 2004-09-24 13:38:39 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+The standard autoreconf script should now be used instead of prepare.
+
+------------------------------------------------------------------------
+r2989 | zimmerma | 2004-09-24 11:43:47 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_ui.c
+
+forgot to check for 0
+
+------------------------------------------------------------------------
+r2988 | zimmerma | 2004-09-24 11:15:45 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_ui.c
+
+now use mpfr_rint()
+
+------------------------------------------------------------------------
+r2987 | pelissip | 2004-09-24 08:32:31 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update doc of mpfr_get_str (Minimum space is 7).
+
+------------------------------------------------------------------------
+r2986 | zimmerma | 2004-09-24 07:21:04 +0000 (Fri, 24 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/get_ui.c
+ M /trunk/tests/tset_si.c
+
+fixed double-rounding bug in get_ui
+
+------------------------------------------------------------------------
+r2985 | pelissip | 2004-09-23 15:28:35 +0000 (Thu, 23 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+Prevent from multiple inclusion.
+mpf_init inits to 0 rather than NAN.
+
+------------------------------------------------------------------------
+r2984 | pelissip | 2004-09-23 13:54:41 +0000 (Thu, 23 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix some tiny problems.
+
+------------------------------------------------------------------------
+r2983 | zimmerma | 2004-09-23 10:16:45 +0000 (Thu, 23 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added item on rounding to odd
+
+------------------------------------------------------------------------
+r2982 | pelissip | 2004-09-21 12:42:37 +0000 (Tue, 21 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+Fix a bug in FreeBsd 5.20 / Alpha / Gcc 3.3.3.
+Not a MPFR bug, but add some code to avoid it.
+Reference: http://www.freebsd.org/cgi/query-pr.cgi?pr=72024
+------------------------------------------------------------------------
+r2981 | pelissip | 2004-09-21 11:46:11 +0000 (Tue, 21 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+ M /trunk/tests/tstrtofr.c
+
+Add a new test and clarify a comment.
+
+------------------------------------------------------------------------
+r2980 | pelissip | 2004-09-21 09:52:54 +0000 (Tue, 21 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/strtofr.c
+
+Update Assertion for pow2.
+
+------------------------------------------------------------------------
+r2979 | pelissip | 2004-09-20 15:38:19 +0000 (Mon, 20 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Update NEWS.
+
+------------------------------------------------------------------------
+r2978 | pelissip | 2004-09-20 15:13:51 +0000 (Mon, 20 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update TODO due to new function mpfr_strtofr
+
+------------------------------------------------------------------------
+r2977 | pelissip | 2004-09-20 14:45:32 +0000 (Mon, 20 Sep 2004) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/get_d.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/set_d.c
+ M /trunk/strtofr.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tstrtofr.c
+
+Add ICC detection && support.
+Remove some potential warnings in the test files.
+
+------------------------------------------------------------------------
+r2976 | pelissip | 2004-09-20 08:57:28 +0000 (Mon, 20 Sep 2004) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.texi
+ A /trunk/strtofr.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tstrtofr.c
+
+Add mpfr_strtofr function.
+Add mpfr_strtofr test file.
+Add mpfr_strtofr documentation.
+
+------------------------------------------------------------------------
+r2975 | pelissip | 2004-09-20 08:55:56 +0000 (Mon, 20 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Improve GMP.h vs libgmp.a version checking.
+
+------------------------------------------------------------------------
+r2974 | zimmerma | 2004-09-17 16:26:22 +0000 (Fri, 17 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one entry (new function 1/sqrt(x))
+
+------------------------------------------------------------------------
+r2973 | pelissip | 2004-09-17 09:49:50 +0000 (Fri, 17 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+ M /trunk/tests/Makefile.am
+
+Use LIBS instead of LDADD for libraries (GMP).
+
+------------------------------------------------------------------------
+r2972 | pelissip | 2004-09-17 07:21:31 +0000 (Fri, 17 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Min GMP version is 4.1.0 now.
+
+------------------------------------------------------------------------
+r2971 | pelissip | 2004-09-16 11:12:09 +0000 (Thu, 16 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Add a check if both gmp.h and libgmp.a have the same version.
+
+------------------------------------------------------------------------
+r2970 | pelissip | 2004-09-16 11:11:23 +0000 (Thu, 16 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fix a typo.
+
+------------------------------------------------------------------------
+r2969 | pelissip | 2004-09-15 08:50:55 +0000 (Wed, 15 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+Add a forgotten regression test "1.2.3"
+
+------------------------------------------------------------------------
+r2968 | vlefevre | 2004-09-15 08:38:08 +0000 (Wed, 15 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/config.guess
+ M /trunk/config.sub
+
+Update from the autotools-dev Debian package.
+
+------------------------------------------------------------------------
+r2967 | vlefevre | 2004-09-15 08:27:38 +0000 (Wed, 15 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2966 | pelissip | 2004-09-14 15:11:07 +0000 (Tue, 14 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add 2 new macros for handling correctly overflow.
+
+------------------------------------------------------------------------
+r2965 | zimmerma | 2004-09-13 14:00:36 +0000 (Mon, 13 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+fixed bug (several '.' allowed in mantissa)
+
+------------------------------------------------------------------------
+r2964 | zimmerma | 2004-09-03 09:06:13 +0000 (Fri, 03 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added notes for Windows
+
+------------------------------------------------------------------------
+r2963 | pelissip | 2004-09-02 07:06:39 +0000 (Thu, 02 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Add a line about Dynamic Version of MPFR.
+
+------------------------------------------------------------------------
+r2962 | zimmerma | 2004-09-01 16:42:07 +0000 (Wed, 01 Sep 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added warnings about init functions (mpf wrt mpfr)
+
+------------------------------------------------------------------------
+r2961 | pelissip | 2004-08-31 13:01:00 +0000 (Tue, 31 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update documentations.
+
+------------------------------------------------------------------------
+r2960 | pelissip | 2004-08-31 13:00:15 +0000 (Tue, 31 Aug 2004) | 3 lines
+Changed paths:
+ M /trunk/get_z.c
+ M /trunk/mpfr.h
+ M /trunk/tests/tget_z.c
+
+Rename mpz_set_fr to mpfr_get_z.
+Provide a conditionnal macro for mpz_set_fr.
+
+------------------------------------------------------------------------
+r2959 | pelissip | 2004-08-31 09:20:41 +0000 (Tue, 31 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add doc for mpfr_sqr.
+
+------------------------------------------------------------------------
+r2958 | pelissip | 2004-08-31 08:58:29 +0000 (Tue, 31 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix month.
+
+------------------------------------------------------------------------
+r2957 | pelissip | 2004-08-26 09:05:32 +0000 (Thu, 26 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+Add a new test to check overflow.
+
+------------------------------------------------------------------------
+r2956 | pelissip | 2004-08-24 14:00:42 +0000 (Tue, 24 Aug 2004) | 3 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+Try to retype correctly the functions (replace int by the correct type).
+Still some works to do.
+
+------------------------------------------------------------------------
+r2955 | pelissip | 2004-08-23 09:32:27 +0000 (Mon, 23 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add description of what does MPFR_INT_CEIL_LOG2.
+
+------------------------------------------------------------------------
+r2954 | pelissip | 2004-08-23 09:31:32 +0000 (Mon, 23 Aug 2004) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/exp_2.c
+ A /trunk/isqrt.c
+
+Move __gmpfr_isqrt and __gmpfr_cuberoot to another file.
+Clean up the code of mpfr_exp_2: remove DEBUG condition to use TRACE, ASSERT and DUMP.
+Use MPFR_INT_CEIL_LOG2 instead of __gmpfr_ceil_log2.
+
+------------------------------------------------------------------------
+r2953 | pelissip | 2004-08-23 09:29:55 +0000 (Mon, 23 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Improve a comment.
+
+------------------------------------------------------------------------
+r2952 | pelissip | 2004-08-23 09:01:18 +0000 (Mon, 23 Aug 2004) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/int_ceil_log2.c
+ M /trunk/mpfr-impl.h
+
+Add MPFR_INT_CEIL_LOG2 macro and __gmpfr_int_ceil_log2 function
+(don't use function but macro).
+
+------------------------------------------------------------------------
+r2951 | pelissip | 2004-08-23 08:58:24 +0000 (Mon, 23 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Fix 2 typos.
+
+------------------------------------------------------------------------
+r2950 | pelissip | 2004-08-19 15:02:18 +0000 (Thu, 19 Aug 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Fix a bug on 64-bits introduced due to huger MPFR_EMAX_MAX.
+
+------------------------------------------------------------------------
+r2949 | pelissip | 2004-08-19 14:42:03 +0000 (Thu, 19 Aug 2004) | 5 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Add new functions: mpfr_get_emin_min, mpfr_get_emax_max, mpfr_get_emin_max and
+mpfr_get_emax_min.
+Add documentation and explanation about potential portability problem when
+you mpfr_set_emin and mpfr_set_emax.
+
+------------------------------------------------------------------------
+r2948 | vlefevre | 2004-07-28 15:10:23 +0000 (Wed, 28 Jul 2004) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Added mpfr-longlong.h to libmpfr_a_SOURCES so that it is distributed
+with make dist.
+
+------------------------------------------------------------------------
+r2947 | vlefevre | 2004-07-28 15:06:29 +0000 (Wed, 28 Jul 2004) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Added mpfr-gmp.h to libmpfr_a_SOURCES so that it is distributed
+with make dist.
+
+------------------------------------------------------------------------
+r2946 | pelissip | 2004-07-26 14:38:56 +0000 (Mon, 26 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add a new section.
+
+------------------------------------------------------------------------
+r2945 | pelissip | 2004-07-20 09:09:34 +0000 (Tue, 20 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ A /trunk/sqr.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tsqr.c
+
+Add function mpfr_sqr (TODO: Make doc)
+
+------------------------------------------------------------------------
+r2944 | pelissip | 2004-07-19 11:48:10 +0000 (Mon, 19 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+Fix an unsigned/signed comparison.
+
+------------------------------------------------------------------------
+r2943 | pelissip | 2004-07-19 11:39:27 +0000 (Mon, 19 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+Improve the emulation of mpn_sqr_n and fix some typos.
+
+------------------------------------------------------------------------
+r2942 | pelissip | 2004-07-16 11:33:34 +0000 (Fri, 16 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+Remove unused item "rnd_mode" in cache struct.
+
+------------------------------------------------------------------------
+r2941 | pelissip | 2004-07-16 08:59:40 +0000 (Fri, 16 Jul 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tversion.c
+ M /trunk/version.c
+
+Renamme mpfr_version to mpfr_get_version to be more GMP compatible.
+Add macro mpfr_version.
+
+------------------------------------------------------------------------
+r2940 | pelissip | 2004-07-16 08:54:53 +0000 (Fri, 16 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+ M /trunk/round_raw_generic.c
+
+Likely some tests.
+
+------------------------------------------------------------------------
+r2939 | pelissip | 2004-07-15 07:58:02 +0000 (Thu, 15 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/set_si.c
+
+Add a speciliation for set_si for GCC.
+
+------------------------------------------------------------------------
+r2938 | pelissip | 2004-07-09 09:42:26 +0000 (Fri, 09 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+Try to optimize a few agm by rewriting a few the loop.
+
+------------------------------------------------------------------------
+r2937 | pelissip | 2004-07-09 09:41:45 +0000 (Fri, 09 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Likely / Unlikely some tests using gcov.
+
+------------------------------------------------------------------------
+r2936 | pelissip | 2004-07-06 12:16:52 +0000 (Tue, 06 Jul 2004) | 5 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Remove some unused code.
+Add MPFR_LMIB_PER_DOUBLE
+Add MPFR_DUMP
+Add MPFR_TRACE
+
+------------------------------------------------------------------------
+r2935 | pelissip | 2004-07-06 12:14:44 +0000 (Tue, 06 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Likely some tests.
+
+------------------------------------------------------------------------
+r2934 | pelissip | 2004-07-06 12:14:11 +0000 (Tue, 06 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Used static precision for the array of limb for double.
+
+------------------------------------------------------------------------
+r2933 | pelissip | 2004-07-06 12:10:24 +0000 (Tue, 06 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Likely some tests / Other minor optimisations.
+
+------------------------------------------------------------------------
+r2932 | pelissip | 2004-07-06 12:09:31 +0000 (Tue, 06 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/ui_div.c
+
+Minor modifications.
+
+------------------------------------------------------------------------
+r2931 | pelissip | 2004-07-06 12:08:13 +0000 (Tue, 06 Jul 2004) | 3 lines
+Changed paths:
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+
+Unlikely a test so that it is faster when you call theses functions
+with the same dest and source which is the common case in MPFR.
+
+------------------------------------------------------------------------
+r2930 | pelissip | 2004-07-06 12:04:08 +0000 (Tue, 06 Jul 2004) | 3 lines
+Changed paths:
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+
+Likely a test to optimize when dest and src are the same
+(which is very likely inside MPFR).
+
+------------------------------------------------------------------------
+r2929 | pelissip | 2004-07-06 12:02:59 +0000 (Tue, 06 Jul 2004) | 2 lines
+Changed paths:
+ M /trunk/cache.c
+
+Likely a test (since cache should always work fine).
+
+------------------------------------------------------------------------
+r2928 | pelissip | 2004-06-28 12:11:44 +0000 (Mon, 28 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+ M /trunk/get_d.c
+
+Add some likely, and use a static table instead of a dynamic one.
+
+------------------------------------------------------------------------
+r2927 | pelissip | 2004-06-16 12:08:30 +0000 (Wed, 16 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/atan.c
+
+Unlikely some tests.
+
+------------------------------------------------------------------------
+r2926 | pelissip | 2004-06-10 15:10:12 +0000 (Thu, 10 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+Likely / Unlikely the code.
+
+------------------------------------------------------------------------
+r2925 | pelissip | 2004-06-10 14:03:10 +0000 (Thu, 10 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Respace some macro.
+
+------------------------------------------------------------------------
+r2924 | pelissip | 2004-06-10 14:02:30 +0000 (Thu, 10 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/save_expo.c
+
+Retab some lines.
+
+------------------------------------------------------------------------
+r2923 | pelissip | 2004-06-10 14:01:33 +0000 (Thu, 10 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/get_z.c
+
+Optimize a bit.
+
+------------------------------------------------------------------------
+r2922 | pelissip | 2004-06-10 13:59:50 +0000 (Thu, 10 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/tests/tsin.c
+
+Fix an overflow bug.
+
+------------------------------------------------------------------------
+r2921 | zimmerma | 2004-06-08 07:27:40 +0000 (Tue, 08 Jun 2004) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+ M /trunk/tests/texp.c
+
+fixed bug in mpfr_exp_3 (wrong assert)
+
+------------------------------------------------------------------------
+r2920 | pelissip | 2004-05-27 14:39:34 +0000 (Thu, 27 May 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix typos.
+
+------------------------------------------------------------------------
+r2919 | pelissip | 2004-05-27 09:52:44 +0000 (Thu, 27 May 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update doc.
+
+------------------------------------------------------------------------
+r2918 | zimmerma | 2004-05-18 16:00:28 +0000 (Tue, 18 May 2004) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+
+fixed problem for x near from Pi/2 (the internal precision should take
+into account the cancellation)
+
+------------------------------------------------------------------------
+r2917 | pelissip | 2004-05-18 15:26:19 +0000 (Tue, 18 May 2004) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/tests/tsin.c
+
+Improve tests for sin.
+
+------------------------------------------------------------------------
+r2916 | zimmerma | 2004-05-18 14:29:55 +0000 (Tue, 18 May 2004) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+mpfr_sin_sign() should use at least MPFR_GET_EXP() bits
+
+------------------------------------------------------------------------
+r2915 | pelissip | 2004-05-17 07:57:34 +0000 (Mon, 17 May 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove an item.
+
+------------------------------------------------------------------------
+r2914 | pelissip | 2004-05-12 14:57:36 +0000 (Wed, 12 May 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+ M /trunk/tests/ttan.c
+
+Add a potential test (Too slow).
+
+------------------------------------------------------------------------
+r2913 | pelissip | 2004-05-12 14:57:10 +0000 (Wed, 12 May 2004) | 2 lines
+Changed paths:
+ M /trunk/tan.c
+
+Simplify the code.
+
+------------------------------------------------------------------------
+r2912 | pelissip | 2004-05-11 07:21:45 +0000 (Tue, 11 May 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Remove a C++ comment.
+
+------------------------------------------------------------------------
+r2911 | pelissip | 2004-05-10 07:03:28 +0000 (Mon, 10 May 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Remove a forgotten "assertd" which isn't useful anymore.
+
+------------------------------------------------------------------------
+r2910 | pelissip | 2004-05-07 15:04:30 +0000 (Fri, 07 May 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/mpfr-impl.h
+
+Optimize cos.
+
+------------------------------------------------------------------------
+r2909 | zimmerma | 2004-05-07 13:00:11 +0000 (Fri, 07 May 2004) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+
+improved initial value of working precision (did not take into account
+2K lost bits for large arguments)
+
+------------------------------------------------------------------------
+r2908 | pelissip | 2004-05-06 12:37:21 +0000 (Thu, 06 May 2004) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/asin.c
+ M /trunk/atan.c
+ M /trunk/exp2.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/ttanh.c
+
+Fix overflow and add corresponding tests.
+
+------------------------------------------------------------------------
+r2907 | pelissip | 2004-05-06 10:42:56 +0000 (Thu, 06 May 2004) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Fix a bug in a formula.
+
+------------------------------------------------------------------------
+r2906 | pelissip | 2004-05-06 10:42:44 +0000 (Thu, 06 May 2004) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+Optimize it a bit.
+
+------------------------------------------------------------------------
+r2905 | pelissip | 2004-05-06 09:56:48 +0000 (Thu, 06 May 2004) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp_2.c
+ M /trunk/gamma.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tgamma.c
+
+Fix overflow problems.
+
+------------------------------------------------------------------------
+r2904 | pelissip | 2004-05-06 09:11:20 +0000 (Thu, 06 May 2004) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tcosh.c
+
+Fix overflow bug.
+
+------------------------------------------------------------------------
+r2903 | pelissip | 2004-05-05 15:34:06 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Remove the double vars. (Use fixed instead).
+
+------------------------------------------------------------------------
+r2902 | pelissip | 2004-05-05 15:14:07 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Add a note about tanh.
+
+------------------------------------------------------------------------
+r2901 | pelissip | 2004-05-05 15:10:43 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+ M /trunk/tests/ttanh.c
+
+Fix a bug in cas of overflow in tanh.
+
+------------------------------------------------------------------------
+r2900 | pelissip | 2004-05-05 13:02:20 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+Optimize a few by reducing the # of used vars.
+
+------------------------------------------------------------------------
+r2899 | pelissip | 2004-05-05 12:29:28 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/cosh.c
+ M /trunk/tests/tcosh.c
+
+Fix critical bugs due to different kind of overflow in cosh.
+
+------------------------------------------------------------------------
+r2898 | pelissip | 2004-05-05 12:28:38 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add MPFR_TMP_INIT_ABS macro.
+
+------------------------------------------------------------------------
+r2897 | pelissip | 2004-05-05 09:39:23 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+ M /trunk/cosh.c
+
+Optimize cosh a few by removing an unused intermedary var.
+
+------------------------------------------------------------------------
+r2896 | pelissip | 2004-05-05 07:49:22 +0000 (Wed, 05 May 2004) | 2 lines
+Changed paths:
+ M /trunk/const_log2.c
+
+Fix a critical bug in case of overflow.
+
+------------------------------------------------------------------------
+r2895 | pelissip | 2004-05-04 15:46:42 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tlog.c
+
+Fix a critical bug in cos in case you have set the float range for the exponents.
+
+------------------------------------------------------------------------
+r2894 | pelissip | 2004-05-04 14:17:54 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+Optimize a few cos.
+
+------------------------------------------------------------------------
+r2893 | pelissip | 2004-05-04 13:34:15 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+Optimize the way of computing initial precision.
+
+------------------------------------------------------------------------
+r2892 | pelissip | 2004-05-04 12:52:01 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+Add a test to check an overflow in const_pi (called by log in case of emulation of the float type).
+
+------------------------------------------------------------------------
+r2891 | pelissip | 2004-05-04 12:50:59 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+Move to ASSERT mode some code.
+
+------------------------------------------------------------------------
+r2890 | pelissip | 2004-05-04 12:46:13 +0000 (Tue, 04 May 2004) | 3 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+Push/Pop emin/emax so that an overflow can't occur in mpfr_set_z(x,pi,r)
+Add test too.
+
+------------------------------------------------------------------------
+r2889 | pelissip | 2004-05-04 09:06:04 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/mul_2ui.c
+
+Add some UNLIKELY to the while.
+
+------------------------------------------------------------------------
+r2888 | pelissip | 2004-05-04 09:05:30 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+Add some UNLIKELY to the tests.
+
+------------------------------------------------------------------------
+r2887 | pelissip | 2004-05-04 09:05:00 +0000 (Tue, 04 May 2004) | 2 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/tests/tadd1sp.c
+
+Fix an overflow bug in add1sp.
+
+------------------------------------------------------------------------
+r2885 | pelissip | 2004-04-29 07:31:09 +0000 (Thu, 29 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Fix a typo in AC_MY_LIBS.
+
+------------------------------------------------------------------------
+r2884 | pelissip | 2004-04-28 07:47:59 +0000 (Wed, 28 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+ M /trunk/mpfr.h
+
+Add mpfr_cmp as a real function, not only a macro.
+
+------------------------------------------------------------------------
+r2883 | pelissip | 2004-04-28 07:43:36 +0000 (Wed, 28 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/set.c
+
+Add mpfr_set and mpfr_abs as real functions.
+
+------------------------------------------------------------------------
+r2882 | pelissip | 2004-04-27 13:35:45 +0000 (Tue, 27 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+When using GCC, optimize certain common comparisons.
+
+------------------------------------------------------------------------
+r2881 | zimmerma | 2004-04-27 11:40:47 +0000 (Tue, 27 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item
+
+------------------------------------------------------------------------
+r2880 | pelissip | 2004-04-27 09:04:14 +0000 (Tue, 27 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+Minor Optimizations.
+
+------------------------------------------------------------------------
+r2879 | pelissip | 2004-04-27 09:03:17 +0000 (Tue, 27 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/cache.c
+
+Fix a bug (Use nextbeloz instead of sub_one_ulp).
+
+------------------------------------------------------------------------
+r2878 | pelissip | 2004-04-21 13:07:50 +0000 (Wed, 21 Apr 2004) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr-impl.h
+
+Add option in configure: --disable-cache
+to disable the use of the cache for the const.
+
+------------------------------------------------------------------------
+r2877 | pelissip | 2004-04-21 12:47:53 +0000 (Wed, 21 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix a typo.
+
+------------------------------------------------------------------------
+r2876 | pelissip | 2004-04-21 12:36:30 +0000 (Wed, 21 Apr 2004) | 5 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/cache.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/free_cache.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+
+Add preliminary generic code to handle cached const.
+Move const_pi, const_log2 to use this generic cache,
+which fix bugs of the previous implementation.
+const_euler is now cached too.
+
+------------------------------------------------------------------------
+r2875 | pelissip | 2004-04-21 12:34:00 +0000 (Wed, 21 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+Fix a bug (If x = Nan, the new new precision wasn't set).
+
+------------------------------------------------------------------------
+r2874 | pelissip | 2004-04-21 12:33:29 +0000 (Wed, 21 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/cputime.h
+
+Fix a typo bug.
+
+------------------------------------------------------------------------
+r2873 | pelissip | 2004-04-20 12:13:51 +0000 (Tue, 20 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tconst_log2.c
+
+Add new test about the cache: new bug to fix.
+
+------------------------------------------------------------------------
+r2872 | pelissip | 2004-04-20 12:03:40 +0000 (Tue, 20 Apr 2004) | 2 lines
+Changed paths:
+ A /trunk/iszero.c
+
+Add forgotten file for mpfr_zero_p.
+
+------------------------------------------------------------------------
+r2871 | pelissip | 2004-04-20 09:32:20 +0000 (Tue, 20 Apr 2004) | 6 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/isinf.c
+ M /trunk/isnan.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/sgn.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tsgn.c
+
+Add mpfr_zero_p.
+Add macros for mpfr_inf_p, mpfr_nan_p and mpfr_zero_p.
+Add macro for mpfr_sgn.
+Update doc.
+Add new tests.
+
+------------------------------------------------------------------------
+r2870 | pelissip | 2004-04-20 09:30:56 +0000 (Tue, 20 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+Fix a bug in a proto.
+
+------------------------------------------------------------------------
+r2869 | pelissip | 2004-04-20 09:29:48 +0000 (Tue, 20 Apr 2004) | 3 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/tests/tagm.c
+
+Fix a bug when both op are < 0 (It seems it was my fault).
+Add a test to check it.
+
+------------------------------------------------------------------------
+r2868 | pelissip | 2004-04-09 08:38:02 +0000 (Fri, 09 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+
+Fix a bug (Remove useless function).
+
+------------------------------------------------------------------------
+r2867 | pelissip | 2004-04-08 09:12:08 +0000 (Thu, 08 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+Fix another bug (Maybe the last?).
+
+------------------------------------------------------------------------
+r2866 | pelissip | 2004-04-08 09:09:45 +0000 (Thu, 08 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.h
+
+Fix a tiny bug.
+
+------------------------------------------------------------------------
+r2865 | pelissip | 2004-04-08 09:07:10 +0000 (Thu, 08 Apr 2004) | 4 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-test.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_f.c
+
+Update memory allocations scheme without gmp-impl.h.
+Now the semantic of the memory allocation scheme is the same
+with and without gmp-impl, as it should be.
+
+------------------------------------------------------------------------
+r2864 | pelissip | 2004-04-07 14:42:32 +0000 (Wed, 07 Apr 2004) | 3 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/gmp_op.c
+ M /trunk/mpfr.texi
+ M /trunk/sub_ui.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/ui_sub.c
+
+For add/sub_type functions where type is a type without signed zeros,
+specify the expected result when both operands are 0.
+
+------------------------------------------------------------------------
+r2863 | pelissip | 2004-04-07 14:40:47 +0000 (Wed, 07 Apr 2004) | 4 lines
+Changed paths:
+ M /trunk/init2.c
+ M /trunk/mpfr-gmp.c
+ M /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+Modify a few the allocation scheme without gmp-impl.h
+Add pseudo-constants __MPFR_EXP_NAN, __MPFR_EXP_ZERO and __MPFR_EXP_INF
+for future (?) inlining of some functions.
+
+------------------------------------------------------------------------
+r2862 | zimmerma | 2004-04-07 14:19:44 +0000 (Wed, 07 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/mpn_exp.c
+ M /trunk/set_str.c
+ M /trunk/tests/tset_str.c
+
+fixed problem when overflow in destination exponent happens
+
+------------------------------------------------------------------------
+r2861 | pelissip | 2004-04-07 13:31:54 +0000 (Wed, 07 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+Fix a bug in case a mpz_t == 0 (mpz_sizeinbase(0Z,2)==0 and MPFR_PREC_MIN=2).
+
+------------------------------------------------------------------------
+r2860 | pelissip | 2004-04-07 13:12:41 +0000 (Wed, 07 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/tests/tpow.c
+
+Fix a bug in case of pow(2E1000000,-10);
+
+------------------------------------------------------------------------
+r2859 | zimmerma | 2004-04-05 08:53:04 +0000 (Mon, 05 Apr 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+fixed problem (cmpabs doesn't work for x=0)
+
+------------------------------------------------------------------------
+r2858 | pelissip | 2004-03-26 13:27:16 +0000 (Fri, 26 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/check.c
+ M /trunk/cmp2.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/next.c
+ M /trunk/random2.c
+ M /trunk/round_prec.c
+ M /trunk/set_d.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/trandom.c
+ M /trunk/urandomb.c
+
+Change from MP_LIMB_T_ONE to MPFR_LIMB_ONE and/or MPFR_LIMB_MASK.
+
+------------------------------------------------------------------------
+r2857 | pelissip | 2004-03-26 13:26:29 +0000 (Fri, 26 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+
+Improve comments.
+
+------------------------------------------------------------------------
+r2856 | pelissip | 2004-03-26 13:24:58 +0000 (Fri, 26 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+Fix a bug.
+
+------------------------------------------------------------------------
+r2855 | pelissip | 2004-03-26 13:24:14 +0000 (Fri, 26 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+Move detecting macros (__MPFR_GCC, __MPFR_STDC, __MPFR_GLIBC and __MPFR_GMP) from mpfr to mpfr-impl
+
+------------------------------------------------------------------------
+r2854 | zimmerma | 2004-03-22 10:54:28 +0000 (Mon, 22 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+removed blank
+
+------------------------------------------------------------------------
+r2853 | vlefevre | 2004-03-22 10:20:16 +0000 (Mon, 22 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+
+Test write access to CVS.
+
+------------------------------------------------------------------------
+r2852 | pelissip | 2004-03-18 09:57:51 +0000 (Thu, 18 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-gmp.c
+
+Fix a bug in a string.
+
+------------------------------------------------------------------------
+r2851 | pelissip | 2004-03-17 15:50:27 +0000 (Wed, 17 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation of 'j' functions.
+
+------------------------------------------------------------------------
+r2850 | pelissip | 2004-03-17 12:40:01 +0000 (Wed, 17 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix (?) definition of MPFR_PREC_MAX.
+
+------------------------------------------------------------------------
+r2849 | pelissip | 2004-03-17 09:45:26 +0000 (Wed, 17 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Change the order of the tests.
+
+------------------------------------------------------------------------
+r2848 | pelissip | 2004-03-17 08:45:08 +0000 (Wed, 17 Mar 2004) | 4 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp3.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/texp.c
+
+Rename mpfr_exp3 in mpfr_exp_3.
+Update THRESHOLD for mpfr_exp.
+Add MPFR_EXP_THRESHOLD.
+
+------------------------------------------------------------------------
+r2847 | pelissip | 2004-03-16 15:24:50 +0000 (Tue, 16 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Add new option "--with-gmp-build="
+
+------------------------------------------------------------------------
+r2846 | pelissip | 2004-03-16 15:24:26 +0000 (Tue, 16 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Update INSTALL
+
+------------------------------------------------------------------------
+r2845 | pelissip | 2004-03-16 13:44:38 +0000 (Tue, 16 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix a bug (Forget to cast to mp_exp_t).
+
+------------------------------------------------------------------------
+r2844 | pelissip | 2004-03-16 10:45:49 +0000 (Tue, 16 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/swap.c
+
+Update comment
+
+------------------------------------------------------------------------
+r2843 | pelissip | 2004-03-16 10:43:24 +0000 (Tue, 16 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_z.c
+ M /trunk/mpfr.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tget_z.c
+
+Add mpz_set_fr function and its test.
+
+------------------------------------------------------------------------
+r2842 | pelissip | 2004-03-15 14:09:49 +0000 (Mon, 15 Mar 2004) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ A /trunk/set_sj.c
+ A /trunk/set_uj.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tset_sj.c
+
+Add new functions:
+ mpfr_set_sj_2exp, mpfr_set_sj
+ mpfr_set_uj_2exp, mpfr_set_uj
+
+------------------------------------------------------------------------
+r2841 | pelissip | 2004-03-15 14:08:54 +0000 (Mon, 15 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/sub1sp.c
+
+Fix a compiler bug (limb !=0 instead of limb).
+
+------------------------------------------------------------------------
+r2840 | pelissip | 2004-03-15 13:26:42 +0000 (Mon, 15 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+
+Fix a cast problem on some systems (sizeof(mp_limb_t) > sizeof(unsigned long)).
+
+------------------------------------------------------------------------
+r2839 | pelissip | 2004-03-12 17:45:07 +0000 (Fri, 12 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd1sp.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tsub1sp.c
+
+Remove use of abort (They can create core dump on some systems).
+
+------------------------------------------------------------------------
+r2838 | pelissip | 2004-03-12 13:17:53 +0000 (Fri, 12 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/tests/tacos.c
+
+Fix bug of inexact flag for acos(0).
+
+------------------------------------------------------------------------
+r2837 | pelissip | 2004-03-12 12:51:09 +0000 (Fri, 12 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/tests/memory.c
+
+Update.
+
+------------------------------------------------------------------------
+r2836 | pelissip | 2004-03-11 12:39:08 +0000 (Thu, 11 Mar 2004) | 3 lines
+Changed paths:
+ M /trunk/si_op.c
+ M /trunk/tests/tsi_op.c
+
+Fix bug about forgotten MPFR_INVERT_RND.
+Add test too.
+
+------------------------------------------------------------------------
+r2835 | pelissip | 2004-03-11 12:38:33 +0000 (Thu, 11 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add doc about HAVE_STDINT_H
+
+------------------------------------------------------------------------
+r2834 | pelissip | 2004-03-10 16:16:28 +0000 (Wed, 10 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix doc about MPFR_DECL_INIT.
+
+------------------------------------------------------------------------
+r2833 | pelissip | 2004-03-10 15:31:42 +0000 (Wed, 10 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix the declaration of 'MPFR_DECL_INIT'
+
+------------------------------------------------------------------------
+r2832 | pelissip | 2004-03-10 14:58:16 +0000 (Wed, 10 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Add 'MPFR_DECL_INIT' macro.
+
+------------------------------------------------------------------------
+r2831 | pelissip | 2004-03-10 10:16:51 +0000 (Wed, 10 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/rint.c
+
+Rename NEAREST_AWAY in GMP_RNDNA.
+
+------------------------------------------------------------------------
+r2830 | pelissip | 2004-03-10 09:35:45 +0000 (Wed, 10 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add the description of mpfr_set_ui_2exp and mpfr_set_si_2exp.
+
+------------------------------------------------------------------------
+r2829 | pelissip | 2004-03-09 17:31:29 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ A /trunk/set_si_2exp.c
+ A /trunk/set_ui_2exp.c
+ M /trunk/tests/tset_si.c
+
+Add mpfr_set_si_2exp and mpfr_set_ui_2exp and their tests.
+
+------------------------------------------------------------------------
+r2828 | pelissip | 2004-03-09 15:20:01 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add doc about mpfr_cmp_f function
+
+------------------------------------------------------------------------
+r2827 | pelissip | 2004-03-09 15:18:17 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/mpfr.h
+ M /trunk/set_f.c
+ M /trunk/tests/tgmpop.c
+
+Add mpfr_cmp_f and its test.
+
+------------------------------------------------------------------------
+r2826 | pelissip | 2004-03-09 14:11:27 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/cmp_ld.c
+ M /trunk/mpfr.h
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tcmp_d.c
+ A /trunk/tests/tcmp_ld.c
+
+Add mpfr_cmp_ld and its test
+
+------------------------------------------------------------------------
+r2825 | pelissip | 2004-03-09 13:58:39 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add doc of 2 macros.
+
+------------------------------------------------------------------------
+r2824 | pelissip | 2004-03-09 13:51:50 +0000 (Tue, 09 Mar 2004) | 3 lines
+Changed paths:
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/mpfr.h
+
+Add mpfr_cmp_ui and mpfr_cmp_si as real functions
+(The macros are still defined and used).
+
+------------------------------------------------------------------------
+r2823 | pelissip | 2004-03-09 13:43:31 +0000 (Tue, 09 Mar 2004) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/si_op.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tsi_op.c
+
+Add mpfr_add_si, mpfr_sub_si, mpfr_si_sub, mpfr_mul_si, mpfr_div_si and
+mpfr_si_div.
+Add the corresponding test.
+
+------------------------------------------------------------------------
+r2822 | pelissip | 2004-03-09 11:02:34 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tgmpop.c
+
+Add `mpfr_cmp_q` and `mpfr_cmp_z`.
+
+------------------------------------------------------------------------
+r2821 | pelissip | 2004-03-09 10:06:01 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Clean up configure
+
+------------------------------------------------------------------------
+r2820 | pelissip | 2004-03-09 09:51:08 +0000 (Tue, 09 Mar 2004) | 2 lines
+Changed paths:
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+
+Add ASSERT for NAN.
+
+------------------------------------------------------------------------
+r2819 | pelissip | 2004-02-27 12:41:37 +0000 (Fri, 27 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add documentation for MPFR_VERSION
+
+------------------------------------------------------------------------
+r2818 | pelissip | 2004-02-26 11:20:49 +0000 (Thu, 26 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Optimize a few mpfr_mul.
+
+------------------------------------------------------------------------
+r2817 | pelissip | 2004-02-26 10:05:12 +0000 (Thu, 26 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+Add Laurent Fousse in the AUTHORS file.
+
+------------------------------------------------------------------------
+r2816 | vlefevre | 2004-02-26 09:56:02 +0000 (Thu, 26 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Fixed a bug in check2b and added a test; add1.c coverage is now
+complete.
+
+------------------------------------------------------------------------
+r2815 | vlefevre | 2004-02-25 16:30:33 +0000 (Wed, 25 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Improved coverage.
+
+------------------------------------------------------------------------
+r2814 | vlefevre | 2004-02-25 16:00:58 +0000 (Wed, 25 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Improved coverage.
+
+------------------------------------------------------------------------
+r2813 | vlefevre | 2004-02-25 15:44:56 +0000 (Wed, 25 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Bugs fixed in a test function -> improved coverage.
+
+------------------------------------------------------------------------
+r2812 | pelissip | 2004-02-25 15:02:22 +0000 (Wed, 25 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/round_raw_generic.c
+
+Optimize mpfr_round_raw_?
+
+------------------------------------------------------------------------
+r2811 | pelissip | 2004-02-25 10:57:16 +0000 (Wed, 25 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add1sp.c
+ M /trunk/sgn.c
+ M /trunk/sub1sp.c
+
+Simplify the code.
+
+------------------------------------------------------------------------
+r2808 | vlefevre | 2004-02-24 14:51:42 +0000 (Tue, 24 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+Avoid integer overflow.
+
+------------------------------------------------------------------------
+r2807 | vlefevre | 2004-02-24 14:44:38 +0000 (Tue, 24 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Ported code clean-up to trunk.
+
+------------------------------------------------------------------------
+r2802 | pelissip | 2004-02-24 13:23:35 +0000 (Tue, 24 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/div.c
+ M /trunk/eq.c
+ M /trunk/frac.c
+ M /trunk/log10.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set_d.c
+ M /trunk/set_str.c
+ M /trunk/sin.c
+ M /trunk/sqrt.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sum.c
+ M /trunk/tests/tests.c
+
+Remove some warnings.
+MPFR can be compiled (but not checked!) with a C++ compiler.
+
+------------------------------------------------------------------------
+r2797 | pelissip | 2004-02-24 09:12:03 +0000 (Tue, 24 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tzeta.c
+
+Improve test coverage.
+
+------------------------------------------------------------------------
+r2796 | zimmerma | 2004-02-24 08:14:39 +0000 (Tue, 24 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+further simplification of the code (replaced one in-place shift and copy
+by out-of-place shift or copy)
+
+------------------------------------------------------------------------
+r2795 | zimmerma | 2004-02-23 16:47:46 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tui_div.c
+
+use GMP_RND_MAX instead of hard-coded constant
+
+------------------------------------------------------------------------
+r2794 | zimmerma | 2004-02-23 16:23:59 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/tests/tdiv.c
+
+simplified the code of div.c and improved coverage
+
+------------------------------------------------------------------------
+r2792 | pelissip | 2004-02-23 14:20:32 +0000 (Mon, 23 Feb 2004) | 3 lines
+Changed paths:
+ D /trunk/longlong.h
+ M /trunk/mpfr-impl.h
+ A /trunk/mpfr-longlong.h
+
+Rename 'longlong.h' in 'mpfr-longlong.h' so that when MPFR is built
+within GMP it uses GMP's 'longlong.h' rather than MPFR's copy.
+
+------------------------------------------------------------------------
+r2791 | vlefevre | 2004-02-23 14:19:02 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2789 | pelissip | 2004-02-23 14:09:10 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ A /trunk/free_cache.c
+
+Add mpfr_free_cache (2).
+
+------------------------------------------------------------------------
+r2788 | pelissip | 2004-02-23 14:08:44 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tests.c
+
+Add mpfr_free_cache.
+
+------------------------------------------------------------------------
+r2787 | pelissip | 2004-02-23 13:51:41 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_str.c
+
+Add mpfr_free_str function.
+
+------------------------------------------------------------------------
+r2786 | pelissip | 2004-02-23 12:14:40 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Remove a warning.
+
+------------------------------------------------------------------------
+r2785 | pelissip | 2004-02-23 12:14:29 +0000 (Mon, 23 Feb 2004) | 4 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Reorder the declarations of the functions.
+Remove duplicate declarations.
+Remove mpfr_factorial.
+
+------------------------------------------------------------------------
+r2784 | zimmerma | 2004-02-23 10:01:42 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+patch from Guillaume Hanrot
+
+------------------------------------------------------------------------
+r2783 | pelissip | 2004-02-23 09:43:29 +0000 (Mon, 23 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/set_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+
+Improve coverage tests.
+Fix 2 underflow bugs.
+
+------------------------------------------------------------------------
+r2782 | pelissip | 2004-02-23 09:42:29 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Update comment
+
+------------------------------------------------------------------------
+r2781 | pelissip | 2004-02-23 09:42:04 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Improve comments.
+
+------------------------------------------------------------------------
+r2780 | pelissip | 2004-02-23 09:41:28 +0000 (Mon, 23 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Add a comment.
+
+------------------------------------------------------------------------
+r2779 | vlefevre | 2004-02-22 01:48:32 +0000 (Sun, 22 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Added tests.
+
+------------------------------------------------------------------------
+r2775 | fousse | 2004-02-20 13:15:44 +0000 (Fri, 20 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/sum.c
+ M /trunk/tests/tsum.c
+
+Changed mpfr_sum to use unsigned long instead of unsigned int. More tests.
+
+------------------------------------------------------------------------
+r2774 | pelissip | 2004-02-20 12:58:30 +0000 (Fri, 20 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/neg.c
+ M /trunk/tests/tset.c
+
+mpfr_neg (b, b, r) for b=NAN didn't set NAN flag.
+
+------------------------------------------------------------------------
+r2773 | pelissip | 2004-02-20 10:49:34 +0000 (Fri, 20 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr_sgn is no longer a macro.
+
+------------------------------------------------------------------------
+r2770 | pelissip | 2004-02-19 12:33:47 +0000 (Thu, 19 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+Fix bug with exact rationnal arguments (0.5+3/2 freezes).
+
+------------------------------------------------------------------------
+r2767 | vlefevre | 2004-02-18 12:47:00 +0000 (Wed, 18 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/config.guess
+ M /trunk/config.sub
+
+Update from the autotools-dev Debian package (2004-01-05).
+
+------------------------------------------------------------------------
+r2761 | vlefevre | 2004-02-18 10:41:00 +0000 (Wed, 18 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+ M /trunk/tests/tset_f.c
+
+Fixed a bug in mpfr_set_f for 0 (wrong sign) and added the test.
+
+------------------------------------------------------------------------
+r2760 | pelissip | 2004-02-18 10:29:40 +0000 (Wed, 18 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Fix bug if you build MPFR with ASSERT.
+
+------------------------------------------------------------------------
+r2759 | pelissip | 2004-02-17 14:39:16 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Reduce the number of used variables.
+
+------------------------------------------------------------------------
+r2758 | zimmerma | 2004-02-17 14:29:28 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/round_raw_generic.c
+
+improved again documentation
+
+------------------------------------------------------------------------
+r2757 | zimmerma | 2004-02-17 14:27:06 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+simplified rounding
+
+------------------------------------------------------------------------
+r2756 | zimmerma | 2004-02-17 14:17:31 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/round_raw_generic.c
+
+improved documentation of *inexp
+
+------------------------------------------------------------------------
+r2752 | pelissip | 2004-02-17 12:12:21 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub1sp.c
+
+Simplify the random code.
+
+------------------------------------------------------------------------
+r2751 | pelissip | 2004-02-17 12:12:02 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Optimize it a few.
+
+------------------------------------------------------------------------
+r2750 | pelissip | 2004-02-17 12:11:49 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/round_raw_generic.c
+
+Add 2004 in copyright line.
+
+------------------------------------------------------------------------
+r2749 | pelissip | 2004-02-17 12:11:26 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add a section which describes the needed macros for building MPFR.
+
+------------------------------------------------------------------------
+r2747 | zimmerma | 2004-02-17 11:21:04 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+added comment about probability of normalized product
+
+------------------------------------------------------------------------
+r2744 | vlefevre | 2004-02-17 10:36:11 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added a note about the ternary value, important in practice.
+
+------------------------------------------------------------------------
+r2743 | zimmerma | 2004-02-17 10:02:29 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+ M /trunk/tests/tset_f.c
+
+fixed 2 bugs and added test
+
+------------------------------------------------------------------------
+r2742 | zimmerma | 2004-02-17 10:01:18 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/round_raw_generic.c
+
+added comment about return value
+
+------------------------------------------------------------------------
+r2741 | pelissip | 2004-02-17 08:57:19 +0000 (Tue, 17 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Try so support GMP as a Shared Library.
+
+------------------------------------------------------------------------
+r2740 | zimmerma | 2004-02-16 18:23:49 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+improved error message
+
+------------------------------------------------------------------------
+r2739 | pelissip | 2004-02-16 18:02:42 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+
+Fix the computing of the error for mpq_add and mpq_sub.
+
+------------------------------------------------------------------------
+r2738 | vlefevre | 2004-02-16 17:57:38 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Added more tests (improved tadd1.c coverage).
+
+------------------------------------------------------------------------
+r2737 | zimmerma | 2004-02-16 17:47:59 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+added cancellation test for add_q
+
+------------------------------------------------------------------------
+r2736 | vlefevre | 2004-02-16 17:37:59 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Added tests (improved tadd1.c coverage).
+
+------------------------------------------------------------------------
+r2735 | pelissip | 2004-02-16 17:35:26 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/tests/tgmpop.c
+
+Fix bug of add_q and sub_q with special values (NAN, INF and ZERO).
+
+------------------------------------------------------------------------
+r2734 | zimmerma | 2004-02-16 17:12:45 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/set_d.c
+ M /trunk/set_q.c
+
+deal with overflow/underflow in mpfr_div
+
+------------------------------------------------------------------------
+r2733 | zimmerma | 2004-02-16 17:04:34 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tgmpop.c
+
+added hard-coded tests
+
+------------------------------------------------------------------------
+r2732 | vlefevre | 2004-02-16 16:50:31 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+When the precisions are the same, test both mpfr_add1sp and mpfr_add1.
+
+------------------------------------------------------------------------
+r2731 | vlefevre | 2004-02-16 16:34:39 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Added overflow check.
+
+------------------------------------------------------------------------
+r2730 | pelissip | 2004-02-16 16:17:38 +0000 (Mon, 16 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/add1sp.c
+ M /trunk/div.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/tsub1sp.c
+
+Optimize add1sp, sub1sp and div.
+Improve coverage test for sub1sp.
+
+------------------------------------------------------------------------
+r2729 | vlefevre | 2004-02-16 16:06:11 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+Removed unused label.
+
+------------------------------------------------------------------------
+r2727 | vlefevre | 2004-02-16 15:05:18 +0000 (Mon, 16 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+Really reverted to rev. 1.54 + kept optimization + commented out
+is_odd_even.
+
+------------------------------------------------------------------------
+r2725 | zimmerma | 2004-02-16 14:30:43 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+ M /trunk/set_ld.c
+
+take into account possible out-of-range exponent
+
+------------------------------------------------------------------------
+r2724 | zimmerma | 2004-02-16 14:24:48 +0000 (Mon, 16 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+revert to rev 1.54 code for case x infinite
+(was less efficient but simpler)
+
+------------------------------------------------------------------------
+r2723 | zimmerma | 2004-02-16 13:56:42 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+fixed bug with in-place computation
+
+------------------------------------------------------------------------
+r2722 | vlefevre | 2004-02-16 13:55:27 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tsqrt.c
+
+Code clean-up and fix to avoid warnings.
+
+------------------------------------------------------------------------
+r2721 | zimmerma | 2004-02-16 13:35:20 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+changed back to C99 standard for special values of x^y
+
+------------------------------------------------------------------------
+r2720 | zimmerma | 2004-02-16 11:33:24 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/trint.c
+
+added test for *function* mpfr_round
+
+------------------------------------------------------------------------
+r2719 | zimmerma | 2004-02-16 11:06:06 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tinp_str.c
+ M /trunk/tests/tout_str.c
+
+check return value of fopen
+
+------------------------------------------------------------------------
+r2718 | vlefevre | 2004-02-16 11:01:38 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Removed the no longer used label "fin" and fixed the indentation.
+
+------------------------------------------------------------------------
+r2717 | vlefevre | 2004-02-16 10:55:36 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Fix: MPFR_NOT_ZERO -> MPFR_NOTZERO.
+
+------------------------------------------------------------------------
+r2716 | vlefevre | 2004-02-16 10:52:40 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+Commented out the now useless "double uo, vo;".
+
+------------------------------------------------------------------------
+r2715 | zimmerma | 2004-02-16 10:41:02 +0000 (Mon, 16 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+improved coverage tests
+
+------------------------------------------------------------------------
+r2714 | zimmerma | 2004-02-14 23:05:51 +0000 (Sat, 14 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/mpfr.texi
+ M /trunk/set_d.c
+ M /trunk/set_q.c
+ M /trunk/set_str_raw.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tset_d.c
+ A /trunk/tests/tset_exp.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+
+new coverage tests
+
+------------------------------------------------------------------------
+r2713 | zimmerma | 2004-02-14 11:11:31 +0000 (Sat, 14 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+ M /trunk/inp_str.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/mpfr.texi
+ M /trunk/mpn_exp.c
+ M /trunk/mul_ui.c
+ M /trunk/next.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/inp_str.data
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/thypot.c
+ A /trunk/tests/tinp_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+
+improved coverage test
+
+------------------------------------------------------------------------
+r2712 | zimmerma | 2004-02-13 17:39:02 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tset_si.c
+
+improved coverage test
+
+------------------------------------------------------------------------
+r2711 | zimmerma | 2004-02-13 17:17:52 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/tests/tget_str.c
+
+improved test coverage
+
+------------------------------------------------------------------------
+r2710 | zimmerma | 2004-02-13 16:00:10 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+improved test coverage
+
+------------------------------------------------------------------------
+r2709 | zimmerma | 2004-02-13 15:35:19 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+ M /trunk/tests/texp.c
+
+improved test coverage
+
+------------------------------------------------------------------------
+r2708 | pelissip | 2004-02-13 15:05:42 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd1sp.c
+
+Fix a bug in taddsp (Forget to check if random does not generate zero).
+
+------------------------------------------------------------------------
+r2707 | zimmerma | 2004-02-13 13:57:24 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/teq.c
+
+improved editing style
+
+------------------------------------------------------------------------
+r2706 | zimmerma | 2004-02-13 13:44:41 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/div_ui.c
+ M /trunk/tests/tdiv_ui.c
+
+improved test coverage
+
+------------------------------------------------------------------------
+r2705 | zimmerma | 2004-02-13 13:43:27 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/eq.c
+ M /trunk/tests/teq.c
+
+partly rewritten, and improved test coverage
+
+------------------------------------------------------------------------
+r2704 | vlefevre | 2004-02-13 13:33:10 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+Added tests for mpfr_mul_2si and mpfr_div_2si + corrections.
+
+------------------------------------------------------------------------
+r2703 | vlefevre | 2004-02-13 12:31:49 +0000 (Fri, 13 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+Replaced mpfr_mul_2exp and mpfr_div_2exp by mpfr_mul_2ui and
+mpfr_div_2ui as the 2exp form is obsolete.
+
+------------------------------------------------------------------------
+r2702 | zimmerma | 2004-02-13 12:25:14 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tfactorial.c
+
+removed warnings
+
+------------------------------------------------------------------------
+r2701 | pelissip | 2004-02-13 11:30:05 +0000 (Fri, 13 Feb 2004) | 5 lines
+Changed paths:
+ M /trunk/check.c
+ M /trunk/cmp_abs.c
+ M /trunk/set.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tcmpabs.c
+ M /trunk/tests/texceptions.c
+ A /trunk/tests/tfits.c
+ A /trunk/tests/toutimpl.c
+
+Add test for mpfr_cmpabs
+Add test for mpfr_fits_
+Add test for internal dumping functions.
+Improve coverage test for exceptions / set / check.
+
+------------------------------------------------------------------------
+r2700 | zimmerma | 2004-02-13 10:52:11 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+ M /trunk/tests/tconst_pi.c
+
+improved coverage
+
+------------------------------------------------------------------------
+r2699 | zimmerma | 2004-02-13 10:31:42 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+removed Kevin, added missing accent
+
+------------------------------------------------------------------------
+r2698 | zimmerma | 2004-02-13 09:33:55 +0000 (Fri, 13 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/uceil_exp2.c
+
+improved coverage test
+
+------------------------------------------------------------------------
+r2697 | pelissip | 2004-02-12 18:02:28 +0000 (Thu, 12 Feb 2004) | 4 lines
+Changed paths:
+ M /trunk/dump.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr.h
+
+Rewrite (simplify) mpfr_dump.
+Change its proto.
+Fix mpf_dump macro in mpf2mpfr.
+
+------------------------------------------------------------------------
+r2696 | pelissip | 2004-02-12 17:58:40 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/div.c
+ M /trunk/mul.c
+ M /trunk/sub.c
+
+Remove MPFR_ASSERTN(0) and add MPFR_ASSERTD(last condition) instead.
+
+------------------------------------------------------------------------
+r2695 | zimmerma | 2004-02-12 16:54:28 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+improved coverage
+
+------------------------------------------------------------------------
+r2694 | zimmerma | 2004-02-12 16:38:06 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+
+improved coverage
+
+------------------------------------------------------------------------
+r2693 | zimmerma | 2004-02-12 16:25:29 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+improved cov. test
+
+------------------------------------------------------------------------
+r2692 | zimmerma | 2004-02-12 16:08:00 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+improved cov. test
+
+------------------------------------------------------------------------
+r2691 | zimmerma | 2004-02-12 16:01:26 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+ M /trunk/tests/tfma.c
+
+improved coverage test
+
+------------------------------------------------------------------------
+r2690 | zimmerma | 2004-02-12 15:05:14 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+ M /trunk/tests/tfactorial.c
+
+improved coverage test
+
+------------------------------------------------------------------------
+r2689 | zimmerma | 2004-02-12 14:30:20 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+ M /trunk/tests/texpm1.c
+
+improved test coverage
+
+------------------------------------------------------------------------
+r2688 | pelissip | 2004-02-12 14:20:43 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+
+Improve coverage of const_pi and const_log2 (Test for prec > 20000).
+
+------------------------------------------------------------------------
+r2687 | zimmerma | 2004-02-12 14:08:06 +0000 (Thu, 12 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/tests/texp.c
+
+fixed tiny bugs for corner cases
+improved test coverage
+
+------------------------------------------------------------------------
+r2686 | pelissip | 2004-02-12 13:49:44 +0000 (Thu, 12 Feb 2004) | 6 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/add.c
+ A /trunk/add1sp.c
+ M /trunk/copysign.c
+ M /trunk/div_2ui.c
+ M /trunk/mpfr-impl.h
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tadd1sp.c
+ A /trunk/tests/tcopysign.c
+ M /trunk/tests/tdim.c
+ M /trunk/tests/texp.c
+ A /trunk/tests/tminmax.c
+ M /trunk/tests/tmul_2exp.c
+
++ Add mpfr_add1sp which provides addition when all the operands have the same precision.
++ Add new test files for mpfr_copysign and mpfr_min and mpfr_max.
++ Add test for mpfr_exp10 in tests/texp.c
++ Improve coverage of div_2ui.c and mul_2ui.c
++ Add a forgotten ASSERT in mpfr_sqrt
+
+------------------------------------------------------------------------
+r2685 | zimmerma | 2004-02-12 13:20:50 +0000 (Thu, 12 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+improved test coverage
+replaced mpfr_get_d1 by mpfr_get_si
+
+------------------------------------------------------------------------
+r2684 | zimmerma | 2004-02-12 12:54:48 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/erf.c
+ M /trunk/tests/terf.c
+
+improved coverage test
+
+------------------------------------------------------------------------
+r2683 | zimmerma | 2004-02-12 12:38:17 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added new coverage test
+
+------------------------------------------------------------------------
+r2682 | pelissip | 2004-02-12 11:42:34 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Fix some mistakes.
+
+------------------------------------------------------------------------
+r2681 | pelissip | 2004-02-12 11:38:49 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Add a description of the gcov tool.
+
+------------------------------------------------------------------------
+r2680 | zimmerma | 2004-02-12 11:35:50 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+now 100% of coverage of sub1.c
+
+------------------------------------------------------------------------
+r2679 | zimmerma | 2004-02-12 11:06:02 +0000 (Thu, 12 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/dim.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tdim.c
+
+new test file for mpfr_dim
+
+------------------------------------------------------------------------
+r2672 | pelissip | 2004-02-06 15:57:28 +0000 (Fri, 06 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Replace AS_HELP_STRING to AC_HELP_STRING (obsolete)
+
+------------------------------------------------------------------------
+r2671 | pelissip | 2004-02-06 15:37:40 +0000 (Fri, 06 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/add1.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asinh.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/dump.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/fma.c
+ M /trunk/get_exp.c
+ M /trunk/get_z_exp.c
+ M /trunk/init.c
+ M /trunk/inits.c
+ M /trunk/inp_str.c
+ M /trunk/isinf.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/log1p.c
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/powerof2.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_inf.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/volatile.c
+
+Add forgotten copyright 2004 line.
+Add a small documentation about mpfr_sum.
+
+------------------------------------------------------------------------
+r2668 | pelissip | 2004-02-06 13:59:56 +0000 (Fri, 06 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ A /trunk/sum.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tsum.c
+
+Added mpfr_sum function.
+
+------------------------------------------------------------------------
+r2665 | pelissip | 2004-02-06 13:27:05 +0000 (Fri, 06 Feb 2004) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/acinclude.m4
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/clear.c
+ M /trunk/clears.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_d.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/comparisons.c
+ M /trunk/configure.in
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp10.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fits_s.h
+ M /trunk/fits_u.h
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/gamma.c
+ M /trunk/get_d.c
+ M /trunk/get_exp.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_z_exp.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+ M /trunk/inp_str.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ A /trunk/longlong.h
+ M /trunk/minmax.c
+ A /trunk/mp_clz_tab.c
+ A /trunk/mpfr-gmp.c
+ A /trunk/mpfr-gmp.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpn_exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/next.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/powerof2.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sgn.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub1sp.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/uceil_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/version.c
+ M /trunk/volatile.c
+
++ Better support of non IEEE doubles.
++ You can compile MPFR without gmp internal files (ie gmp-impl.h, gmp-mparam.h, and config.h). You only need gmp.h and libgmp.a. But you can still compile with GMP internal files (configure detects them).
+
+------------------------------------------------------------------------
+r2664 | vlefevre | 2004-02-06 13:06:36 +0000 (Fri, 06 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2660 | vlefevre | 2004-02-06 10:54:26 +0000 (Fri, 06 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Updated MPFR URL.
+
+------------------------------------------------------------------------
+r2659 | vlefevre | 2004-02-06 10:49:54 +0000 (Fri, 06 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+Added the changes from version 2.0.1 to version 2.0.2.
+
+------------------------------------------------------------------------
+r2657 | vlefevre | 2004-02-06 10:14:00 +0000 (Fri, 06 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Added: "3) Update the NEWS file.".
+
+------------------------------------------------------------------------
+r2655 | zimmerma | 2004-02-03 10:06:53 +0000 (Tue, 03 Feb 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_str.c
+
+fixed bug in get_str (case pow2, rnd=up or down)
+
+------------------------------------------------------------------------
+r2654 | zimmerma | 2004-01-30 16:27:35 +0000 (Fri, 30 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+fixed problem (s1 = s-1 inexact)
+
+------------------------------------------------------------------------
+r2653 | zimmerma | 2004-01-30 15:06:42 +0000 (Fri, 30 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+ M /trunk/gamma.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tgamma.c
+
+fixed problem in gamma/factorial
+
+------------------------------------------------------------------------
+r2652 | zimmerma | 2004-01-30 12:51:58 +0000 (Fri, 30 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/hypot.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/thypot.c
+
+added new tests for agm and hypot (+ fixed bugs)
+
+------------------------------------------------------------------------
+r2651 | pelissip | 2004-01-29 16:12:42 +0000 (Thu, 29 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Add GMP_RND_MAX so that a for loop of the rounding modes looks like:
+ for(int r = 0 ; r < GMP_RND_MAX ; r++)
+
+------------------------------------------------------------------------
+r2650 | pelissip | 2004-01-28 14:22:05 +0000 (Wed, 28 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_d.c
+ M /trunk/set_ld.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/uceil_exp2.c
+ M /trunk/ufloor_log2.c
+
+Better supports of non IEEE-754 floats (don't use anymore ieee_double_extract if _GMP_IEEE is not set).
+
+------------------------------------------------------------------------
+r2649 | vlefevre | 2004-01-28 11:32:57 +0000 (Wed, 28 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/frac.c
+
+Added comments and a temporary fix.
+
+------------------------------------------------------------------------
+r2648 | zimmerma | 2004-01-27 08:00:00 +0000 (Tue, 27 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/cbrt.c
+ M /trunk/erf.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tzeta.c
+
+fixed bugs in atan cbrt erf
+added new hard-coded tests
+
+------------------------------------------------------------------------
+r2647 | zimmerma | 2004-01-26 13:14:55 +0000 (Mon, 26 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+removed argument reduction in sin(Pi*s/2) [delegated to mpfr_sin]
+
+------------------------------------------------------------------------
+r2646 | zimmerma | 2004-01-26 13:11:54 +0000 (Mon, 26 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+print inputs of test2 in binary form
+commented out test for 0.8 (input is not exactly representable)
+
+------------------------------------------------------------------------
+r2645 | pelissip | 2004-01-26 11:45:21 +0000 (Mon, 26 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
++ Internal functions of zeta are now declared as static.
++ Add new tests which fail.
+
+------------------------------------------------------------------------
+r2644 | zimmerma | 2004-01-22 22:30:52 +0000 (Thu, 22 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/algorithms.tex
+ M /trunk/asin.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/erf.c
+ M /trunk/exp_2.c
+ M /trunk/frac.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/trint.c
+
+added several hard-coded tests (and fixed bugs found)
+
+------------------------------------------------------------------------
+r2643 | pelissip | 2004-01-20 13:08:53 +0000 (Tue, 20 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fix tiny bug of Concept Index / Rounding Modes.
+
+------------------------------------------------------------------------
+r2642 | pelissip | 2004-01-20 13:04:30 +0000 (Tue, 20 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update minor things.
+
+------------------------------------------------------------------------
+r2641 | zimmerma | 2004-01-20 11:07:48 +0000 (Tue, 20 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+minor change in contributions
+
+------------------------------------------------------------------------
+r2640 | zimmerma | 2004-01-20 10:56:59 +0000 (Tue, 20 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added Patrick in the main contributors
+
+------------------------------------------------------------------------
+r2639 | vlefevre | 2004-01-20 10:08:27 +0000 (Tue, 20 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Fixed spelling mistake.
+
+------------------------------------------------------------------------
+r2638 | pelissip | 2004-01-20 09:15:19 +0000 (Tue, 20 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Reorder the documentation.
+
+------------------------------------------------------------------------
+r2637 | ryde | 2004-01-19 23:51:46 +0000 (Mon, 19 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+# Add a remark to mpf_strto.
+
+------------------------------------------------------------------------
+r2636 | ryde | 2004-01-19 23:31:56 +0000 (Mon, 19 Jan 2004) | 4 lines
+Changed paths:
+ M /trunk/TODO
+
+# Drop my thought about addmul instead of fma. The latter takes a
+# separate destination and is hence not the same as what mpn and mpz
+# addmul do.
+
+------------------------------------------------------------------------
+r2635 | pelissip | 2004-01-19 16:06:34 +0000 (Mon, 19 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tset_d.c
+
+Update tests to remove the use of double when possible.
+
+------------------------------------------------------------------------
+r2634 | pelissip | 2004-01-19 16:05:24 +0000 (Mon, 19 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Reenable the cmp between inexact flags.
+
+------------------------------------------------------------------------
+r2633 | pelissip | 2004-01-19 16:03:30 +0000 (Mon, 19 Jan 2004) | 4 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/set_rnd.c
+ M /trunk/tests/texceptions.c
+
+Add mpfr_get_default_rounding_mode.
+Add the tests for mpfr_get/set_default_rounding_mode.
+Fix mpfr_set_default_rounding_mode.
+
+------------------------------------------------------------------------
+r2632 | vlefevre | 2004-01-19 03:01:10 +0000 (Mon, 19 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+_mpfr_ceil -> mpfr_ceil_double + check for overflow.
+
+------------------------------------------------------------------------
+r2631 | vlefevre | 2004-01-19 02:39:21 +0000 (Mon, 19 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/get_str.c
+ A /trunk/mpn_exp.c
+
+Moved the mpfr_mpn_exp function to a new file "mpn_exp.c" as it is
+used by both "get_str.c" and "set_str.c".
+
+------------------------------------------------------------------------
+r2630 | pelissip | 2004-01-16 15:55:15 +0000 (Fri, 16 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+Update it to remove the use of float/double.
+
+------------------------------------------------------------------------
+r2629 | pelissip | 2004-01-15 16:57:35 +0000 (Thu, 15 Jan 2004) | 2 lines
+Changed paths:
+ D /trunk/from_Torbjorn
+ M /trunk/get_str.c
+ M /trunk/tests/tget_str.c
+
+Add a new check in tget_str.c.
+
+------------------------------------------------------------------------
+r2628 | pelissip | 2004-01-15 16:56:48 +0000 (Thu, 15 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Add new macros.
+
+------------------------------------------------------------------------
+r2627 | pelissip | 2004-01-15 16:55:45 +0000 (Thu, 15 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+Readd stdio.h in case of DEBUG mode.
+
+------------------------------------------------------------------------
+r2626 | pelissip | 2004-01-15 16:55:25 +0000 (Thu, 15 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Optimize a few sub1sp by removing the normalisation in case of exact rounding and by removing the calcul of the rounding mode in case of exact rounding.
+
+------------------------------------------------------------------------
+r2625 | zimmerma | 2004-01-15 14:43:17 +0000 (Thu, 15 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed problem in case m=0 and b=2^k (lost bits from 1st digit were not taken
+into account)
+
+------------------------------------------------------------------------
+r2624 | zimmerma | 2004-01-15 12:09:25 +0000 (Thu, 15 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_str.c
+
+mpn_exp -> mpfr_mpn_exp
+
+------------------------------------------------------------------------
+r2623 | vlefevre | 2004-01-15 08:49:34 +0000 (Thu, 15 Jan 2004) | 2 lines
+Changed paths:
+ D /trunk/gammaPiAGMformula.c
+
+Removed gammaPiAGMformula.c (old version, no longer used).
+
+------------------------------------------------------------------------
+r2622 | vlefevre | 2004-01-14 17:18:34 +0000 (Wed, 14 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/cbrt.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/div_ui.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp_2.c
+ M /trunk/get_ld.c
+ M /trunk/hypot.c
+ M /trunk/init2.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log2.c
+ M /trunk/reldiff.c
+ M /trunk/save_expo.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_str.c
+ M /trunk/ui_div.c
+ M /trunk/zeta.c
+
+Changed some error messages into assertions.
+Removed some useless #include's.
+
+------------------------------------------------------------------------
+r2621 | pelissip | 2004-01-14 12:42:22 +0000 (Wed, 14 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+
+Continue to port tests so that they don't use double.
+
+------------------------------------------------------------------------
+r2620 | pelissip | 2004-01-09 16:00:54 +0000 (Fri, 09 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/cmp_str.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tgmpop.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+Update the tests to reduce the use of floats.
+
+------------------------------------------------------------------------
+r2619 | pelissip | 2004-01-09 10:15:51 +0000 (Fri, 09 Jan 2004) | 2 lines
+Changed paths:
+ D /trunk/mpfi.c
+ D /trunk/mpfi.h
+
+Remove unused files mpfi.c and mpfi.h
+
+------------------------------------------------------------------------
+r2618 | pelissip | 2004-01-09 09:51:23 +0000 (Fri, 09 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+
+Update test.
+Don't use floats anymore.
+
+------------------------------------------------------------------------
+r2617 | pelissip | 2004-01-09 09:50:45 +0000 (Fri, 09 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+Add RND_RAND
+Add SIGN_RAND
+
+------------------------------------------------------------------------
+r2616 | pelissip | 2004-01-09 08:58:24 +0000 (Fri, 09 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/isinteger.c
+
++ Simplify the signular code.
++ Fix potential type errors. (Used mpfr_prec_t instead of mpfr_uexp_t).
+
+------------------------------------------------------------------------
+r2615 | pelissip | 2004-01-08 16:51:51 +0000 (Thu, 08 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tgmpop.c
+
++ Add a new test file for checking functions mpfr_add/sub/mul/div_q/z (from gmp_op.c).
++ Fix bugs of mpfr_add/sub/mul/div_q/z.
+
+------------------------------------------------------------------------
+r2614 | vlefevre | 2004-01-07 19:58:45 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+-0 -> @minus{}0.
+
+------------------------------------------------------------------------
+r2613 | vlefevre | 2004-01-07 19:54:53 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Specifications for mpfr_min and mpfr_max.
+
+------------------------------------------------------------------------
+r2612 | vlefevre | 2004-01-07 17:21:06 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Updated MPFR_INTPREC_MAX definition, as mpfr_prec_t has changed.
+
+------------------------------------------------------------------------
+r2611 | pelissip | 2004-01-07 16:37:09 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub1sp.c
+
+Add a new test between sub1 and sub1sp.
+
+------------------------------------------------------------------------
+r2610 | pelissip | 2004-01-07 16:28:42 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/minmax.c
+
+Fix copyright line.
+
+------------------------------------------------------------------------
+r2609 | zimmerma | 2004-01-07 16:27:09 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/sub1.c
+ M /trunk/tests/tsub.c
+
+fixed wrong sign of inexact flag
+
+------------------------------------------------------------------------
+r2608 | vlefevre | 2004-01-07 16:11:04 +0000 (Wed, 07 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Added casts to size_t so that integers representing a size get
+this type as soon as possible.
+
+------------------------------------------------------------------------
+r2607 | pelissip | 2004-01-07 14:48:33 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Use MPFR_ASSERTN(0) instead of abort.
+
+------------------------------------------------------------------------
+r2606 | pelissip | 2004-01-07 14:48:10 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix the definition of MPFR_PREC_MAX
+
+------------------------------------------------------------------------
+r2605 | zimmerma | 2004-01-07 14:46:09 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added new test to check bug repair
+
+------------------------------------------------------------------------
+r2604 | zimmerma | 2004-01-07 14:45:21 +0000 (Wed, 07 Jan 2004) | 3 lines
+Changed paths:
+ M /trunk/sub1.c
+
+fixed bug (wrong inexact flag) for rounding to nearest when sh=0 and
+first trailing limbs coincide
+
+------------------------------------------------------------------------
+r2603 | pelissip | 2004-01-07 14:27:34 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/sub.c
+
+Fix copyright lines (2004).
+
+------------------------------------------------------------------------
+r2602 | pelissip | 2004-01-07 14:05:30 +0000 (Wed, 07 Jan 2004) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/add.c
+ M /trunk/sub.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tsub1sp.c
+
+Fix bug of sub1sp.c on sparck.
+Add new tests for sub1sp.
+Reenable sub1sp for mpfr_add / mpfr_sub.
+
+------------------------------------------------------------------------
+r2601 | pelissip | 2004-01-07 14:04:30 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+
+Change output format of mpfr_print_mant_binary.
+
+------------------------------------------------------------------------
+r2600 | vlefevre | 2004-01-07 13:27:29 +0000 (Wed, 07 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/cmp2.c
+
+Clarified comment.
+
+------------------------------------------------------------------------
+r2599 | vlefevre | 2004-01-06 14:17:50 +0000 (Tue, 06 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Updated copyright line.
+
+------------------------------------------------------------------------
+r2598 | vlefevre | 2004-01-06 14:06:48 +0000 (Tue, 06 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tversion.c
+ M /trunk/update-version
+ A /trunk/version.c
+
+Added mpfr_version function and test.
+
+------------------------------------------------------------------------
+r2597 | vlefevre | 2004-01-06 13:46:32 +0000 (Tue, 06 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+The mpfr_print_rnd_mode return type is const char *, not char *.
+
+------------------------------------------------------------------------
+r2596 | pelissip | 2004-01-06 13:06:37 +0000 (Tue, 06 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_z.c
+
+Update the copyright line of the source files to 2004.
+
+------------------------------------------------------------------------
+r2595 | pelissip | 2004-01-06 12:30:41 +0000 (Tue, 06 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_z.c
+
+Add the tests to check if 0 for signed class with unsigned 0 is set to 0+.
+
+------------------------------------------------------------------------
+r2594 | zimmerma | 2004-01-05 16:35:08 +0000 (Mon, 05 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+specified sign of zero in mpfr_set_*
+
+------------------------------------------------------------------------
+r2593 | zimmerma | 2004-01-05 14:32:56 +0000 (Mon, 05 Jan 2004) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+removed test using denorms
+
+------------------------------------------------------------------------
+r2592 | pelissip | 2003-12-22 17:08:57 +0000 (Mon, 22 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/add.c
+ M /trunk/sub.c
+
+Disable sub1sp in add.c and in sub.c since it provides some bugs on spark (Log/acos/asin and atan tests failed but not tsub or tsub1sp).
+
+------------------------------------------------------------------------
+r2591 | pelissip | 2003-12-22 17:08:01 +0000 (Mon, 22 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Change comment.
+
+------------------------------------------------------------------------
+r2590 | pelissip | 2003-12-22 14:13:24 +0000 (Mon, 22 Dec 2003) | 3 lines
+Changed paths:
+ M /trunk/init2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
++ Rearrange the code to be more "compatible" with broken systems.
++ Preprocessing checks are done in init2.c since GMP constants can't be used in preprocessing #if.
+
+------------------------------------------------------------------------
+r2589 | pelissip | 2003-12-22 13:56:15 +0000 (Mon, 22 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/sub1sp.c
+
+Use MPFR_UNSIGNED_MINUS_MODULO when needed.
+
+------------------------------------------------------------------------
+r2588 | pelissip | 2003-12-22 10:57:56 +0000 (Mon, 22 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/clears.c
+ M /trunk/inits.c
+ M /trunk/inits2.c
+
+Explicit support for K&R C since ansi2knr can't be used.
+
+------------------------------------------------------------------------
+r2587 | ryde | 2003-12-20 00:02:38 +0000 (Sat, 20 Dec 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+(tests_rand_start): Use gmp_randinit_default not the
+RANDS macro, to cope with new non-seeding MT setup by RANDS.
+
+------------------------------------------------------------------------
+r2586 | pelissip | 2003-12-19 16:29:48 +0000 (Fri, 19 Dec 2003) | 3 lines
+Changed paths:
+ M /trunk/get_ui.c
+ M /trunk/init2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+Support of MPFR_PREC_FORMAT.
+Fix a bug in case mp_prec_t = unsigned short.
+
+------------------------------------------------------------------------
+r2585 | vlefevre | 2003-12-19 14:19:53 +0000 (Fri, 19 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/update-version
+
+Update due to a change in mpfr.h.
+
+------------------------------------------------------------------------
+r2584 | pelissip | 2003-12-19 11:56:42 +0000 (Fri, 19 Dec 2003) | 4 lines
+Changed paths:
+ M /trunk/VERSION
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
++ Modify Version to 2.1.0.
++ Add MPFR_VERSION_MAJOR, MPFR_VERSION_MINOR and MPFR_VERSION_PATCHLEVEL in mpfr.h
++ Add MPFR_VERSION_NUM and MPFR_VERSION to check Mpfr version.
+
+------------------------------------------------------------------------
+r2583 | pelissip | 2003-12-19 11:54:48 +0000 (Fri, 19 Dec 2003) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/sub1sp.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+
+Remove one warning in mpf_compat.h
+Create a new macro: MPFR_RET_NEVER_GO_HERE
+Modify ui_sub/div to use it to make Insure++ happy.
+
+------------------------------------------------------------------------
+r2582 | zimmerma | 2003-12-19 11:44:42 +0000 (Fri, 19 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated mpfr_root entry
+
+------------------------------------------------------------------------
+r2581 | vlefevre | 2003-12-19 11:41:10 +0000 (Fri, 19 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ A /trunk/update-version
+
+Added update-version script to update the MPFR version.
+
+------------------------------------------------------------------------
+r2580 | zimmerma | 2003-12-19 10:06:10 +0000 (Fri, 19 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed one item, added one
+
+------------------------------------------------------------------------
+r2579 | zimmerma | 2003-12-16 12:46:28 +0000 (Tue, 16 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+removed unused target "tests"
+
+------------------------------------------------------------------------
+r2578 | zimmerma | 2003-12-16 12:38:36 +0000 (Tue, 16 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+removed AC_DEFINE(hpux) [not used any more]
+
+------------------------------------------------------------------------
+r2577 | ryde | 2003-12-15 22:01:21 +0000 (Mon, 15 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+(EXTRA_DIST): Add round_raw_generic.c.
+
+------------------------------------------------------------------------
+r2576 | pelissip | 2003-12-15 14:39:35 +0000 (Mon, 15 Dec 2003) | 8 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/atan.c
+ M /trunk/cbrt.c
+ M /trunk/div.c
+ M /trunk/fits_u.h
+ M /trunk/gamma.c
+ M /trunk/get_d.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/round_prec.c
+ M /trunk/round_raw_generic.c
+ M /trunk/set_ld.c
+ M /trunk/set_ui.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/memory.c
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/rnd_mode.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcomparisons.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_d_2exp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tinits.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tnext.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsgn.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub1sp.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
++ Optimize a few div.c
++ Remove some warnings in asin.c, atan.c.
++ Include limits.h before gmp-impl.h in mpfr-impl.h
++ mpfr-tests.h doesn't include anumore standard include files.
++ Test files include only standard includes and mpfr-tests.h.
++ Add some forgotten mpfr_clear in mpf[r]_compat.
++ Remove some warnings in the tests.
+
+------------------------------------------------------------------------
+r2575 | zimmerma | 2003-12-15 09:11:37 +0000 (Mon, 15 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+removed unused arguments
+
+------------------------------------------------------------------------
+r2574 | zimmerma | 2003-12-15 09:00:22 +0000 (Mon, 15 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+removed AC_DEFINE(__STDC__) for OSF
+
+------------------------------------------------------------------------
+r2573 | zimmerma | 2003-12-15 08:48:24 +0000 (Mon, 15 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+removed MISCFLAGS (not used any more)
+
+------------------------------------------------------------------------
+r2572 | ryde | 2003-12-14 00:42:04 +0000 (Sun, 14 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Quote AC_DEFUN names, for automake 1.8.
+
+------------------------------------------------------------------------
+r2571 | pelissip | 2003-12-10 13:40:52 +0000 (Wed, 10 Dec 2003) | 3 lines
+Changed paths:
+ M /trunk/powerof2.c
+ M /trunk/sub1sp.c
+ M /trunk/tests/tsub1sp.c
+
++ Add a new test in case of underflow.
++ Fix bug in case of underflow for sub1 / sub1sp (mpfr_powerof2 could be called with inalid numbers).
+
+------------------------------------------------------------------------
+r2570 | pelissip | 2003-12-09 14:58:26 +0000 (Tue, 09 Dec 2003) | 3 lines
+Changed paths:
+ M /trunk/print_raw.c
+ M /trunk/sub1sp.c
+
++ Fixed bugs of mpfr_print_mant_binary on 64 bits CPU (1L instead of 1).
++ Fixed bugs of mpfr_sub1sp on 64-bits CPU (mp_limb_t instead of int).
+
+------------------------------------------------------------------------
+r2569 | pelissip | 2003-12-09 13:52:50 +0000 (Tue, 09 Dec 2003) | 8 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/add.c
+ M /trunk/clear.c
+ M /trunk/init2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/print_raw.c
+ M /trunk/round_prec.c
+ M /trunk/set_prec.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ A /trunk/sub1sp.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ A /trunk/tests/tsub1sp.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_pow.c
+
++ Add function mpfr_print_mantissa_binary, for debugging reason.
++ Rename MPFR_ALLOC_SIZE in MPFR_MALLOC_SIZE.
++ Add conditionnal -DSMALL directive in mpfr-impl.h.
++ Add new function: sub1sp.
+ Subtraction in case of all the ops have the same prec.
++ Add its test (tsub1sp).
++ Modify a few the tests to avoid comparing mpfr results with double, for portability reason.
+
+------------------------------------------------------------------------
+r2568 | vlefevre | 2003-12-05 17:47:09 +0000 (Fri, 05 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/exp10.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Added mpfr_exp10 function.
+
+------------------------------------------------------------------------
+r2567 | pelissip | 2003-12-01 10:25:01 +0000 (Mon, 01 Dec 2003) | 3 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/get_d.c
+ M /trunk/mpfr-impl.h
+ M /trunk/neg.c
+ M /trunk/powerof2.c
+ M /trunk/set_d.c
+ M /trunk/set_ld.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+
+Port all the IEEE dependent remaining functions so that it uses a generic way to compute the result if it detects that the double is not in IEEE format ( _GMP_IEEE_FLOATS == 0).
+MPFR now should work well on non-IEEE machines.
+
+------------------------------------------------------------------------
+r2566 | zimmerma | 2003-12-01 10:20:37 +0000 (Mon, 01 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion for 2 new functions
+
+------------------------------------------------------------------------
+r2565 | zimmerma | 2003-12-01 09:17:41 +0000 (Mon, 01 Dec 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added entry (portability)
+
+------------------------------------------------------------------------
+r2564 | pelissip | 2003-11-25 17:22:31 +0000 (Tue, 25 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/cmp.c
+ M /trunk/mpfr-impl.h
+ M /trunk/sub1.c
+
+Optmize a few add1.c/sub1.c by using MPFR_LIKELY / MPFR_UNLIKELY.
+
+------------------------------------------------------------------------
+r2563 | pelissip | 2003-11-21 16:26:19 +0000 (Fri, 21 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/eq.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/factorial.c
+ M /trunk/fits_s.h
+ M /trunk/fits_u.h
+ M /trunk/gamma.c
+ M /trunk/inp_str.c
+ M /trunk/isinteger.c
+ M /trunk/mul.c
+ M /trunk/pow.c
+ M /trunk/pow_ui.c
+ M /trunk/round_prec.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/sub1.c
+ M /trunk/zeta.c
+
+Remove some warnings and potential errors (Comparaison between signed and unsigned).
+
+------------------------------------------------------------------------
+r2562 | pelissip | 2003-11-21 15:27:35 +0000 (Fri, 21 Nov 2003) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/check.c
+ M /trunk/clear.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tcbrt.c
+ A /trunk/tests/tcheck.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_pow.c
+
++ Add new internal function: mpfr_check.
++ Add the corresponding test file.
++ Translate mpfr_set_d to mpfr_set_str / mpfr_set_ui in the tests for portability reasons.
+
+------------------------------------------------------------------------
+r2558 | zimmerma | 2003-11-21 10:16:17 +0000 (Fri, 21 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+use integers instead of double's
+
+------------------------------------------------------------------------
+r2557 | vlefevre | 2003-11-21 08:05:29 +0000 (Fri, 21 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/TODO
+
+Notes about not using mpfr_set_d in the tests.
+
+------------------------------------------------------------------------
+r2554 | pelissip | 2003-11-19 10:01:34 +0000 (Wed, 19 Nov 2003) | 4 lines
+Changed paths:
+ M /trunk/mul.c
+ M /trunk/pow.c
+ M /trunk/set_ui.c
+
+ Optimization of mpfr_mul.
+ Tiny optimization of mpfr_pow (The case y=0 has been put inside the MPFR_ARE_SINGULAR block).
+ Tiny optimisation of mpfr_set_ui.
+
+------------------------------------------------------------------------
+r2553 | zimmerma | 2003-11-18 16:07:12 +0000 (Tue, 18 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+fixed bug in case exact result
+
+------------------------------------------------------------------------
+r2552 | zimmerma | 2003-11-18 16:05:36 +0000 (Tue, 18 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+added new tests
+
+------------------------------------------------------------------------
+r2551 | pelissip | 2003-11-18 11:46:34 +0000 (Tue, 18 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/round_raw_generic.c
+
+ Optimize round_raw_generic by reducing the number of redundant tests.
+
+------------------------------------------------------------------------
+r2550 | pelissip | 2003-11-17 14:43:54 +0000 (Mon, 17 Nov 2003) | 9 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/exceptions.c
+ M /trunk/get_d.c
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/round_prec.c
+ A /trunk/round_raw_generic.c
+ M /trunk/set_str.c
+ M /trunk/sub1.c
+ M /trunk/tests/Makefile.am
+
+* Optimize a few div.c and mul.c.
+* Reorder the tests.
+* Remove mpfr_round_raw_generic and create 4 new functions which replace it, for efficiency reasons.
+* Add round_raw_generic.c which is the generic file to create the 4 new functions.
+* Add new MACRO: MPFR_RNDUTEST_OR_RNDDNOTTEST which is a faster way to check if (rnd_mode==GMP_RNDU && test) || (rnd_mode==GMP_RNDD && !test).
+* Add new MACRO: MPFR_UNSIGNED_MINUS_MODULO.
+* Optimize mpfr_can_round_raw.
+* Some new defines in mpfr.h to increase compatibility with MPFR v2.0.1 and above.
+
+------------------------------------------------------------------------
+r2548 | zimmerma | 2003-11-14 12:47:01 +0000 (Fri, 14 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/tests/tpow.c
+
+fixed bug in pow_si (exact result, case z = x)
+
+------------------------------------------------------------------------
+r2546 | zimmerma | 2003-11-14 10:44:53 +0000 (Fri, 14 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+added test to check bug fix (bug was in mpfr_pow)
+
+------------------------------------------------------------------------
+r2545 | zimmerma | 2003-11-14 10:43:40 +0000 (Fri, 14 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+added new test to check for bug fix (output precision > input precisions)
+
+------------------------------------------------------------------------
+r2544 | zimmerma | 2003-11-14 10:42:30 +0000 (Fri, 14 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+just improved editing style
+
+------------------------------------------------------------------------
+r2543 | zimmerma | 2003-11-14 10:41:35 +0000 (Fri, 14 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+fixed bug for output precision > max(input precisions)
+
+------------------------------------------------------------------------
+r2542 | vlefevre | 2003-11-14 10:40:26 +0000 (Fri, 14 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Ported the gcc-3.3 bug detection patch to the trunk.
+
+------------------------------------------------------------------------
+r2539 | pelissip | 2003-11-07 16:15:45 +0000 (Fri, 07 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+
+Fix a stupid bug (diff_exp is not equal to the difference of prec)
+
+------------------------------------------------------------------------
+r2538 | vlefevre | 2003-11-07 13:25:18 +0000 (Fri, 07 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+
+Initialize the exp field.
+
+------------------------------------------------------------------------
+r2537 | pelissip | 2003-11-07 10:08:57 +0000 (Fri, 07 Nov 2003) | 4 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/copysign.c
+ M /trunk/div.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/exceptions.c
+ M /trunk/extract.c
+ M /trunk/get_d.c
+ M /trunk/get_exp.c
+ M /trunk/get_str.c
+ M /trunk/init2.c
+ M /trunk/isinteger.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/set_prec.c
+ M /trunk/set_str_raw.c
+ M /trunk/sub1.c
+ M /trunk/swap.c
+
+Some minor optimizations.
+Optimization of mul.c / sub1.c.
+Some clean up in the header files.
+
+------------------------------------------------------------------------
+r2536 | pelissip | 2003-11-05 16:18:16 +0000 (Wed, 05 Nov 2003) | 3 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add_one_ulp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/cmp.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_ui.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/erf.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/get_z_exp.c
+ M /trunk/hypot.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/rint.c
+ M /trunk/set.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/zeta.c
+
+Fix some bugs (Use MPFR_ASSERT(1) instead of MPFR_ASSERT(0))
+Optimize swap.c and copysign.c.
+
+------------------------------------------------------------------------
+r2535 | pelissip | 2003-11-05 12:11:47 +0000 (Wed, 05 Nov 2003) | 4 lines
+Changed paths:
+ M /trunk/cmp2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/sub1.c
+
+Optimize mpfr_prec_round.
+Optimize mpfr_set (Case of both src & dest have the same precision).
+Start optimizing mpfr_sub1.
+
+------------------------------------------------------------------------
+r2534 | pelissip | 2003-11-05 09:00:03 +0000 (Wed, 05 Nov 2003) | 7 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/cmp_ui.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/set.c
+ M /trunk/set_ui.c
+ A /trunk/sgn.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tsgn.c
+
+Add a real function for mpfr_sgn (not a call to mpfr_cmp_ui_2exp).
+Add a test for mpfr_sgn.
+Change the proto of mpfr_add1 and mpfr_sub1 by removing the last arg.
+Simplify the logic of the sign in mpfr_sub1.
+Tiny speed up for cmp/set/sqrt.
+mpfr-impl auto include all the needed local header files (gmp, gmp-impl, mpfr).
+
+------------------------------------------------------------------------
+r2533 | vlefevre | 2003-11-04 16:14:47 +0000 (Tue, 04 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/pow_ui.c
+
+Merged the mpfr-2-0-2-branch pow_ui.c changes to the trunk.
+
+------------------------------------------------------------------------
+r2530 | vlefevre | 2003-11-04 13:51:03 +0000 (Tue, 04 Nov 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+
+The check_inf test wasn't called. Added 2 missing mpfr_clear and \n.
+
+------------------------------------------------------------------------
+r2529 | pelissip | 2003-11-04 13:15:26 +0000 (Tue, 04 Nov 2003) | 10 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cputime.h
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/erf.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/get_str.c
+ M /trunk/hypot.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/minmax.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set_inf.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/sin_cos.c
+ M /trunk/sub.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/zeta.c
+
++ Remove MPFR_CLEAR_NAN and MPFR_CLEAR_INF. Only use MPFR_CLEAR_FLAGS.
+ MPFR_SET_INF, MPFR_SET_ZERO and MPFR_SET_ZERO must clear the flags before setting them.
++ Add a new test in tacosh.c : check Inf / Nan flags.
++ Use MPFR_IS_SINGULAR in all the remaining files.
++ Fix the use of MPFR_CLEAR_FLAGS.
++ mpfr-impl.h auto include gmp.h, gmp-impl.h, mpfr.h and limits.h.
++ Rename _PROTO to _MPFR_PROTO, and remove _GMP_PROTO.
++ Add MPFR_INT_SIGN macro.
++ Encapsulate a few more the sign.
+
+------------------------------------------------------------------------
+r2526 | vlefevre | 2003-10-30 00:03:26 +0000 (Thu, 30 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/log1p.c
+
+MPFR_RET_NAN -> MPFR_RET(0).
+
+------------------------------------------------------------------------
+r2525 | pelissip | 2003-10-28 16:31:13 +0000 (Tue, 28 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/div.c
+ M /trunk/eq.c
+ M /trunk/erf.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/fma.c
+ M /trunk/frac.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/hypot.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/minmax.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/next.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/tpow.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/zeta.c
+
+Use of MPFR_UNLIKELY and MPFR_IS_SINGULAR for fast detection of special values (Nan, Inf or Zero).
+Start to encapsulate the sign to be independent of the representation (Must be 1 or -1).
+
+------------------------------------------------------------------------
+r2524 | pelissip | 2003-10-27 15:15:04 +0000 (Mon, 27 Oct 2003) | 8 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/div.c
+ M /trunk/exceptions.c
+ M /trunk/extract.c
+ M /trunk/get_d.c
+ M /trunk/get_si.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/init2.c
+ M /trunk/log.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+
+Change the internal format of MPFR: ZERO, INF and NAN have special values of exp.
+Rename MPFR_ESIZE in MPFR_LIMB_SIZE.
+Rename MPFR_ABSZISE in MPFR_ALLOC_SIZE.
+Rename MPFR_INIT in MPFR_TMP_INIT (INIT1 too).
+"mpfr.h" includes <gmp.h> if GMP isn't detected.
+Change the way of detecting stdio.h (To check).
+Use mpfr namespace for new definitions in "mpfr.h".
+
+------------------------------------------------------------------------
+r2522 | vlefevre | 2003-10-27 13:06:22 +0000 (Mon, 27 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+Another fix, for acosh(-INF).
+
+------------------------------------------------------------------------
+r2521 | vlefevre | 2003-10-27 12:57:27 +0000 (Mon, 27 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+Fixed exit status.
+
+------------------------------------------------------------------------
+r2519 | vlefevre | 2003-10-21 12:33:17 +0000 (Tue, 21 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/mpfr.h
+ M /trunk/tests/trint.c
+
+Merged the mpfr-2-0-2-branch changes to the trunk.
+
+------------------------------------------------------------------------
+r2514 | vlefevre | 2003-10-20 15:47:10 +0000 (Mon, 20 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/gmp_op.c
+ M /trunk/mpfr.texi
+ M /trunk/rint.c
+ M /trunk/tests/trint.c
+
+Merged the mpfr-2-0-2-branch changes to the trunk.
+
+------------------------------------------------------------------------
+r2511 | vlefevre | 2003-10-17 13:34:46 +0000 (Fri, 17 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/erf.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/trint.c
+
+Merged the mpfr-2-0-2-branch changes to the trunk.
+
+------------------------------------------------------------------------
+r2505 | vlefevre | 2003-10-16 12:48:40 +0000 (Thu, 16 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Update.
+
+------------------------------------------------------------------------
+r2504 | vlefevre | 2003-10-16 11:54:20 +0000 (Thu, 16 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/VERSION
+
+Updated version on trunk.
+
+------------------------------------------------------------------------
+r2503 | vlefevre | 2003-10-16 11:48:31 +0000 (Thu, 16 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2502 | vlefevre | 2003-10-16 09:55:46 +0000 (Thu, 16 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+ M /trunk/set_d.c
+
+Fixed several bugs.
+
+------------------------------------------------------------------------
+r2501 | vlefevre | 2003-10-16 09:32:26 +0000 (Thu, 16 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Added XDEBUG support (like in set_d.c).
+
+------------------------------------------------------------------------
+r2500 | vlefevre | 2003-10-15 09:46:52 +0000 (Wed, 15 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Replaced all non-ASCII characters by an equivalent 7-bit sequence
+to support unpatched texinfo.tex files.
+
+------------------------------------------------------------------------
+r2499 | zimmerma | 2003-10-15 09:32:21 +0000 (Wed, 15 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+removed #define DEBUG (turned on accidentally)
+
+------------------------------------------------------------------------
+r2498 | vlefevre | 2003-10-15 09:15:19 +0000 (Wed, 15 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Bug on the ternary value was fixed by Paul Zimmermann on 2003-10-14.
+
+------------------------------------------------------------------------
+r2497 | zimmerma | 2003-10-14 12:29:45 +0000 (Tue, 14 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added preamble about ternary flag for special functions
+
+------------------------------------------------------------------------
+r2496 | zimmerma | 2003-10-14 12:13:37 +0000 (Tue, 14 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tzeta.c
+
+now uses #include "tgeneric.c" everywhere
+(and modified test_generic to check also the inexact flag)
+
+------------------------------------------------------------------------
+r2495 | zimmerma | 2003-10-14 12:12:10 +0000 (Tue, 14 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_div.c
+
+check_nan() is back
+
+------------------------------------------------------------------------
+r2494 | zimmerma | 2003-10-14 12:08:37 +0000 (Tue, 14 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+removed old unused code
+
+------------------------------------------------------------------------
+r2493 | zimmerma | 2003-10-14 12:05:25 +0000 (Tue, 14 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+fixed tests for x=0
+removed composition tests (were already in-between #if 0 ... #endif)
+
+------------------------------------------------------------------------
+r2492 | zimmerma | 2003-10-14 11:49:06 +0000 (Tue, 14 Oct 2003) | 4 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/erf.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/gamma.c
+ M /trunk/hypot.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/zeta.c
+
+replaced mpfr_can_round (approx, err, rnd1, GMP_RNDN, prec)
+by mpfr_can_round (approx, err, rnd1, GMP_RNDZ, prec + 1)
+which in addition guarantees a correct inexact flag
+
+------------------------------------------------------------------------
+r2491 | zimmerma | 2003-10-14 11:42:51 +0000 (Tue, 14 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new items (version number, rounding modes)
+
+------------------------------------------------------------------------
+r2490 | zimmerma | 2003-10-14 11:42:00 +0000 (Tue, 14 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+added comment about --enable-alloca=debug
+
+------------------------------------------------------------------------
+r2489 | zimmerma | 2003-10-13 13:12:46 +0000 (Mon, 13 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+added section "Problems due to compiler bugs"
+
+------------------------------------------------------------------------
+r2488 | zimmerma | 2003-10-13 08:03:14 +0000 (Mon, 13 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+
+change in can_round calls to get correct inexact flag for rounding to nearest
+
+------------------------------------------------------------------------
+r2487 | zimmerma | 2003-10-10 09:05:15 +0000 (Fri, 10 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+fixed bug in mpfr_pow found by Ming J. Tsai (overflow)
+
+------------------------------------------------------------------------
+r2486 | vlefevre | 2003-10-08 15:43:13 +0000 (Wed, 08 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/asin.c
+ M /trunk/atan.c
+
+Removed useless inclusion of standard headers and some #ifdef DEBUG
+code. Partial reindentation.
+
+------------------------------------------------------------------------
+r2485 | vlefevre | 2003-10-08 15:22:05 +0000 (Wed, 08 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/strncasecmp.c
+
+Added a #include <stddef.h> because size_t is used.
+
+------------------------------------------------------------------------
+r2484 | zimmerma | 2003-10-07 08:37:28 +0000 (Tue, 07 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tzeta.c
+
+reduced test time
+
+------------------------------------------------------------------------
+r2483 | zimmerma | 2003-10-07 07:41:55 +0000 (Tue, 07 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+reduced test time
+
+------------------------------------------------------------------------
+r2482 | zimmerma | 2003-10-07 07:36:12 +0000 (Tue, 07 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+reduced test time
+
+------------------------------------------------------------------------
+r2481 | zimmerma | 2003-10-06 16:11:15 +0000 (Mon, 06 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+fixed comment of mpfr_round_raw_generic
+
+------------------------------------------------------------------------
+r2480 | zimmerma | 2003-10-06 15:53:46 +0000 (Mon, 06 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/extract.c
+ M /trunk/get_si.c
+ M /trunk/get_ui.c
+
+replaced ABSSIZE by ESIZE (ABSSIZE is the allocated size, and should be
+used only in functions init, set_prec, round_prec)
+
+------------------------------------------------------------------------
+r2479 | zimmerma | 2003-10-06 15:52:25 +0000 (Mon, 06 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+fixed bug in allocation for in-place operation
+
+------------------------------------------------------------------------
+r2478 | zimmerma | 2003-10-06 14:44:18 +0000 (Mon, 06 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/atan.c
+
+inexact flag should now be correct for directed rounding
+fixed a bug for mpfr_atan(-Inf) [gave +Pi/2 instead of -Pi/2]
+
+------------------------------------------------------------------------
+r2477 | zimmerma | 2003-10-06 14:43:00 +0000 (Mon, 06 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+added test for atan(-Inf)
+
+------------------------------------------------------------------------
+r2476 | zimmerma | 2003-10-06 13:32:02 +0000 (Mon, 06 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+use macros to avoid possible problem with float input
+
+------------------------------------------------------------------------
+r2475 | zimmerma | 2003-10-06 13:31:20 +0000 (Mon, 06 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+new proposal for mpfr_can_round
+
+------------------------------------------------------------------------
+r2474 | zimmerma | 2003-10-06 08:35:42 +0000 (Mon, 06 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr_mul_2exp/mpfr_div_2exp are not obsolete
+
+------------------------------------------------------------------------
+r2473 | vlefevre | 2003-10-05 23:11:12 +0000 (Sun, 05 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Clearer mpfr_eq documentation (thanks to Kevin Ryde for the remark).
+
+------------------------------------------------------------------------
+r2472 | vlefevre | 2003-10-03 13:00:41 +0000 (Fri, 03 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+MPFR_ASSERTN rewritten to avoid "statement with no effect" warnings
+with gcc when the assertion is always true.
+
+------------------------------------------------------------------------
+r2471 | vlefevre | 2003-10-03 12:49:59 +0000 (Fri, 03 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/add1.c
+
+Optimization (thanks to Patrick Pelissier), as the allocated size
+may be larger than the size used by the significant bits.
+
+------------------------------------------------------------------------
+r2470 | vlefevre | 2003-10-03 12:30:14 +0000 (Fri, 03 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/mpfr.texi
+
+Updated installation notes.
+
+------------------------------------------------------------------------
+r2469 | vlefevre | 2003-10-03 08:01:45 +0000 (Fri, 03 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/cmp_abs.c
+ M /trunk/mpfr.texi
+
+Infinities are now accepted in mpfr_cmpabs. Updated its definition
+in the source (no longer sign(abs(b) - abs(c))).
+
+------------------------------------------------------------------------
+r2468 | vlefevre | 2003-10-02 22:30:16 +0000 (Thu, 02 Oct 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Use @url{} for URLs.
+
+------------------------------------------------------------------------
+r2467 | vlefevre | 2003-10-02 21:57:39 +0000 (Thu, 02 Oct 2003) | 6 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+As suggested by PZ:
+ o documentation of mpfr_fits_* functions moved to the section
+ on conversions;
+ o grouped some mpfr_pow special cases;
+ o explanation concerning the meaning of rnd in mpfr_frac.
+
+------------------------------------------------------------------------
+r2466 | vlefevre | 2003-10-02 17:17:59 +0000 (Thu, 02 Oct 2003) | 8 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/print_raw.c
+ M /trunk/set_str_raw.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+Updated documentation. In particular, mpfr_set_str_raw renamed
+as mpfr_set_str_binary. This function and mpfr_print_binary are
+now internal functions. mpfr_print_binary no longer prints the
+non-significant 0 bits. Updated the source to match the manual.
+mpfr_print_binary has been completely rewritten (now directly
+prints to stdout, without using an intermediate string). In
+mpfr_set_str_binary, replaced atol by strtol + error checking.
+
+------------------------------------------------------------------------
+r2465 | zimmerma | 2003-10-02 14:14:08 +0000 (Thu, 02 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added paragraph on support/grants
+added help for mpfr_erf
+
+------------------------------------------------------------------------
+r2464 | vlefevre | 2003-10-02 14:05:59 +0000 (Thu, 02 Oct 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Make node titles match section titles, and updated menus and xrefs.
+Added a line break after @samp{uninstall}.
+
+------------------------------------------------------------------------
+r2463 | vlefevre | 2003-10-01 15:06:25 +0000 (Wed, 01 Oct 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/zeta.c
+
+Corrections in the MPFR manual (PZ & VL). Functions mpfr_const_pi,
+mpfr_const_log2 and mpfr_zeta now return a ternary value. Updated
+TODO file.
+
+------------------------------------------------------------------------
+r2462 | vlefevre | 2003-09-30 16:50:58 +0000 (Tue, 30 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Added a bug related to the ternary value and worst cases.
+
+------------------------------------------------------------------------
+r2461 | vlefevre | 2003-09-30 16:29:01 +0000 (Tue, 30 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+
+Added exponent range support.
+
+------------------------------------------------------------------------
+r2460 | vlefevre | 2003-09-30 10:34:39 +0000 (Tue, 30 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Corrections up to Section 5.6 (PZ & VL).
+
+------------------------------------------------------------------------
+r2459 | vlefevre | 2003-09-30 10:12:24 +0000 (Tue, 30 Sep 2003) | 7 lines
+Changed paths:
+ M /trunk/get_z_exp.c
+
+Re-added the assert on the exponent, but replacing MPFR_EMIN_MIN by
+MP_EXP_T_MIN (this makes more sense): an assertion failed would mean
+that the exponent is not representable (an undefined behavior in the
+ISO C standard). If need be, we could choose to return MP_EXP_T_MIN
+in such a case, or perhaps MP_EXP_T_MAX to signal an error. The
+mantissa would still be meaningful.
+
+------------------------------------------------------------------------
+r2458 | pelissip | 2003-09-30 07:47:49 +0000 (Tue, 30 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update TODO & mpfr_set_prec.
+
+------------------------------------------------------------------------
+r2457 | vlefevre | 2003-09-29 14:40:11 +0000 (Mon, 29 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Corrections up to Section 4.
+
+------------------------------------------------------------------------
+r2456 | vlefevre | 2003-09-29 08:00:19 +0000 (Mon, 29 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+Added authors Kevin Ryde and Patrick Pelissier.
+
+------------------------------------------------------------------------
+r2455 | vlefevre | 2003-09-29 07:48:10 +0000 (Mon, 29 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Removed "known problems" that are no longer problems.
+
+------------------------------------------------------------------------
+r2454 | vlefevre | 2003-09-26 12:39:37 +0000 (Fri, 26 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+
+Removed bugs related to the tests and to the exponents
+as they no longer occur. Updated some potentials bugs.
+
+------------------------------------------------------------------------
+r2453 | vlefevre | 2003-09-25 16:50:34 +0000 (Thu, 25 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tinits.c
+
+Removed mpfr_inits, mpfr_inits2, mpfr_clears from the documentation.
+Moved their prototypes to mpfr-impl.h (internal functions until
+decided otherwise).
+
+------------------------------------------------------------------------
+r2452 | pelissip | 2003-09-25 12:03:36 +0000 (Thu, 25 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/generic.c
+
+Modify 'r' arg of GENERIC from int to long (min 32 bits).
+
+------------------------------------------------------------------------
+r2451 | vlefevre | 2003-09-25 10:31:23 +0000 (Thu, 25 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+8-bit ISO-8859-1 characters + consistent spelling.
+
+------------------------------------------------------------------------
+r2450 | vlefevre | 2003-09-25 10:17:00 +0000 (Thu, 25 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2449 | vlefevre | 2003-09-25 08:15:42 +0000 (Thu, 25 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/mpf_compat.h
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_d.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tfrac.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+
+Changed the remaining stderr to stdout.
+
+------------------------------------------------------------------------
+r2448 | vlefevre | 2003-09-24 22:32:40 +0000 (Wed, 24 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+Changed some stderr to stdout.
+
+------------------------------------------------------------------------
+r2447 | vlefevre | 2003-09-24 21:05:42 +0000 (Wed, 24 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/comparisons.c
+ M /trunk/mpfr.texi
+
+Added documentation for mpfr_greater_p, mpfr_greaterequal_p,
+mpfr_less_p, mpfr_lessequal_p, mpfr_lessgreater_p, mpfr_equal_p
+and mpfr_unordered_p.
+
+------------------------------------------------------------------------
+r2446 | vlefevre | 2003-09-24 20:26:48 +0000 (Wed, 24 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tcomparisons.c
+
+Added tests for mpfr_greater_p, mpfr_greaterequal_p, mpfr_less_p,
+mpfr_lessequal_p, mpfr_lessgreater_p, mpfr_equal_p, mpfr_unordered_p.
+
+------------------------------------------------------------------------
+r2445 | vlefevre | 2003-09-24 16:31:11 +0000 (Wed, 24 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/tests/tnext.c
+
+Added a few more tests (involving mpfr_nexttoward). The tests for
+the mpfr_nextabove, mpfr_nextbelow and mpfr_nexttoward functions
+should now be sufficient.
+
+------------------------------------------------------------------------
+r2444 | vlefevre | 2003-09-24 13:19:30 +0000 (Wed, 24 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/next.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tnext.c
+
+Added generic tests for mpfr_nextabove and mpfr_nextbelow.
+Fixed a bug in next.c related to assertion checks.
+
+------------------------------------------------------------------------
+r2443 | vlefevre | 2003-09-24 12:02:45 +0000 (Wed, 24 Sep 2003) | 5 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/set_str.c
+ M /trunk/tests/tset_str.c
+
+Accept (case-insensitive) NaN and Inf in input for bases <= 16 for
+backward compatibility in these bases (for bases > 16, we cannot
+guaranty backward compatibility with the current wanted behavior).
+Added tests.
+
+------------------------------------------------------------------------
+r2442 | zimmerma | 2003-09-24 10:33:20 +0000 (Wed, 24 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item from Kevin
+
+------------------------------------------------------------------------
+r2441 | vlefevre | 2003-09-24 09:26:34 +0000 (Wed, 24 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/texinfo.tex
+
+Added support for some top-bit-set characters in the .texi source.
+
+------------------------------------------------------------------------
+r2440 | vlefevre | 2003-09-24 08:40:04 +0000 (Wed, 24 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added information on special values for mpfr_pow.
+
+------------------------------------------------------------------------
+r2439 | zimmerma | 2003-09-24 08:35:06 +0000 (Wed, 24 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added MAKEINFOFLAGS = --enable-encoding to get 8-bit characters in mpfr.info
+
+------------------------------------------------------------------------
+r2438 | zimmerma | 2003-09-24 08:05:50 +0000 (Wed, 24 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/AUTHORS
+ M /trunk/mpfr.texi
+
+used ISO-8859-1 in AUTHORS
+and @`e, @"o in mpfr.texi (waiting for code for ISO-8859-1 compatibility)
+
+------------------------------------------------------------------------
+r2437 | ryde | 2003-09-24 00:40:24 +0000 (Wed, 24 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_C_LONG_DOUBLE_FORMAT): Remove conftest* temporary
+files.
+
+------------------------------------------------------------------------
+r2436 | vlefevre | 2003-09-24 00:36:19 +0000 (Wed, 24 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Fixed comparisons (cases @NaN@ and @Inf@).
+
+------------------------------------------------------------------------
+r2435 | zimmerma | 2003-09-23 09:19:22 +0000 (Tue, 23 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+two updates
+
+------------------------------------------------------------------------
+r2434 | vlefevre | 2003-09-22 15:03:30 +0000 (Mon, 22 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Updated mpfr_pow description.
+
+------------------------------------------------------------------------
+r2433 | zimmerma | 2003-09-22 13:50:46 +0000 (Mon, 22 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/print_rnd_mode.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+
+changed __gmp_const into const in *.c
+[Torbjo"rn: Please use __gmp_const just in user header files, plain C const in other files.]
+
+------------------------------------------------------------------------
+r2432 | vlefevre | 2003-09-22 13:30:46 +0000 (Mon, 22 Sep 2003) | 6 lines
+Changed paths:
+ M /trunk/TODO
+
+Removed
+
+- allow the ISO C "P" exponent separator for base 16 in input functions
+
+(already done).
+
+------------------------------------------------------------------------
+r2431 | vlefevre | 2003-09-22 13:09:16 +0000 (Mon, 22 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/tests/tset_ld.c
+
+Implemented the following:
+- use (LDBL_MAX/2)+(LDBL_MAX/4*LDBL_EPSILON) instead of loop in tset_ld
+ to get largest power of 2 that fits in a long double
+
+------------------------------------------------------------------------
+r2430 | vlefevre | 2003-09-22 11:23:09 +0000 (Mon, 22 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/sub1.c
+
+Added some MPFR_ASSERTN and improved a comment.
+
+------------------------------------------------------------------------
+r2429 | vlefevre | 2003-09-22 07:56:47 +0000 (Mon, 22 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+
+Avoid string literals longer than 509 characters (ISO C89 limit).
+
+------------------------------------------------------------------------
+r2428 | vlefevre | 2003-09-22 07:53:16 +0000 (Mon, 22 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+(test_set_underflow, test_set_overflow): Cleaner fix (for pre-C99
+compilers).
+
+------------------------------------------------------------------------
+r2427 | ryde | 2003-09-22 01:45:07 +0000 (Mon, 22 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/texceptions.c
+
+(test_set_underflow, test_set_overflow): Use
+"static" on "r" to allow non-constant initializers.
+
+------------------------------------------------------------------------
+r2426 | ryde | 2003-09-21 00:37:17 +0000 (Sun, 21 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Converting Floats): In mpfr_get_d_2exp, the rounding mode
+is given, it doesn't use the default mode.
+
+------------------------------------------------------------------------
+r2425 | ryde | 2003-09-21 00:14:49 +0000 (Sun, 21 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Assigning Floats): In mpfr_set_str and mpfr_set_str_raw,
+show "const" not "__gmp_const".
+(Simultaneous Float Init & Assign): In mpfr_init_set_str, ditto.
+
+------------------------------------------------------------------------
+r2424 | ryde | 2003-09-21 00:07:26 +0000 (Sun, 21 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Rounding Modes): Add blank line around @itemize.
+
+------------------------------------------------------------------------
+r2423 | ryde | 2003-09-21 00:06:03 +0000 (Sun, 21 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Miscellaneous Float Functions): In mpfr_urandomb and
+mpfr_random, use @math and @le.
+
+------------------------------------------------------------------------
+r2422 | ryde | 2003-09-20 23:51:49 +0000 (Sat, 20 Sep 2003) | 6 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Assigning Floats): In mpfr_set_*, remove remarks about
+long being rounded (this should be clear already), about rounding of
+decimal double constants like 0.1 (too basic to appear here),
+(Converting Floats): In mpfr_get_d_2exp, remove remark about exp
+exceeding IEEE exponent range (should be clear already).
+
+------------------------------------------------------------------------
+r2421 | zimmerma | 2003-09-19 14:25:15 +0000 (Fri, 19 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated items: removed conversion from/to float (obsolete)
+
+------------------------------------------------------------------------
+r2420 | zimmerma | 2003-09-19 14:09:51 +0000 (Fri, 19 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/zeta.c
+
+got rid of <math.h> dependency in mpfr_zeta
+
+------------------------------------------------------------------------
+r2419 | zimmerma | 2003-09-19 13:41:10 +0000 (Fri, 19 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/exp_2.c
+ M /trunk/get_str.c
+ M /trunk/log_b2.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/round_prec.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tzeta.c
+
+mpfr_round_prec is now obsolete
+new function mpfr_prec_round replaces it
+
+------------------------------------------------------------------------
+r2418 | vlefevre | 2003-09-18 10:33:57 +0000 (Thu, 18 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Fix for C implementations with 16-bit int.
+
+------------------------------------------------------------------------
+r2417 | pelissip | 2003-09-18 08:37:38 +0000 (Thu, 18 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+ Optimization of macros MPFR_IS_INF, MPFR_IS_NAN and MPFR_IS_FP
+
+------------------------------------------------------------------------
+r2416 | vlefevre | 2003-09-18 06:50:14 +0000 (Thu, 18 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Removed a comment that should have been removed in revision 1.8.
+
+------------------------------------------------------------------------
+r2415 | zimmerma | 2003-09-15 15:55:00 +0000 (Mon, 15 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+No longer perform the pre-check for exactness when first division step was
+actually a complete division. This introduced way too much overhead.
+
+------------------------------------------------------------------------
+r2414 | zimmerma | 2003-09-15 15:30:31 +0000 (Mon, 15 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/inp_str.c
+
+replaced test stream==0 by stream==NULL
+
+------------------------------------------------------------------------
+r2413 | vlefevre | 2003-09-15 13:55:30 +0000 (Mon, 15 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/round_prec.c
+ M /trunk/tests/tcan_round.c
+
+Fixed a bug in mpfr_can_round_raw and added other mpfr_can_round
+tests.
+
+------------------------------------------------------------------------
+r2412 | vlefevre | 2003-09-15 13:05:05 +0000 (Mon, 15 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/round_prec.c
+ M /trunk/tests/tcan_round.c
+
+Added a test to tests/tcan_round.c and assertions to round_prec.c.
+
+------------------------------------------------------------------------
+r2411 | vlefevre | 2003-09-14 08:52:44 +0000 (Sun, 14 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/tests/texceptions.c
+
+Fixed mpfr_set_overflow, added tests for mpfr_set_underflow
+and mpfr_set_overflow, and reverted exp.c.
+
+------------------------------------------------------------------------
+r2410 | zimmerma | 2003-09-13 08:46:47 +0000 (Sat, 13 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+overflow with round to zero was incorrect
+
+------------------------------------------------------------------------
+r2409 | vlefevre | 2003-09-11 16:49:11 +0000 (Thu, 11 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/clears.c
+ A /trunk/inits.c
+ A /trunk/inits2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tinits.c
+
+New functions mpfr_inits, mpfr_inits2 and mpfr_clears to initialize or
+free several floating-point numbers (written by Patrick Pélissier).
+
+------------------------------------------------------------------------
+r2408 | vlefevre | 2003-09-09 16:09:42 +0000 (Tue, 09 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/zeta.c
+
+Replaced malloc/free by __gmp_allocate_func/__gmp_free_func in
+mpfr_zeta_pos. zeta.c still uses math (libm) functions -> TODO:
+remove this dependence.
+
+------------------------------------------------------------------------
+r2407 | vlefevre | 2003-09-09 15:13:38 +0000 (Tue, 09 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+Added a test that makes MPFR crash (coming from the mpfr_zeta crash).
+
+------------------------------------------------------------------------
+r2406 | vlefevre | 2003-09-09 14:28:47 +0000 (Tue, 09 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+Case that crashes MPFR (coming from test_generic) -> function test1.
+
+------------------------------------------------------------------------
+r2405 | vlefevre | 2003-09-09 11:33:45 +0000 (Tue, 09 Sep 2003) | 6 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+Ended up by simplifying mpfr_ui_pow to fix it completely (with a
+call to mpfr_pow, in a way similar to other ui functions). There
+isn't significant differences with the old code anyway, and the
+case integer^integer wasn't optimized like in mpfr_pow.
+The test tui_pow now passes, but the test tzeta now fails!
+
+------------------------------------------------------------------------
+r2404 | vlefevre | 2003-09-09 10:39:01 +0000 (Tue, 09 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+ M /trunk/ui_pow.c
+
+Code clean-up and reindented. Replaced a 8 by CHAR_BIT,
+as CHAR_BIT isn't necessarily equal to 8. The bug seems
+to occur on all machines.
+
+------------------------------------------------------------------------
+r2403 | vlefevre | 2003-09-08 16:22:08 +0000 (Mon, 08 Sep 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+Added a test to reproduce a bug (to be fixed later) on all 64-bit
+machines.
+
+------------------------------------------------------------------------
+r2402 | vlefevre | 2003-09-08 15:50:30 +0000 (Mon, 08 Sep 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+Added a cast (useful under Linux/alpha).
+
+------------------------------------------------------------------------
+r2401 | vlefevre | 2003-09-01 15:20:39 +0000 (Mon, 01 Sep 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/print_rnd_mode.c
+
+Changes (Patrick Pelissier's suggestions):
+ _ mpfr_print_rnd_mode now has __gmp_const char * return type;
+ _ some corrections in mpfr.texi, documentencoding set.
+
+------------------------------------------------------------------------
+r2400 | ryde | 2003-08-30 23:25:43 +0000 (Sat, 30 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/amd64.asm
+
+#Corrections to initial checkin.
+
+------------------------------------------------------------------------
+r2399 | ryde | 2003-08-30 02:13:55 +0000 (Sat, 30 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+(EXTRA_libfrtests_a_SOURCES): Add amd64.asm.
+
+------------------------------------------------------------------------
+r2398 | ryde | 2003-08-30 02:13:34 +0000 (Sat, 30 Aug 2003) | 2 lines
+Changed paths:
+ A /trunk/tests/amd64.asm
+
+New file.
+
+------------------------------------------------------------------------
+r2397 | ryde | 2003-08-30 02:13:18 +0000 (Sat, 30 Aug 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Correction to:
+(MPFR_CONFIGS): Add amd64-*-* to x86 test objects.
+
+------------------------------------------------------------------------
+r2396 | ryde | 2003-08-30 01:42:49 +0000 (Sat, 30 Aug 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+(tests_machine_prec_long_double): Add amd64 to the
+comments.
+
+------------------------------------------------------------------------
+r2395 | ryde | 2003-08-30 01:41:08 +0000 (Sat, 30 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_CONFIGS): Add amd64-*-* to x86 test objects.
+
+------------------------------------------------------------------------
+r2394 | ryde | 2003-08-30 01:39:32 +0000 (Sat, 30 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+(check_set_get): Improve error messages.
+
+------------------------------------------------------------------------
+r2393 | ryde | 2003-08-30 01:38:46 +0000 (Sat, 30 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tests.c
+
+(ld_trace): New function.
+
+------------------------------------------------------------------------
+r2392 | ryde | 2003-08-30 01:37:40 +0000 (Sat, 30 Aug 2003) | 3 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+(ldbl_max_struct): Use octal character constants, since hex
+is an ANSI-ism.
+
+------------------------------------------------------------------------
+r2391 | vlefevre | 2003-08-07 07:56:08 +0000 (Thu, 07 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/ui_pow_ui.c
+
+Avoid a potential overflow.
+
+------------------------------------------------------------------------
+r2390 | zimmerma | 2003-08-04 11:13:04 +0000 (Mon, 04 Aug 2003) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/tests/tagm.c
+
+fixed pb found by Damien Fisher
+
+------------------------------------------------------------------------
+r2389 | vlefevre | 2003-07-24 15:47:17 +0000 (Thu, 24 Jul 2003) | 3 lines
+Changed paths:
+ M /trunk/get_d.c
+
+If the exponent of the number is meaningless (src = NaN, inf or 0),
+0 is stored in expptr (behavior similar to the ISO C frexp function).
+
+------------------------------------------------------------------------
+r2388 | zimmerma | 2003-07-21 13:16:54 +0000 (Mon, 21 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item
+
+------------------------------------------------------------------------
+r2387 | ryde | 2003-07-19 00:17:02 +0000 (Sat, 19 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+(check_PROGRAMS): Add tget_d_2exp.c.
+
+------------------------------------------------------------------------
+r2386 | ryde | 2003-07-19 00:15:46 +0000 (Sat, 19 Jul 2003) | 2 lines
+Changed paths:
+ A /trunk/tests/tget_d_2exp.c
+
+New file, partly derived from tget_d.c.
+
+------------------------------------------------------------------------
+r2385 | ryde | 2003-07-19 00:12:19 +0000 (Sat, 19 Jul 2003) | 3 lines
+Changed paths:
+ M /trunk/get_d.c
+
+(mpfr_get_d_2exp): Ensure 0.5 <= abs(ret) < 1.0 is respected
+when rounding away from zero.
+
+------------------------------------------------------------------------
+r2384 | ryde | 2003-07-19 00:07:32 +0000 (Sat, 19 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tests.c
+
+(d_trace): New function.
+
+------------------------------------------------------------------------
+r2383 | ryde | 2003-07-19 00:06:15 +0000 (Sat, 19 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Converting Floats): mpfr_get_d_2exp stores to a long.
+
+------------------------------------------------------------------------
+r2382 | ryde | 2003-07-19 00:00:24 +0000 (Sat, 19 Jul 2003) | 3 lines
+Changed paths:
+ M /trunk/get_d.c
+ M /trunk/mpfr.h
+
+(mpfr_get_d_2exp): Store exp in a long, same as
+mpz_get_d_2exp and mpf_get_d_2exp.
+
+------------------------------------------------------------------------
+r2381 | vlefevre | 2003-07-15 14:42:08 +0000 (Tue, 15 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Updated comment.
+
+------------------------------------------------------------------------
+r2380 | vlefevre | 2003-07-08 14:31:44 +0000 (Tue, 08 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+Correction in a comment (patch by Torbjorn).
+
+------------------------------------------------------------------------
+r2379 | zimmerma | 2003-07-01 14:47:05 +0000 (Tue, 01 Jul 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/round_prec.c
+
+can_round returns 0 for NaN/Inf
+
+------------------------------------------------------------------------
+r2378 | zimmerma | 2003-07-01 10:49:04 +0000 (Tue, 01 Jul 2003) | 3 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+fixed Uninitialized memory read in mpfr_can_round
+(when b is NaN or Inf)
+
+------------------------------------------------------------------------
+r2377 | zimmerma | 2003-06-30 15:59:19 +0000 (Mon, 30 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+fixed array bound write (need 6+1 characters in s1 to represent -@inf@ + \0)
+
+------------------------------------------------------------------------
+r2376 | ryde | 2003-06-28 00:17:24 +0000 (Sat, 28 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Add "const" to IEEE byte sequence data.
+
+------------------------------------------------------------------------
+r2375 | ryde | 2003-06-28 00:15:04 +0000 (Sat, 28 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+(tests_rand_end): Remove explicit __gmp_rands
+clearing, it's what RANDS_CLEAR does already.
+
+------------------------------------------------------------------------
+r2374 | ryde | 2003-06-26 23:01:02 +0000 (Thu, 26 Jun 2003) | 4 lines
+Changed paths:
+ M /trunk/TODO
+
+# Clarify nan/inf bits under efficiency.
+# Add mpfr_get_d3 ieee portability.
+# Add mpfr_random not wanted in mpf integration.
+
+------------------------------------------------------------------------
+r2373 | zimmerma | 2003-06-26 13:40:08 +0000 (Thu, 26 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/cmp_d.c
+ M /trunk/get_d.c
+ M /trunk/get_ld.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_ld.c
+
+moved macros for [L]DBL_MANT_DIG in mpfr-impl.h
+
+------------------------------------------------------------------------
+r2372 | zimmerma | 2003-06-25 10:16:43 +0000 (Wed, 25 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+fixed several problems noticed by Kevin
+
+------------------------------------------------------------------------
+r2371 | zimmerma | 2003-06-25 07:47:53 +0000 (Wed, 25 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+changed test for 2^1024, using LDBL_MAX_EXP
+
+------------------------------------------------------------------------
+r2370 | ryde | 2003-06-25 00:47:56 +0000 (Wed, 25 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+# Add efficiency of separate flag bit operations.
+
+------------------------------------------------------------------------
+r2369 | ryde | 2003-06-24 23:57:33 +0000 (Tue, 24 Jun 2003) | 2 lines
+Changed paths:
+ D /trunk/mpfr-math.h
+
+Remove file, no longer used.
+
+------------------------------------------------------------------------
+r2368 | ryde | 2003-06-24 23:56:41 +0000 (Tue, 24 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+(libmpfr_a_SOURCES): Remove mpfr-math.h.
+
+------------------------------------------------------------------------
+r2367 | ryde | 2003-06-24 23:55:52 +0000 (Tue, 24 Jun 2003) | 5 lines
+Changed paths:
+ M /trunk/get_d.c
+
+(MPFR_DBL_INFP, MPFR_DBL_INFM, MPFR_DBL_NAN): Make private
+definitions based on IEEE byte sequences, in particular avoid HUGE_VAL
+from mpfr-math.h since that's not infinity on hppa1.1-hp-hpux10.
+Remove includes of mpfr-math.h, math.h and stddef.h.
+
+------------------------------------------------------------------------
+r2366 | ryde | 2003-06-24 23:50:03 +0000 (Tue, 24 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+(check_inf_nan): New test.
+
+------------------------------------------------------------------------
+r2365 | ryde | 2003-06-24 23:45:21 +0000 (Tue, 24 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_C_LONG_DOUBLE_FORMAT): Use octal char constants,
+'\xHH' is an ANSI-ism.
+
+------------------------------------------------------------------------
+r2364 | zimmerma | 2003-06-24 10:21:38 +0000 (Tue, 24 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+check 2^1024 only when sizeof(long double) > sizeof(double)
+
+------------------------------------------------------------------------
+r2363 | zimmerma | 2003-06-24 08:20:41 +0000 (Tue, 24 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+correction to previous patch
+
+------------------------------------------------------------------------
+r2362 | zimmerma | 2003-06-24 08:14:39 +0000 (Tue, 24 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+correction to previous patch: problem was that x and u can be 0,
+then MPFR_PREC() undefined
+
+------------------------------------------------------------------------
+r2361 | ryde | 2003-06-24 00:32:32 +0000 (Tue, 24 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+(tests_start_mpfr): Make stdout and stderr unbuffered.
+
+------------------------------------------------------------------------
+r2360 | ryde | 2003-06-24 00:30:25 +0000 (Tue, 24 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+(check_inexact): For pz, use at least MPFR_PREC_MIN
+since this is required by mpfr_set_prec.
+
+------------------------------------------------------------------------
+r2359 | ryde | 2003-06-24 00:29:32 +0000 (Tue, 24 Jun 2003) | 4 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+# Correction to:
+# (check_inexact): For pz, use at least MPFR_PREC_MIN
+# since this is required by mpfr_set_prec.
+
+------------------------------------------------------------------------
+r2358 | ryde | 2003-06-24 00:20:41 +0000 (Tue, 24 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+(check_inexact): For pz, use at least MPFR_PREC_MIN
+since this is required by mpfr_set_prec.
+
+------------------------------------------------------------------------
+r2357 | ryde | 2003-06-23 23:58:03 +0000 (Mon, 23 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove mingw portability of random/rand48, no longer used.
+
+------------------------------------------------------------------------
+r2356 | ryde | 2003-06-23 23:55:24 +0000 (Mon, 23 Jun 2003) | 5 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove __setfpucw, no longer used.
+Remove mpfr_integer_p, done.
+Remove gmp rand functions in test programs, done.
+Remove MPFR_CHECK_RANDOMIZE, done (as GMP_CHECK_RANDOMIZE).
+
+------------------------------------------------------------------------
+r2355 | vlefevre | 2003-06-21 07:56:50 +0000 (Sat, 21 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr_random is deprecated.
+
+------------------------------------------------------------------------
+r2354 | zimmerma | 2003-06-20 15:01:01 +0000 (Fri, 20 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tui_div.c
+
+changed since mpfr_random now can return 0
+
+------------------------------------------------------------------------
+r2353 | vlefevre | 2003-06-20 14:21:36 +0000 (Fri, 20 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/random.c
+
+The distribution should now be uniform (mpfr_random implemented
+by calling mpfr_urandomb).
+
+------------------------------------------------------------------------
+r2352 | vlefevre | 2003-06-20 12:30:42 +0000 (Fri, 20 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/urandomb.c
+
+Take the current exponent range into account in mpfr_urandomb
+(which now returns an int).
+
+------------------------------------------------------------------------
+r2351 | vlefevre | 2003-06-20 10:37:26 +0000 (Fri, 20 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+Bug fix.
+
+------------------------------------------------------------------------
+r2350 | zimmerma | 2003-06-20 10:30:35 +0000 (Fri, 20 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+moved _gmp_rands_initialized stuff from tests_end_mpfr() to tests_rand_end()
+
+------------------------------------------------------------------------
+r2349 | zimmerma | 2003-06-20 09:58:46 +0000 (Fri, 20 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_z.c
+
+reduced default number of tests
+improved style
+
+------------------------------------------------------------------------
+r2348 | zimmerma | 2003-06-20 09:53:15 +0000 (Fri, 20 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+reduced default number of tests
+improved style
+
+------------------------------------------------------------------------
+r2347 | zimmerma | 2003-06-19 17:17:48 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+fixed bug in mpfr_exp2_aux2 (spe175.testdrive.hp.com)
+
+------------------------------------------------------------------------
+r2346 | zimmerma | 2003-06-19 15:40:52 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+
+improved style
+
+------------------------------------------------------------------------
+r2345 | zimmerma | 2003-06-19 14:57:05 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added more information in case of failure
+
+------------------------------------------------------------------------
+r2344 | zimmerma | 2003-06-19 09:12:26 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+
+removed randseed() stuff [obsolete now we use the GMP mechanism]
+
+------------------------------------------------------------------------
+r2343 | zimmerma | 2003-06-19 08:55:03 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+added memory test mechanism
+
+------------------------------------------------------------------------
+r2342 | zimmerma | 2003-06-19 08:54:42 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added new test from Parks
+
+------------------------------------------------------------------------
+r2341 | zimmerma | 2003-06-19 08:54:07 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+fixed allocation problem (forgot to clear)
+
+------------------------------------------------------------------------
+r2340 | vlefevre | 2003-06-19 01:01:38 +0000 (Thu, 19 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+Removed drand48/lrand48/srand48 prototypes.
+
+------------------------------------------------------------------------
+r2339 | ryde | 2003-06-18 22:57:32 +0000 (Wed, 18 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_z.c
+
+Don't use mpz_get_d1, since a 53-bit double is not
+enough when long is 64-bits.
+
+------------------------------------------------------------------------
+r2338 | ryde | 2003-06-18 22:50:59 +0000 (Wed, 18 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+Don't use mpz_get_d1, since a 53-bit double is not
+enough when long is 64-bits.
+
+------------------------------------------------------------------------
+r2337 | ryde | 2003-06-13 22:43:53 +0000 (Fri, 13 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Use autoconf recommended style for time.h with
+sys/time.h.
+
+------------------------------------------------------------------------
+r2336 | ryde | 2003-06-13 22:40:44 +0000 (Fri, 13 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_CONFIGS): Require AC_HEADER_TIME, add
+AC_CHECK_HEADERS of sys/time.h.
+
+------------------------------------------------------------------------
+r2335 | ryde | 2003-06-13 22:33:50 +0000 (Fri, 13 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_CONFIGS): Add AC_CHECK_FUNCS of gettimeofday.
+
+------------------------------------------------------------------------
+r2334 | zimmerma | 2003-06-13 15:19:12 +0000 (Fri, 13 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+moved disabled test to "special" code
+
+------------------------------------------------------------------------
+r2333 | zimmerma | 2003-06-13 11:50:07 +0000 (Fri, 13 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added reference to Higham
+
+------------------------------------------------------------------------
+r2332 | zimmerma | 2003-06-13 08:22:53 +0000 (Fri, 13 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/erf.c
+ M /trunk/exp.c
+
+improved error analysis on erf
+
+------------------------------------------------------------------------
+r2331 | zimmerma | 2003-06-13 07:52:01 +0000 (Fri, 13 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+improved indentation
+
+------------------------------------------------------------------------
+r2330 | zimmerma | 2003-06-12 16:29:34 +0000 (Thu, 12 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+added support for random see
+(when env. variable GMP_CHECK_RANDOMIZE set)
+
+------------------------------------------------------------------------
+r2329 | vlefevre | 2003-06-12 16:13:49 +0000 (Thu, 12 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/terf.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+Replaced misc random functions by GMP ones.
+
+------------------------------------------------------------------------
+r2328 | vlefevre | 2003-06-12 13:52:56 +0000 (Thu, 12 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tests.c
+
+Added function randlimb().
+
+------------------------------------------------------------------------
+r2327 | vlefevre | 2003-06-12 11:37:31 +0000 (Thu, 12 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/erf.c
+
+Fixed a few bugs concerning special values, code simplified.
+
+------------------------------------------------------------------------
+r2326 | zimmerma | 2003-06-12 09:10:34 +0000 (Thu, 12 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/algorithms.tex
+ A /trunk/erf.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/terf.c
+
+added error function
+
+------------------------------------------------------------------------
+r2325 | vlefevre | 2003-06-11 23:38:43 +0000 (Wed, 11 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+Make x positive + some minor changes.
+
+------------------------------------------------------------------------
+r2324 | vlefevre | 2003-06-11 23:31:05 +0000 (Wed, 11 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+New version written by Torbjorn Granlund.
+
+------------------------------------------------------------------------
+r2323 | zimmerma | 2003-06-10 15:24:16 +0000 (Tue, 10 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+updated formular for erf
+added url for Abramowitz & Stegun
+
+------------------------------------------------------------------------
+r2322 | vlefevre | 2003-06-10 13:22:52 +0000 (Tue, 10 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Added a comment concerning NO_MATH_DEFS.
+
+------------------------------------------------------------------------
+r2321 | zimmerma | 2003-06-10 08:43:05 +0000 (Tue, 10 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+made test faster
+
+------------------------------------------------------------------------
+r2320 | zimmerma | 2003-06-10 08:41:47 +0000 (Tue, 10 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+reduced test time
+
+------------------------------------------------------------------------
+r2319 | zimmerma | 2003-06-10 08:38:54 +0000 (Tue, 10 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+reduced time of test
+
+------------------------------------------------------------------------
+r2318 | zimmerma | 2003-06-10 08:20:21 +0000 (Tue, 10 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tfrac.c
+
+reduced time
+
+------------------------------------------------------------------------
+r2317 | ryde | 2003-06-09 22:48:18 +0000 (Mon, 09 Jun 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+Patch by Torbjorn: use puts not putchar, to avoid GNUPro compiler bug.
+
+------------------------------------------------------------------------
+r2316 | ryde | 2003-06-08 23:56:47 +0000 (Sun, 08 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+Disable "8093416094703476*2^(-1075)" because mips64
+SGI cc doesn't seem to like the value (a denorm).
+
+------------------------------------------------------------------------
+r2315 | ryde | 2003-06-08 22:44:59 +0000 (Sun, 08 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Include <stddef.h> before <math.h>, to avoid problems with
+gcc 3.2 on hppa2.0w-hp-hpux11.11.
+
+------------------------------------------------------------------------
+r2314 | ryde | 2003-06-08 22:35:03 +0000 (Sun, 08 Jun 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+(random): Remove prototype, since it conflicts with
+stdlib.h on osf4.
+
+------------------------------------------------------------------------
+r2313 | vlefevre | 2003-05-28 14:04:50 +0000 (Wed, 28 May 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tzeta.c
+
+Added prototypes of non-standard functions that weren't always defined.
+
+------------------------------------------------------------------------
+r2312 | vlefevre | 2003-05-28 08:44:17 +0000 (Wed, 28 May 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+MPFR_EXP_CHECK is now defined when WANT_ASSERT is defined.
+
+------------------------------------------------------------------------
+r2311 | vlefevre | 2003-05-26 20:31:56 +0000 (Mon, 26 May 2003) | 3 lines
+Changed paths:
+ M /trunk/zeta.c
+
+The special case s = 1 is taken into account (the previous code
+seemed to work, but perhaps not for rigorous reasons).
+
+------------------------------------------------------------------------
+r2310 | vlefevre | 2003-05-26 20:31:38 +0000 (Mon, 26 May 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+Added test for case s = 1.
+
+------------------------------------------------------------------------
+r2309 | vlefevre | 2003-05-26 15:34:17 +0000 (Mon, 26 May 2003) | 3 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+(mpfr_round_prec): Bug fixed (case zero wasn't taken into account)
+and 'assertion failed' avoided.
+
+------------------------------------------------------------------------
+r2308 | vlefevre | 2003-05-26 15:20:27 +0000 (Mon, 26 May 2003) | 2 lines
+Changed paths:
+ M /trunk/add_one_ulp.c
+ M /trunk/div_ui.c
+ M /trunk/sub_one_ulp.c
+
+Update related to MPFR_GET_EXP and MPFR_SET_EXP.
+
+------------------------------------------------------------------------
+r2307 | vlefevre | 2003-05-26 14:46:42 +0000 (Mon, 26 May 2003) | 2 lines
+Changed paths:
+ M /trunk/rint.c
+
+MPFR_GET_EXP (r) -> exp.
+
+------------------------------------------------------------------------
+r2306 | vlefevre | 2003-05-26 13:20:54 +0000 (Mon, 26 May 2003) | 2 lines
+Changed paths:
+ M /trunk/swap.c
+
+Function mpfr_swap rewritten using memcpy.
+
+------------------------------------------------------------------------
+r2305 | vlefevre | 2003-05-26 12:03:59 +0000 (Mon, 26 May 2003) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+Updates/optimizations related to MPFR_GET_EXP and MPFR_SET_EXP.
+
+------------------------------------------------------------------------
+r2304 | vlefevre | 2003-05-26 11:47:04 +0000 (Mon, 26 May 2003) | 2 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+
+Updates/optimizations related to MPFR_GET_EXP and MPFR_SET_EXP.
+
+------------------------------------------------------------------------
+r2303 | vlefevre | 2003-05-23 10:28:12 +0000 (Fri, 23 May 2003) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+
+Code clean-up. Assertion failed avoided.
+
+------------------------------------------------------------------------
+r2302 | vlefevre | 2003-05-22 22:11:01 +0000 (Thu, 22 May 2003) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2301 | vlefevre | 2003-05-22 21:39:40 +0000 (Thu, 22 May 2003) | 8 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/div.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/eq.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/frac.c
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_exp.c
+ M /trunk/get_ld.c
+ M /trunk/get_si.c
+ M /trunk/get_str.c
+ M /trunk/get_ui.c
+ M /trunk/get_z_exp.c
+ M /trunk/hypot.c
+ M /trunk/isinteger.c
+ M /trunk/log.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/next.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_exp.c
+ M /trunk/set_f.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+Macros MPFR_EXP_INVALID (invalid exponent value) and MPFR_EXP_CHECK
+added. Code update to use MPFR_GET_EXP and MPFR_SET_EXP instead of
+MPFR_EXP to allow more bug detection related to special values.
+Macros MPFR_SET_NAN, MPFR_SET_INF, MPFR_SET_ZERO and MPFR_INIT set
+the exponent of the number to MPFR_EXP_INVALID if MPFR_EXP_CHECK
+is defined. Compile with -DMPFR_EXP_CHECK and make check to see
+the potential problems; currently, 40 of 76 tests fail.
+
+------------------------------------------------------------------------
+r2300 | vlefevre | 2003-05-21 15:16:49 +0000 (Wed, 21 May 2003) | 2 lines
+Changed paths:
+ M /trunk/pow_ui.c
+ M /trunk/tests/tacos.c
+
+#include "gmp-impl.h" added.
+
+------------------------------------------------------------------------
+r2299 | vlefevre | 2003-05-21 14:49:03 +0000 (Wed, 21 May 2003) | 5 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+MPFR_ASSERTD: use MPFR_ASSERTN instead of ASSERT_ALWAYS so that
+it can be used as an expression.
+New macros MPFR_GET_EXP and MPFR_SET_EXP (they should almost
+completely replace MPFR_EXP).
+
+------------------------------------------------------------------------
+r2298 | zimmerma | 2003-05-19 15:04:20 +0000 (Mon, 19 May 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/teq.c
+
+added test 'special'
+
+------------------------------------------------------------------------
+r2297 | zimmerma | 2003-05-19 15:03:11 +0000 (Mon, 19 May 2003) | 2 lines
+Changed paths:
+ M /trunk/eq.c
+
+fixed bug when n_bits larger than size*BITS_PER_MP_LIMB
+
+------------------------------------------------------------------------
+r2296 | vlefevre | 2003-05-18 00:11:11 +0000 (Sun, 18 May 2003) | 2 lines
+Changed paths:
+ M /trunk/eq.c
+
+Bugs fixed (special cases).
+
+------------------------------------------------------------------------
+r2295 | zimmerma | 2003-05-13 16:02:44 +0000 (Tue, 13 May 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+removed dummy test tdump
+
+------------------------------------------------------------------------
+r2294 | zimmerma | 2003-05-13 16:00:44 +0000 (Tue, 13 May 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+compatibility with mpf is done
+
+------------------------------------------------------------------------
+r2293 | zimmerma | 2003-05-13 15:52:30 +0000 (Tue, 13 May 2003) | 3 lines
+Changed paths:
+ M /trunk/cmp_d.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr.texi
+
+updated mpfr_cmp_d
+added mpfr_cmp_d in mpf2mpfr.h and mpfr.texi
+
+------------------------------------------------------------------------
+r2292 | hanrot | 2003-05-13 15:03:49 +0000 (Tue, 13 May 2003) | 2 lines
+Changed paths:
+ A /trunk/cmp_d.c
+ A /trunk/tests/tcmp_d.c
+
+Added cmp_d.c, tcmp_d.c.
+
+------------------------------------------------------------------------
+r2291 | hanrot | 2003-05-13 15:03:07 +0000 (Tue, 13 May 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/mpf_compat.h
+
+Added cmp_d/tcmp_d.
+
+------------------------------------------------------------------------
+r2290 | zimmerma | 2003-04-11 10:08:39 +0000 (Fri, 11 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/zeta.c
+
+moved test for NaN/Inf
+
+------------------------------------------------------------------------
+r2289 | zimmerma | 2003-04-11 09:54:23 +0000 (Fri, 11 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+added Riemann Zeta function (contribution from Jean-Luc Re'my)
+
+------------------------------------------------------------------------
+r2288 | ryde | 2003-04-08 23:50:59 +0000 (Tue, 08 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Move macros down below @copying.
+
+------------------------------------------------------------------------
+r2287 | ryde | 2003-04-08 23:43:51 +0000 (Tue, 08 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Add @: after various abbreviations.
+
+------------------------------------------------------------------------
+r2286 | zimmerma | 2003-04-01 11:49:34 +0000 (Tue, 01 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+fixed pb with count_leading_zeros (n=0)
+
+------------------------------------------------------------------------
+r2285 | zimmerma | 2003-04-01 10:39:48 +0000 (Tue, 01 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added test for bug found by Franky Backeljauw
+
+------------------------------------------------------------------------
+r2284 | zimmerma | 2003-04-01 10:39:14 +0000 (Tue, 01 Apr 2003) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+fixed bug found by Franky
+
+------------------------------------------------------------------------
+r2283 | vlefevre | 2003-03-28 12:56:46 +0000 (Fri, 28 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+
+Added some asserts.
+
+------------------------------------------------------------------------
+r2282 | zimmerma | 2003-03-28 09:22:37 +0000 (Fri, 28 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tconst_pi.c
+
+fixed pb found by Will Galway <galway@pims.math.ca> (continued)
+
+------------------------------------------------------------------------
+r2281 | hanrot | 2003-03-28 09:13:19 +0000 (Fri, 28 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+ M /trunk/tests/tconst_pi.c
+
+Patches from W. Galway.
+
+------------------------------------------------------------------------
+r2280 | zimmerma | 2003-03-28 08:40:59 +0000 (Fri, 28 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed reference to Plouffe/Bailey/Borwein formula
+
+------------------------------------------------------------------------
+r2279 | hanrot | 2003-03-27 09:37:37 +0000 (Thu, 27 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/const_pi.c
+
+Credits for the pi formula modified.
+
+------------------------------------------------------------------------
+r2278 | zimmerma | 2003-03-26 10:01:02 +0000 (Wed, 26 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+
+changed back "unsigned char *" to "char *"
+
+------------------------------------------------------------------------
+r2277 | zimmerma | 2003-03-25 09:17:50 +0000 (Tue, 25 Mar 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+
+char * -> const unsigned char * for mpfr_set_str, mpfr_set_str_raw,
+and mpfr_init_set_str
+
+------------------------------------------------------------------------
+r2276 | zimmerma | 2003-03-24 13:24:54 +0000 (Mon, 24 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+removed unused variable
+
+------------------------------------------------------------------------
+r2275 | zimmerma | 2003-03-18 10:55:37 +0000 (Tue, 18 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed documentation bug in mpfr_log2 (exact results)
+
+------------------------------------------------------------------------
+r2274 | zimmerma | 2003-03-18 09:05:42 +0000 (Tue, 18 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+changed new test in 'check4' style
+
+------------------------------------------------------------------------
+r2273 | vlefevre | 2003-03-17 02:08:03 +0000 (Mon, 17 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/mpfr.texi
+
+Update concerning underflow problems.
+
+------------------------------------------------------------------------
+r2272 | ryde | 2003-03-17 00:20:46 +0000 (Mon, 17 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+(main): Comment out underflows(), until it works.
+
+------------------------------------------------------------------------
+r2271 | ryde | 2003-03-17 00:04:41 +0000 (Mon, 17 Mar 2003) | 3 lines
+Changed paths:
+ M /trunk/get_z_exp.c
+
+Comment out an assert tickled for an f with exponent
+near MPFR_EMIN_MIN.
+
+------------------------------------------------------------------------
+r2270 | ryde | 2003-03-16 23:32:38 +0000 (Sun, 16 Mar 2003) | 7 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+(LONGDOUBLE_NAN_ACTION): New version for IEEE quad big
+endian, fixing HP cc.
+(WANT_LONGDOUBLE_VOLATILE): New define for when LONGDOUBLE_VOLATILE is
+wanted.
+(WANT_GMPFR_LONGDOUBLE_VOLATILE): New define for when
+__gmpfr_longdouble_volatile is wanted.
+
+------------------------------------------------------------------------
+r2269 | ryde | 2003-03-16 23:32:05 +0000 (Sun, 16 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/volatile.c
+
+Use WANT_GMPFR_LONGDOUBLE_VOLATILE.
+
+------------------------------------------------------------------------
+r2268 | ryde | 2003-03-16 23:29:27 +0000 (Sun, 16 Mar 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_C_LONG_DOUBLE_FORMAT): Add IEEE quad big endian,
+check long double exists before testing.
+
+------------------------------------------------------------------------
+r2267 | vlefevre | 2003-03-14 11:55:34 +0000 (Fri, 14 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Added underflow test showing a bug in mpfr_pow.
+
+------------------------------------------------------------------------
+r2266 | zimmerma | 2003-03-14 08:22:36 +0000 (Fri, 14 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+fixed bug for x=1
+
+------------------------------------------------------------------------
+r2265 | vlefevre | 2003-03-14 01:50:48 +0000 (Fri, 14 Mar 2003) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/pow.c
+
+This wasn't a compiler bug; mpfr_pow is really buggy.
+Added some asserts to show that.
+
+------------------------------------------------------------------------
+r2264 | vlefevre | 2003-03-14 01:12:44 +0000 (Fri, 14 Mar 2003) | 5 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/tests/tpow.c
+
+The infinite loop concerning 1^0.5 was probably due to a bug in the
+compiler [cc (GCC) 3.2.3 20030309 (Debian prerelease)]: adding some
+printf's changes the values of the variables and the correct result
+is returned.
+
+------------------------------------------------------------------------
+r2263 | zimmerma | 2003-03-13 17:11:52 +0000 (Thu, 13 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+fixed sign problem in particular_cases()
+
+------------------------------------------------------------------------
+r2262 | zimmerma | 2003-03-13 17:10:45 +0000 (Thu, 13 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+declared mpfr_ui_pow_is_exact as static
+
+------------------------------------------------------------------------
+r2261 | zimmerma | 2003-03-13 17:10:02 +0000 (Thu, 13 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+
+gnu-style
+
+------------------------------------------------------------------------
+r2260 | vlefevre | 2003-03-13 00:26:48 +0000 (Thu, 13 Mar 2003) | 4 lines
+Changed paths:
+ M /trunk/tests/tpow3.c
+
+Removed some useless and inaccurate tests on NaN, infinities, zeros
+(as the behavior of mpfr_pow on such particular cases has changed);
+similar tests were added to "tests/tpow.c".
+
+------------------------------------------------------------------------
+r2259 | vlefevre | 2003-03-13 00:15:19 +0000 (Thu, 13 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/tests/tpow.c
+
+Test of mpfr_pow: particular cases. Bugs.
+
+------------------------------------------------------------------------
+r2258 | vlefevre | 2003-03-12 18:19:59 +0000 (Wed, 12 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tpow3.c
+
+Special cases for mpfr_pow().
+
+------------------------------------------------------------------------
+r2257 | zimmerma | 2003-03-11 17:32:46 +0000 (Tue, 11 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+when stream=NULL, use stdout (as indicated in the documentation)
+
+------------------------------------------------------------------------
+r2256 | vlefevre | 2003-03-03 06:04:29 +0000 (Mon, 03 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+mpfr_sin_sign -> static.
+
+------------------------------------------------------------------------
+r2255 | vlefevre | 2003-03-03 06:03:24 +0000 (Mon, 03 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Useless declaration removed.
+
+------------------------------------------------------------------------
+r2254 | vlefevre | 2003-03-03 05:51:30 +0000 (Mon, 03 Mar 2003) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+Special cases for mpfr_pow: like Section F.9.4.4 of the
+ISO C99 standard.
+
+------------------------------------------------------------------------
+r2253 | vlefevre | 2003-03-03 05:14:18 +0000 (Mon, 03 Mar 2003) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Prototype fixed.
+
+------------------------------------------------------------------------
+r2252 | vlefevre | 2003-02-27 10:20:34 +0000 (Thu, 27 Feb 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+ M /trunk/tests/tset_str.c
+
+mpfr_set_str now accepts a binary exponent for base 16
+(as defined by the ISO C99 standard).
+
+------------------------------------------------------------------------
+r2251 | vlefevre | 2003-02-27 05:32:01 +0000 (Thu, 27 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Comment concerning the installation of MPFR: done.
+
+------------------------------------------------------------------------
+r2250 | vlefevre | 2003-02-27 05:18:56 +0000 (Thu, 27 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/mpfr.texi
+
+New recommendation to install MPFR.
+
+------------------------------------------------------------------------
+r2249 | hanrot | 2003-02-24 12:32:56 +0000 (Mon, 24 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/dump.c
+ M /trunk/get_str.c
+ M /trunk/out_str.c
+ M /trunk/print_raw.c
+ M /trunk/set_str.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tset_str.c
+
+Replaced NaN, Inf by @NaN@, @Inf@ [for bases > 24].
+
+------------------------------------------------------------------------
+r2248 | zimmerma | 2003-02-21 15:06:24 +0000 (Fri, 21 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+added one test
+
+------------------------------------------------------------------------
+r2247 | vlefevre | 2003-02-21 15:04:06 +0000 (Fri, 21 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/get_ui.c
+
+Fixed cast (though unnecessary).
+
+------------------------------------------------------------------------
+r2246 | zimmerma | 2003-02-21 13:07:46 +0000 (Fri, 21 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one test
+
+------------------------------------------------------------------------
+r2245 | zimmerma | 2003-02-13 15:31:51 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added mpf_compat, mpfr_compat
+
+------------------------------------------------------------------------
+r2244 | zimmerma | 2003-02-13 15:30:41 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ A /trunk/tests/mpf_compat.c
+ A /trunk/tests/mpf_compat.h
+ A /trunk/tests/mpfr_compat.c
+
+test files for mpf-mpfr compatibility
+
+------------------------------------------------------------------------
+r2243 | zimmerma | 2003-02-13 15:29:27 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+added mpfr_init_set_str
+
+------------------------------------------------------------------------
+r2242 | zimmerma | 2003-02-13 14:50:37 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added "const" to char* arg. of mpfr_init_set_str
+
+------------------------------------------------------------------------
+r2241 | zimmerma | 2003-02-13 14:49:47 +0000 (Thu, 13 Feb 2003) | 3 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+added macros for new mpfr functions
+changed some old macros
+
+------------------------------------------------------------------------
+r2240 | zimmerma | 2003-02-13 08:57:19 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/frac.c
+ M /trunk/isinteger.c
+ M /trunk/log10.c
+ M /trunk/pow.c
+ M /trunk/tests/tpow3.c
+
+mpfr_isinteger -> mpfr_integer_p
+
+------------------------------------------------------------------------
+r2239 | zimmerma | 2003-02-13 08:56:34 +0000 (Thu, 13 Feb 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+document new functions (fits_*, get_ui, get_si, get_d_2exp)
+added integer_p that was not documented
+
+------------------------------------------------------------------------
+r2238 | zimmerma | 2003-02-13 08:55:23 +0000 (Thu, 13 Feb 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr_isinteger -> mpfr_integer_p
+new functions: mpfr_fits_*, mpfr_get_ui, mpfr_get_si, mpfr_get_d_2exp
+
+------------------------------------------------------------------------
+r2237 | zimmerma | 2003-02-13 08:53:54 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+added mpfr_get_d_2exp
+
+------------------------------------------------------------------------
+r2236 | zimmerma | 2003-02-13 08:52:15 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+new functions mpfr_fits_* and mpfr_get_ui/si
+
+------------------------------------------------------------------------
+r2235 | zimmerma | 2003-02-13 08:51:29 +0000 (Thu, 13 Feb 2003) | 2 lines
+Changed paths:
+ A /trunk/fits_s.h
+ A /trunk/fits_sint.c
+ A /trunk/fits_slong.c
+ A /trunk/fits_sshort.c
+ A /trunk/fits_u.h
+ A /trunk/fits_uint.c
+ A /trunk/fits_ulong.c
+ A /trunk/fits_ushort.c
+ A /trunk/get_si.c
+ A /trunk/get_ui.c
+
+new functions mpfr_fits_* and mpfr_get_[us]i
+
+------------------------------------------------------------------------
+r2234 | zimmerma | 2003-01-27 10:13:37 +0000 (Mon, 27 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+check for +/-0.0 after variable set to NaN
+
+------------------------------------------------------------------------
+r2233 | vlefevre | 2003-01-25 02:44:06 +0000 (Sat, 25 Jan 2003) | 4 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Suppressed the underscores of AC_CHECK_LIBM in comments, otherwise
+aclocal 1.4-p6 includes libtool code in aclocal.m4 and this leads
+to compilation problems.
+
+------------------------------------------------------------------------
+r2232 | ryde | 2003-01-25 00:44:05 +0000 (Sat, 25 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+(_MPFR_H_HAVE_FILE): Copy FILE define tests from gmp.h, adds
+Borland, Microsoft and Apple MPW.
+
+------------------------------------------------------------------------
+r2231 | ryde | 2003-01-25 00:28:59 +0000 (Sat, 25 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+(libmpfr_a_SOURCES): Add volatile.c.
+
+------------------------------------------------------------------------
+r2230 | ryde | 2003-01-25 00:28:30 +0000 (Sat, 25 Jan 2003) | 2 lines
+Changed paths:
+ A /trunk/volatile.c
+
+New file.
+
+------------------------------------------------------------------------
+r2229 | ryde | 2003-01-25 00:28:04 +0000 (Sat, 25 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+(Isnan_ld): New function based on LONGDOUBLE_NAN_ACTION, use it
+instead of LONGDOUBLE_ISNAN.
+
+------------------------------------------------------------------------
+r2228 | ryde | 2003-01-25 00:21:21 +0000 (Sat, 25 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+(LONGDOUBLE_ISNAN): Remove.
+
+------------------------------------------------------------------------
+r2227 | ryde | 2003-01-25 00:21:02 +0000 (Sat, 25 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+(LONGDOUBLE_ISNAN): Remove this, use LONGDOUBLE_NAN_ACTION instead.
+
+------------------------------------------------------------------------
+r2226 | ryde | 2003-01-25 00:20:07 +0000 (Sat, 25 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+(LONGDOUBLE_NAN_ACTION): New macro.
+
+------------------------------------------------------------------------
+r2225 | ryde | 2003-01-24 21:47:56 +0000 (Fri, 24 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Allow "e" exponent in base<=10 not <10. Restrict "E"
+exponent to base<=10 too, since digits are not case sensitive.
+
+------------------------------------------------------------------------
+r2224 | vlefevre | 2003-01-24 19:08:07 +0000 (Fri, 24 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+
+Prototypes: use static. Some code reformatting.
+
+------------------------------------------------------------------------
+r2223 | vlefevre | 2003-01-24 16:49:54 +0000 (Fri, 24 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+The sign wasn't set when the result was zero.
+
+------------------------------------------------------------------------
+r2222 | ryde | 2003-01-24 16:17:04 +0000 (Fri, 24 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Reject "", "+" and "-", also fixing an attempt to allocate a 0 length
+block in these cases.
+
+------------------------------------------------------------------------
+r2221 | ryde | 2003-01-24 16:03:35 +0000 (Fri, 24 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Clear NAN and INF flags when setting result to zero.
+
+------------------------------------------------------------------------
+r2220 | vlefevre | 2003-01-24 11:29:42 +0000 (Fri, 24 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/tui_sub.c
+
+Fixed prototypes (use static...).
+
+------------------------------------------------------------------------
+r2219 | vlefevre | 2003-01-24 11:28:34 +0000 (Fri, 24 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tcbrt.c
+
+Missing #include.
+
+------------------------------------------------------------------------
+r2218 | zimmerma | 2003-01-23 13:16:00 +0000 (Thu, 23 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+workaround for gcc bug on m68040-unknown-netbsd1.4.1
+
+------------------------------------------------------------------------
+r2217 | zimmerma | 2003-01-23 12:41:31 +0000 (Thu, 23 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+added cast to double
+
+------------------------------------------------------------------------
+r2216 | ryde | 2003-01-23 00:00:29 +0000 (Thu, 23 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Use mpfr_set_nan and mpfr_set_inf for NaN and Inf tests,
+not "double" nans and infs.
+
+------------------------------------------------------------------------
+r2215 | ryde | 2003-01-22 23:40:43 +0000 (Wed, 22 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+Use mpfr_set_nan and mpfr_set_inf for NaN and Inf tests,
+not "double" nans and infs.
+
+------------------------------------------------------------------------
+r2214 | ryde | 2003-01-22 23:32:19 +0000 (Wed, 22 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_sub.c
+
+Use mpfr_set_nan and mpfr_set_inf for NaN and Inf tests,
+not "double" nans and infs.
+
+------------------------------------------------------------------------
+r2213 | ryde | 2003-01-22 22:59:46 +0000 (Wed, 22 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tgamma.c
+
+Use tests_start_mpfr / tests_end_mpfr.
+
+------------------------------------------------------------------------
+r2212 | ryde | 2003-01-22 22:39:38 +0000 (Wed, 22 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tcbrt.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tzeta.c
+
+Use tests_start_mpfr / tests_end_mpfr.
+
+------------------------------------------------------------------------
+r2211 | ryde | 2003-01-22 22:34:54 +0000 (Wed, 22 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+Use tests_start_mpfr / tests_end_mpfr.
+(check_large): Use __gmp_free_func to free mpfr_get_str result.
+
+------------------------------------------------------------------------
+r2210 | ryde | 2003-01-22 22:27:46 +0000 (Wed, 22 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+Use mpfr_set_nan and mpfr_set_inf for NaN and Inf tests,
+not "double" nans and infs. Use tests_start_mpfr / tests_end_mpfr.
+
+------------------------------------------------------------------------
+r2209 | ryde | 2003-01-22 22:24:50 +0000 (Wed, 22 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+Use mpfr_set_nan and mpfr_set_inf for NaN and Inf tests,
+not "double" nans and infs.
+
+------------------------------------------------------------------------
+r2208 | ryde | 2003-01-22 22:18:09 +0000 (Wed, 22 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+Remove tests involving "double" nans and infs, covered by check_nan.
+
+------------------------------------------------------------------------
+r2207 | ryde | 2003-01-22 22:15:49 +0000 (Wed, 22 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/ttan.c
+
+Use mpfr_set_nan and mpfr_set_inf for NaN and Inf tests,
+not "double" nans and infs.
+
+------------------------------------------------------------------------
+r2206 | ryde | 2003-01-18 00:31:30 +0000 (Sat, 18 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Move log_b2.h from include_HEADERS to libmpfr_a_SOURCES, it doesn't
+want to be installed.
+
+------------------------------------------------------------------------
+r2205 | ryde | 2003-01-18 00:14:32 +0000 (Sat, 18 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Correction to memory leak fix, need "result" for final rounding.
+
+------------------------------------------------------------------------
+r2204 | ryde | 2003-01-17 23:50:10 +0000 (Fri, 17 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Fix two memory leaks.
+
+------------------------------------------------------------------------
+r2203 | ryde | 2003-01-17 23:08:05 +0000 (Fri, 17 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+(LDADD): Add $(MPFR_LIBM).
+
+------------------------------------------------------------------------
+r2202 | ryde | 2003-01-17 23:00:42 +0000 (Fri, 17 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Remove -lm setups, now handled by MPFR_CHECK_LIBM.
+
+------------------------------------------------------------------------
+r2201 | ryde | 2003-01-17 22:59:51 +0000 (Fri, 17 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_CHECK_LIBM): New macro.
+(MPFR_CONFIGS): Use it.
+
+------------------------------------------------------------------------
+r2200 | zimmerma | 2003-01-17 14:59:48 +0000 (Fri, 17 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/NEWS
+ M /trunk/README
+ M /trunk/TODO
+ M /trunk/acinclude.m4
+
+added copyright notices and license statements
+
+------------------------------------------------------------------------
+r2199 | zimmerma | 2003-01-17 08:58:45 +0000 (Fri, 17 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+now use __gmpfr_floor_log2 instead of floor/log to get rid of math.h
+
+------------------------------------------------------------------------
+r2198 | zimmerma | 2003-01-17 08:52:49 +0000 (Fri, 17 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+removed unused function dagm(), and get rid of math.h
+added tests for NaN, Inf's
+
+------------------------------------------------------------------------
+r2197 | vlefevre | 2003-01-17 00:55:13 +0000 (Fri, 17 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Re-added $OBJEXT, using AC_REQUIRE([AC_OBJEXT]) for old autoconf.
+
+------------------------------------------------------------------------
+r2196 | zimmerma | 2003-01-16 17:46:17 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+put back math.h
+
+------------------------------------------------------------------------
+r2195 | zimmerma | 2003-01-16 17:44:13 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+added back math.h (for sqrt)
+
+------------------------------------------------------------------------
+r2194 | zimmerma | 2003-01-16 17:32:19 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added log_b2.h in include_HEADERS
+
+------------------------------------------------------------------------
+r2193 | zimmerma | 2003-01-16 17:28:18 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tsin_cos
+
+------------------------------------------------------------------------
+r2192 | zimmerma | 2003-01-16 17:23:25 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added #ifdef HAVE_DENORMS for denormalized test
+
+------------------------------------------------------------------------
+r2191 | zimmerma | 2003-01-16 17:18:07 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tsub.c
+
+removed math.h
+
+------------------------------------------------------------------------
+r2190 | zimmerma | 2003-01-16 17:13:43 +0000 (Thu, 16 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+
+added year 2003 in copyright line
+removed math.h
+
+------------------------------------------------------------------------
+r2189 | zimmerma | 2003-01-16 17:01:07 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+added 2003, removed math.h
+
+------------------------------------------------------------------------
+r2188 | zimmerma | 2003-01-16 16:58:56 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/memory.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tset_str.c
+
+added 2003
+
+------------------------------------------------------------------------
+r2187 | zimmerma | 2003-01-16 16:57:37 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+ M /trunk/tests/trandom.c
+
+removed math.h
+
+------------------------------------------------------------------------
+r2186 | zimmerma | 2003-01-16 16:52:51 +0000 (Thu, 16 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added year 2003
+removed math.h
+
+------------------------------------------------------------------------
+r2185 | zimmerma | 2003-01-16 16:40:46 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+patch for compiler bug on hppa2.0w-hp-hpux11.11
+
+------------------------------------------------------------------------
+r2184 | vlefevre | 2003-01-16 16:33:05 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Macro LONGDOUBLE_ISNAN wasn't defined.
+
+------------------------------------------------------------------------
+r2183 | zimmerma | 2003-01-16 16:04:04 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+now always define Isnan
+
+------------------------------------------------------------------------
+r2182 | zimmerma | 2003-01-16 16:03:34 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+moved LONGDOUBLE_ISNAN to mpfr-test.h
+
+------------------------------------------------------------------------
+r2181 | zimmerma | 2003-01-16 16:03:04 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+removed check from isnan
+
+------------------------------------------------------------------------
+r2180 | zimmerma | 2003-01-16 16:01:55 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tests.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_ld.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+replaced isnan() by Isnan()
+
+------------------------------------------------------------------------
+r2179 | vlefevre | 2003-01-16 13:58:55 +0000 (Thu, 16 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+AC_PREREQ(2.50) added (useful when both autoconf 2.13 and autoconf
+2.50 are installed, with a wrapper to select the required version).
+
+------------------------------------------------------------------------
+r2178 | vlefevre | 2003-01-16 13:30:03 +0000 (Thu, 16 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Comment in mpfr_test_init: s/preprocessor/compiler/.
+
+------------------------------------------------------------------------
+r2177 | zimmerma | 2003-01-16 13:26:53 +0000 (Thu, 16 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+fixed pb in mpfr_test_init with the compiler optimizing too much
+(this happened on Alpha with -O1 or higher)
+
+------------------------------------------------------------------------
+r2176 | vlefevre | 2003-01-15 20:43:58 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+Standard prototype only. Particular cases added.
+
+------------------------------------------------------------------------
+r2175 | zimmerma | 2003-01-15 17:29:10 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/set_str.c
+
+moved common prototype for mpn_exp in mpfr-impl.h
+
+------------------------------------------------------------------------
+r2174 | zimmerma | 2003-01-15 17:28:33 +0000 (Wed, 15 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+removed spurious ; after MPFR_ESIZE
+added prototype for mpn_exp
+
+------------------------------------------------------------------------
+r2173 | zimmerma | 2003-01-15 17:17:17 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed items done
+
+------------------------------------------------------------------------
+r2172 | zimmerma | 2003-01-15 17:14:32 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+new tests from Alain Delplanque
+
+------------------------------------------------------------------------
+r2171 | zimmerma | 2003-01-15 17:13:50 +0000 (Wed, 15 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/set_str.c
+
+new version using mpn_set_str
+[written by Alain Delplanque, edited by Paul Zimmermann]
+
+------------------------------------------------------------------------
+r2170 | vlefevre | 2003-01-15 13:05:06 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Replace $OBJEXT by o (as $OBJEXT isn't defined everywhere).
+
+------------------------------------------------------------------------
+r2169 | vlefevre | 2003-01-15 12:50:13 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+A ` must be quoted to avoid an error with Autoconf 2.13.
+
+------------------------------------------------------------------------
+r2168 | vlefevre | 2003-01-15 11:40:35 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Use type mp_prec_t for precisions.
+
+------------------------------------------------------------------------
+r2167 | vlefevre | 2003-01-15 11:29:46 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Source re-indented.
+
+------------------------------------------------------------------------
+r2166 | vlefevre | 2003-01-15 11:22:26 +0000 (Wed, 15 Jan 2003) | 4 lines
+Changed paths:
+ M /trunk/gamma.c
+
+Several bugs fixed concerning the particular cases.
+<stdio.h> and <stdlib.h> not included by default.
+int mpfr_gamma _PROTO ... removed (was useless).
+
+------------------------------------------------------------------------
+r2165 | zimmerma | 2003-01-15 09:54:12 +0000 (Wed, 15 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+
+get rid of ceil() call, that requires -lm
+
+------------------------------------------------------------------------
+r2164 | ryde | 2003-01-14 23:02:26 +0000 (Tue, 14 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+Force LDBL_MANT_DIG on IEEE extended, to avoid problems with
+some i386 gcc.
+
+------------------------------------------------------------------------
+r2163 | ryde | 2003-01-14 22:48:03 +0000 (Tue, 14 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Avoid problems with bad LDBL_MAX and LDBL_MANT_DIG on some i386 gcc.
+
+------------------------------------------------------------------------
+r2162 | ryde | 2003-01-14 22:43:24 +0000 (Tue, 14 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_C_LONG_DOUBLE_FORMAT): New macro.
+(MPFR_CONFIGS): Use it.
+
+------------------------------------------------------------------------
+r2161 | vlefevre | 2003-01-11 19:32:47 +0000 (Sat, 11 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/memory.c
+
+Required casts added (and switch from uint to ulong);
+in particular, useful on Alpha.
+
+------------------------------------------------------------------------
+r2160 | ryde | 2003-01-10 21:42:53 +0000 (Fri, 10 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/get_ld.c
+ M /trunk/set_ld.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+
+# Add a copyright year.
+
+------------------------------------------------------------------------
+r2159 | ryde | 2003-01-10 21:31:31 +0000 (Fri, 10 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+Tolerate empty argv[1], which can arise from ancient bash executing
+the libtool shared library wrapper script.
+
+------------------------------------------------------------------------
+r2158 | ryde | 2003-01-10 20:59:19 +0000 (Fri, 10 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tconst_pi.c
+
+Tolerate empty argv[1], which can arise from ancient bash executing
+the libtool shared library wrapper script.
+
+------------------------------------------------------------------------
+r2157 | ryde | 2003-01-10 15:39:03 +0000 (Fri, 10 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+Avoid unnecessary extra power of 2 squaring, so as not to provoke an
+overflow exception when result is in range.
+
+------------------------------------------------------------------------
+r2156 | vlefevre | 2003-01-10 13:41:42 +0000 (Fri, 10 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+Extended precision detection fixed.
+
+------------------------------------------------------------------------
+r2155 | zimmerma | 2003-01-09 14:06:37 +0000 (Thu, 09 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+fixed possible overflow when EXP=1024
+
+------------------------------------------------------------------------
+r2154 | zimmerma | 2003-01-09 14:05:30 +0000 (Thu, 09 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+rewritten to avoid overflows
+
+------------------------------------------------------------------------
+r2153 | zimmerma | 2003-01-09 09:56:04 +0000 (Thu, 09 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added one test
+
+------------------------------------------------------------------------
+r2152 | ryde | 2003-01-08 23:14:50 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tests.c
+ M /trunk/tests/tset_ld.c
+
+# Add a copyright year.
+
+------------------------------------------------------------------------
+r2151 | ryde | 2003-01-08 23:09:51 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr-test.h
+
+#Add a copyright year.
+
+------------------------------------------------------------------------
+r2150 | ryde | 2003-01-08 23:04:40 +0000 (Wed, 08 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/get_str.c
+
+(mpn_exp): Don't store -1 in a uint then return it as a long.
+Fixes systems such as alpha where sizeof(uint)!=sizeof(long).
+
+------------------------------------------------------------------------
+r2149 | ryde | 2003-01-08 22:07:59 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(AC_CHECK_HEADERS): Remove fpu_control.h, no longer required.
+
+------------------------------------------------------------------------
+r2148 | ryde | 2003-01-08 21:17:29 +0000 (Wed, 08 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Use tests_machine_prec_long_double.
+Use LDBL_MAX for largest value and to find largest power of 2.
+
+------------------------------------------------------------------------
+r2147 | ryde | 2003-01-08 21:03:01 +0000 (Wed, 08 Jan 2003) | 4 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+(__setfpucw, _FPU_EXTENDED, etc): Remove these setups.
+(tests_machine_prec_double, tests_machine_prec_long_double,
+x86_fstcw, x86_fldcw): Add prototypes.
+
+------------------------------------------------------------------------
+r2146 | ryde | 2003-01-08 21:00:32 +0000 (Wed, 08 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/tests/tests.c
+
+(tests_machine_prec_double, tests_machine_prec_long_double): New functions.
+(mpfr_test_init): Replace __setfpucw with tests_machine_prec_double.
+
+------------------------------------------------------------------------
+r2145 | ryde | 2003-01-08 20:52:04 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(MPFR_CONFIGS): Add tests/x86.asm support.
+
+------------------------------------------------------------------------
+r2144 | ryde | 2003-01-08 20:48:47 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+(X86_PATTERN): New define, supporting acinclude.m4.
+
+------------------------------------------------------------------------
+r2143 | ryde | 2003-01-08 20:43:02 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Add x86.asm support.
+
+------------------------------------------------------------------------
+r2142 | ryde | 2003-01-08 20:35:33 +0000 (Wed, 08 Jan 2003) | 2 lines
+Changed paths:
+ A /trunk/tests/x86.asm
+
+New file.
+
+------------------------------------------------------------------------
+r2141 | zimmerma | 2003-01-07 10:31:43 +0000 (Tue, 07 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+fixed pb for underflow and rounding to nearest
+
+------------------------------------------------------------------------
+r2140 | zimmerma | 2003-01-07 09:25:47 +0000 (Tue, 07 Jan 2003) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/set_ld.c
+
+added macro LONGDOUBLE_ISNAN
+use LONGDOUBLE_ISNAN in set_ld instead of cast to double and DOUBLE_ISNAN
+(did raise exception under freebsd)
+
+------------------------------------------------------------------------
+r2139 | vlefevre | 2003-01-07 01:46:51 +0000 (Tue, 07 Jan 2003) | 4 lines
+Changed paths:
+ M /trunk/exp2.c
+
+Added assertions that can be resolved at compile time: the exponents
+must be representable in a long int (IMHO, this limitation should be
+avoided in a clean way).
+
+------------------------------------------------------------------------
+r2138 | ryde | 2003-01-06 21:56:38 +0000 (Mon, 06 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove mpfr_get_ld, done.
+
+------------------------------------------------------------------------
+r2137 | ryde | 2003-01-06 21:53:01 +0000 (Mon, 06 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove mpfr_set_machine_rnd_mode, done.
+
+------------------------------------------------------------------------
+r2136 | vlefevre | 2003-01-06 21:48:33 +0000 (Mon, 06 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+Bug fix: __mpfr_emax -> __gmpfr_emax.
+
+------------------------------------------------------------------------
+r2135 | ryde | 2003-01-06 21:47:37 +0000 (Mon, 06 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Use separate function calls to second strncasecmp and strncmp
+for consistency and to avoid gcc warnings.
+
+------------------------------------------------------------------------
+r2134 | zimmerma | 2003-01-06 19:28:25 +0000 (Mon, 06 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/tests/texp2.c
+
+fixed infinite loop for 2^integer
+
+------------------------------------------------------------------------
+r2133 | vlefevre | 2003-01-06 10:30:52 +0000 (Mon, 06 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Use digit_value_in_base for the part after the '.'.
+
+------------------------------------------------------------------------
+r2132 | vlefevre | 2003-01-06 10:11:15 +0000 (Mon, 06 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Static function digit_value_in_base is now compatible with any locale.
+
+------------------------------------------------------------------------
+r2131 | ryde | 2003-01-03 23:07:37 +0000 (Fri, 03 Jan 2003) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tests.c
+
+(<sys/fpu.h>) [__mips]: Move from mpfr-test.h to tests/tests.c,
+and conditionalize with HAVE_SYS_FPU_H.
+
+------------------------------------------------------------------------
+r2130 | ryde | 2003-01-03 23:03:35 +0000 (Fri, 03 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(AC_CHECK_HEADERS): Add sys/fpu.h.
+
+------------------------------------------------------------------------
+r2129 | ryde | 2003-01-03 23:02:12 +0000 (Fri, 03 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+(HAVE_DENORMS) [__mips]: Remove this, let the configure test decide.
+
+------------------------------------------------------------------------
+r2128 | ryde | 2003-01-03 21:47:20 +0000 (Fri, 03 Jan 2003) | 4 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Use separate function calls to strncasecmp and strncmp, rather than
+?: on function pointers, since the latter demands declarations not
+present on SunOS. Both forms are optimized the same by gcc.
+
+------------------------------------------------------------------------
+r2127 | vlefevre | 2003-01-03 21:38:33 +0000 (Fri, 03 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Added some potential bugs (mpfr_exp2 is known to have such a bug).
+
+------------------------------------------------------------------------
+r2126 | ryde | 2003-01-02 23:48:32 +0000 (Thu, 02 Jan 2003) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tset_str.c
+
+Add gmp-impl.h for __gmp_free_func.
+
+------------------------------------------------------------------------
+r2125 | vlefevre | 2002-12-16 00:56:03 +0000 (Mon, 16 Dec 2002) | 15 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/factorial.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/get_d.c
+ M /trunk/get_str.c
+ M /trunk/get_z_exp.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/next.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_exp.c
+ M /trunk/set_nan.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tests.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_pow.c
+
+Suppress some #define and fix symbol names (makes code cleaner):
+perl -pi -e 's/__mpfr_flags/__gmpfr_flags/g' **/*.{c,h}
+perl -pi -e 's/__mpfr_emin/__gmpfr_emin/g' **/*.{c,h}
+perl -pi -e 's/__mpfr_emax/__gmpfr_emax/g' **/*.{c,h}
+perl -pi -e 's/__mpfr_default_fp_bit_precision/__gmpfr_default_fp_bit_precision/g' **/*.{c,h}
+perl -pi -e 's/__gmp_default_rounding_mode/__gmpfr_default_rounding_mode/g' **/*.{c,h}
+perl -pi -e 's/__mpfr_const_log2_prec/__gmpfr_const_log2_prec/g' **/*.{c,h}
+perl -pi -e 's/__mpfr_const_pi_prec/__gmpfr_const_pi_prec/g' **/*.{c,h}
+perl -pi -e 's/_mpfr_ceil_log2/__gmpfr_ceil_log2/g' **/*.{c,h}
+perl -pi -e 's/_mpfr_floor_log2/__gmpfr_floor_log2/g' **/*.{c,h}
+perl -pi -e 's/_mpfr_ceil_exp2/__gmpfr_ceil_exp2/g' **/*.{c,h}
+perl -pi -e 's/_mpfr_isqrt/__gmpfr_isqrt/g' **/*.{c,h}
+perl -pi -e 's/_mpfr_cuberoot/__gmpfr_cuberoot/g' **/*.{c,h}
+perl -pi -e 's/^#define __gmpfr_.*\n//' *.h
+
+------------------------------------------------------------------------
+r2124 | vlefevre | 2002-12-13 18:06:58 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2123 | vlefevre | 2002-12-13 18:01:04 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+IEEE 754 / IEEE P754 -> IEEE 754-1985.
+
+------------------------------------------------------------------------
+r2122 | vlefevre | 2002-12-13 11:20:28 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Correction.
+
+------------------------------------------------------------------------
+r2121 | vlefevre | 2002-12-13 11:19:25 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Added a note about the signed zero.
+
+------------------------------------------------------------------------
+r2120 | vlefevre | 2002-12-13 02:35:45 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Assertion re-added.
+
+------------------------------------------------------------------------
+r2119 | vlefevre | 2002-12-13 02:34:50 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/missing
+
+Update for new version of automake/autoconf.
+
+------------------------------------------------------------------------
+r2118 | vlefevre | 2002-12-13 02:23:23 +0000 (Fri, 13 Dec 2002) | 2 lines
+Changed paths:
+ A /trunk/depcomp
+
+depcomp script added for new version of automake.
+
+------------------------------------------------------------------------
+r2117 | ryde | 2002-12-12 22:30:05 +0000 (Thu, 12 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Don't -D define PACKAGE_VERSION etc, to avoid conflict with gmp config.h.
+
+------------------------------------------------------------------------
+r2116 | zimmerma | 2002-12-12 16:41:43 +0000 (Thu, 12 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added paragraph about accuracy
+
+------------------------------------------------------------------------
+r2115 | zimmerma | 2002-12-12 15:32:52 +0000 (Thu, 12 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+rewritten unclear paragraph about precision
+
+------------------------------------------------------------------------
+r2114 | zimmerma | 2002-12-12 14:42:42 +0000 (Thu, 12 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item
+
+------------------------------------------------------------------------
+r2113 | zimmerma | 2002-12-12 14:38:03 +0000 (Thu, 12 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+use MPN_NORMALIZE_NOT_ZERO instead of loop
+
+------------------------------------------------------------------------
+r2112 | vlefevre | 2002-12-11 14:31:28 +0000 (Wed, 11 Dec 2002) | 3 lines
+Changed paths:
+ M /trunk/tests/memory.c
+
+Added #include "mpfr.h" (needed by mpfr-test.h as it uses
+mp_rnd_t in one of the prototypes).
+
+------------------------------------------------------------------------
+r2111 | vlefevre | 2002-12-10 22:23:04 +0000 (Tue, 10 Dec 2002) | 5 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Patch by Torbjorn Granlund <tege@swox.com>: Don't use TMP_ allocation
+mechanism for fixed size objects. Resulting streamlining. Misc
+addressing changes to work around GNUPro bugs.
+Patch by VL: Some other changes in mpfr_set_d.
+
+------------------------------------------------------------------------
+r2110 | vlefevre | 2002-12-07 12:26:11 +0000 (Sat, 07 Dec 2002) | 3 lines
+Changed paths:
+ M /trunk/const_euler.c
+
+(mpfr_const_euler_S, mpfr_const_euler_R)
+Make declaration match prototype (patch by Torbjorn Granlund).
+
+------------------------------------------------------------------------
+r2109 | vlefevre | 2002-12-04 11:22:24 +0000 (Wed, 04 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/config.guess
+ M /trunk/config.sub
+
+Update from ftp://ftp.gnu.org/pub/gnu/config/
+
+------------------------------------------------------------------------
+r2108 | zimmerma | 2002-12-03 13:32:21 +0000 (Tue, 03 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Use @ifnottex/@end iffnotex instead of @ifinfo/@end ifinfo
+
+------------------------------------------------------------------------
+r2107 | vlefevre | 2002-12-02 11:44:35 +0000 (Mon, 02 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/rnd_mode.c
+
+Fix rnd_mode.c (again).
+
+------------------------------------------------------------------------
+r2106 | zimmerma | 2002-12-02 09:44:41 +0000 (Mon, 02 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+put redefinitions of external symbols just before prototypes
+
+------------------------------------------------------------------------
+r2105 | zimmerma | 2002-12-02 09:23:47 +0000 (Mon, 02 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated
+
+------------------------------------------------------------------------
+r2104 | zimmerma | 2002-12-02 09:21:40 +0000 (Mon, 02 Dec 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+added new known bugs
+
+------------------------------------------------------------------------
+r2103 | ryde | 2002-11-29 23:05:47 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Add notes on mpf_t maintaining actual size for efficiency.
+
+------------------------------------------------------------------------
+r2102 | ryde | 2002-11-29 22:52:20 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove mpfr_set_machine_rnd_mode task.
+
+------------------------------------------------------------------------
+r2101 | ryde | 2002-11-29 22:51:58 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Tweak some math formatting for tex.
+
+------------------------------------------------------------------------
+r2100 | ryde | 2002-11-29 22:45:40 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+
+(mpfr_set_machine_rnd_mode): Move prototype to mpfr-test.h.
+
+------------------------------------------------------------------------
+r2099 | ryde | 2002-11-29 22:42:19 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+(libfrtests_a_SOURCES): Add rnd_mode.c.
+
+------------------------------------------------------------------------
+r2098 | ryde | 2002-11-29 22:41:57 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+(libmpfr_a_SOURCES): Remove rnd_mode.c.
+
+------------------------------------------------------------------------
+r2097 | ryde | 2002-11-29 22:40:40 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ D /trunk/rnd_mode.c
+
+Remove file, moved to tests directory.
+
+------------------------------------------------------------------------
+r2096 | ryde | 2002-11-29 22:40:01 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ A /trunk/tests/rnd_mode.c
+
+New file, moved from top-level directory.
+
+------------------------------------------------------------------------
+r2095 | ryde | 2002-11-29 22:22:40 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Rounding Modes): Remove mpfr_set_machine_rnd_mode.
+
+------------------------------------------------------------------------
+r2094 | ryde | 2002-11-29 21:42:11 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/setmin.c
+
+Use GNU style code layout.
+
+------------------------------------------------------------------------
+r2093 | ryde | 2002-11-29 21:35:59 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/setmax.c
+
+Use GNU style code layout.
+
+------------------------------------------------------------------------
+r2092 | zimmerma | 2002-11-29 17:26:31 +0000 (Fri, 29 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+redefined external symbols in the __gmpfr namespace
+
+------------------------------------------------------------------------
+r2091 | zimmerma | 2002-11-25 17:04:36 +0000 (Mon, 25 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+added one fprintf in case of error
+
+------------------------------------------------------------------------
+r2090 | vlefevre | 2002-11-25 16:11:33 +0000 (Mon, 25 Nov 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/rnd_mode.c
+
+mpfr_set_machine_rnd_mode fixed to compile on some architectures
+(e.g. ARM). Now returns an int.
+
+------------------------------------------------------------------------
+r2089 | vlefevre | 2002-11-25 15:30:56 +0000 (Mon, 25 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r2088 | zimmerma | 2002-11-25 12:54:49 +0000 (Mon, 25 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+removed all tests that compare to libm
+
+------------------------------------------------------------------------
+r2087 | zimmerma | 2002-11-25 10:54:35 +0000 (Mon, 25 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+changed to distinguish mpfr failures from libm failures
+
+------------------------------------------------------------------------
+r2086 | zimmerma | 2002-11-25 10:37:43 +0000 (Mon, 25 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added 3 tests that make libm fail under HP-PA
+
+------------------------------------------------------------------------
+r2085 | vlefevre | 2002-11-23 23:47:18 +0000 (Sat, 23 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2084 | zimmerma | 2002-11-22 10:40:05 +0000 (Fri, 22 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+forgot to remove debug statement
+
+------------------------------------------------------------------------
+r2083 | zimmerma | 2002-11-22 10:26:38 +0000 (Fri, 22 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/ui_pow.c
+
+fixed bug (infinite loop) for exact powers
+
+------------------------------------------------------------------------
+r2082 | ryde | 2002-11-21 22:28:44 +0000 (Thu, 21 Nov 2002) | 3 lines
+Changed paths:
+ M /trunk/TODO
+
+More on tuned thresholds, more on config.h etc, new section on mpf/mpfr
+integration.
+
+------------------------------------------------------------------------
+r2081 | vlefevre | 2002-11-20 14:34:08 +0000 (Wed, 20 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Code clean-up.
+
+------------------------------------------------------------------------
+r2080 | zimmerma | 2002-11-20 13:08:23 +0000 (Wed, 20 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/log.c
+ M /trunk/set_ld.c
+
+fixed some problems found by insure
+
+------------------------------------------------------------------------
+r2079 | zimmerma | 2002-11-20 11:03:21 +0000 (Wed, 20 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+forgotten fclose() call
+
+------------------------------------------------------------------------
+r2078 | zimmerma | 2002-11-20 10:13:01 +0000 (Wed, 20 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+fixed array bound write
+
+------------------------------------------------------------------------
+r2077 | zimmerma | 2002-11-19 16:46:45 +0000 (Tue, 19 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed non-ansi features
+
+------------------------------------------------------------------------
+r2076 | zimmerma | 2002-11-19 16:26:22 +0000 (Tue, 19 Nov 2002) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/div_ui.c
+
+added explicit cast
+
+------------------------------------------------------------------------
+r2075 | zimmerma | 2002-10-24 12:04:59 +0000 (Thu, 24 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_cbrt
+
+------------------------------------------------------------------------
+r2074 | vlefevre | 2002-10-20 09:46:03 +0000 (Sun, 20 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r2073 | zimmerma | 2002-10-20 07:43:07 +0000 (Sun, 20 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+fixed bug with wrong sign detection
+
+------------------------------------------------------------------------
+r2072 | vlefevre | 2002-10-19 10:25:49 +0000 (Sat, 19 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+Some fixes to avoid overflows.
+
+------------------------------------------------------------------------
+r2071 | zimmerma | 2002-10-19 08:08:47 +0000 (Sat, 19 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+fixed bug for large arguments
+
+------------------------------------------------------------------------
+r2070 | zimmerma | 2002-10-19 08:08:15 +0000 (Sat, 19 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/cbrt.c
+
+improved code for rounding to nearest
+
+------------------------------------------------------------------------
+r2069 | zimmerma | 2002-10-19 08:05:45 +0000 (Sat, 19 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/asinh.c
+
+fixed bug for EXP(x) > EMAX/2
+
+------------------------------------------------------------------------
+r2068 | zimmerma | 2002-10-19 08:04:51 +0000 (Sat, 19 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+modified description of hypot and cbrt
+
+------------------------------------------------------------------------
+r2067 | vlefevre | 2002-10-18 14:57:01 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r2066 | vlefevre | 2002-10-18 14:53:53 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+Added test showing bug in sign detection.
+
+------------------------------------------------------------------------
+r2065 | vlefevre | 2002-10-18 13:45:02 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+Added newline.
+
+------------------------------------------------------------------------
+r2064 | vlefevre | 2002-10-18 12:39:07 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Bug in mpfr_hypot.
+
+------------------------------------------------------------------------
+r2063 | vlefevre | 2002-10-18 12:26:16 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+Added test that makes mpfr_hypot fail.
+
+------------------------------------------------------------------------
+r2062 | vlefevre | 2002-10-18 12:06:17 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+Precision Nt: int -> mp_prec_t.
+
+------------------------------------------------------------------------
+r2061 | vlefevre | 2002-10-18 10:21:31 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tcbrt.c
+
+Added some tests.
+
+------------------------------------------------------------------------
+r2060 | vlefevre | 2002-10-18 09:58:41 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tcbrt.c
+
+main () -> main (void).
+
+------------------------------------------------------------------------
+r2059 | zimmerma | 2002-10-18 07:00:18 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tcbrt.c
+
+added tcbrt.c, test file for mpfr_cbrt
+
+------------------------------------------------------------------------
+r2058 | zimmerma | 2002-10-18 06:58:51 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+fixed overflow problem
+
+------------------------------------------------------------------------
+r2057 | zimmerma | 2002-10-18 06:58:08 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/cbrt.c
+
+completely rewritten using mpz_root
+
+------------------------------------------------------------------------
+r2056 | zimmerma | 2002-10-18 06:57:14 +0000 (Fri, 18 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added cbrt
+
+------------------------------------------------------------------------
+r2055 | vlefevre | 2002-10-17 16:48:10 +0000 (Thu, 17 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+C9X -> ISO/IEC 9899:1999 (ISO C99).
+
+------------------------------------------------------------------------
+r2054 | vlefevre | 2002-10-17 16:03:57 +0000 (Thu, 17 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+Cases NaN and -0.0 taken into account.
+
+------------------------------------------------------------------------
+r2053 | zimmerma | 2002-10-17 15:37:00 +0000 (Thu, 17 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+added check for +0 and -0
+
+------------------------------------------------------------------------
+r2052 | zimmerma | 2002-10-17 15:13:09 +0000 (Thu, 17 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+added one test (2^1024)
+
+------------------------------------------------------------------------
+r2051 | zimmerma | 2002-10-17 15:11:54 +0000 (Thu, 17 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+fixed bug when overflow for double type
+
+------------------------------------------------------------------------
+r2050 | zimmerma | 2002-10-17 12:56:49 +0000 (Thu, 17 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_set_ld and mpfr_get_ld
+
+------------------------------------------------------------------------
+r2049 | vlefevre | 2002-10-16 18:37:48 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/get_ld.c
+
+Fix for -0.0.
+
+------------------------------------------------------------------------
+r2048 | zimmerma | 2002-10-16 18:21:54 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ A /trunk/log_b2.h
+
+constants for mpfr_get_str and mpfr_set_str
+
+------------------------------------------------------------------------
+r2047 | vlefevre | 2002-10-16 16:25:56 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Obsolete comment removed.
+
+------------------------------------------------------------------------
+r2046 | vlefevre | 2002-10-16 16:23:35 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+Removed log_b2.h as it doesn't seem to be necessary.
+
+------------------------------------------------------------------------
+r2045 | zimmerma | 2002-10-16 15:41:24 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_get_ld
+
+------------------------------------------------------------------------
+r2044 | zimmerma | 2002-10-16 15:40:19 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_ld.c
+ M /trunk/tests/tset_ld.c
+
+added mpfr_get_ld and tests for set_ld/get_ld
+
+------------------------------------------------------------------------
+r2043 | zimmerma | 2002-10-16 15:38:46 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+added cast to long double
+
+------------------------------------------------------------------------
+r2042 | vlefevre | 2002-10-16 10:08:09 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update (tset_ld).
+
+------------------------------------------------------------------------
+r2041 | vlefevre | 2002-10-16 08:13:25 +0000 (Wed, 16 Oct 2002) | 4 lines
+Changed paths:
+ M /trunk/tests/tset_ld.c
+
+Test removed as the minimal precision for a long double is something
+like 10 decimal digits. Anyway, there are implementations for which
+long double = double = IEEE double precision.
+
+------------------------------------------------------------------------
+r2040 | vlefevre | 2002-10-16 07:38:15 +0000 (Wed, 16 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/set_ld.c
+
+DBL_MANT_DIG and LDBL_MANT_DIG are normally defined by <float.h>.
+
+------------------------------------------------------------------------
+r2039 | zimmerma | 2002-10-15 14:58:26 +0000 (Tue, 15 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ A /trunk/set_ld.c
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tset_ld.c
+
+added mpfr_set_ld and test file
+
+------------------------------------------------------------------------
+r2038 | vlefevre | 2002-10-13 14:12:46 +0000 (Sun, 13 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Bug in mpfr_sin (and perhaps other functions): error analysis.
+
+------------------------------------------------------------------------
+r2037 | vlefevre | 2002-10-13 13:54:45 +0000 (Sun, 13 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Bug fixed (found by Dmitrii Baksheyev): atan(1) cannot be exact.
+
+------------------------------------------------------------------------
+r2036 | ryde | 2002-10-08 01:41:21 +0000 (Tue, 08 Oct 2002) | 5 lines
+Changed paths:
+ M /trunk/TODO
+
+Remove mpfr_get_str using mpn_get_str (done).
+Remove no grepping for __setfpucw, done (near enough).
+New thread-safety section, add const_pi and const_log2 caching.
+New portability section, add mingw random and _mpfr_ceil_log2 IEEE-ism.
+
+------------------------------------------------------------------------
+r2035 | ryde | 2002-10-08 01:38:34 +0000 (Tue, 08 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+(AC_MY_LIBS): Show the filename in the error message.
+
+------------------------------------------------------------------------
+r2034 | zimmerma | 2002-10-04 14:32:53 +0000 (Fri, 04 Oct 2002) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+mpfr_get_default_prec was missing (thanks to F. Morain)
+
+------------------------------------------------------------------------
+r2033 | vlefevre | 2002-09-30 12:22:28 +0000 (Mon, 30 Sep 2002) | 3 lines
+Changed paths:
+ M /trunk/BUGS
+
+Removed get_str.c bug, as the mpfr_get_str function has
+completely been rewritten.
+
+------------------------------------------------------------------------
+r2032 | zimmerma | 2002-09-26 08:15:34 +0000 (Thu, 26 Sep 2002) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed wrong inexact flag for a - b where a and b are of different signs
+and EXP(a) < EXP(b)
+
+------------------------------------------------------------------------
+r2031 | zimmerma | 2002-09-26 08:00:09 +0000 (Thu, 26 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added test for inexact flag (bug found by Andreas Enge)
+
+------------------------------------------------------------------------
+r2030 | ryde | 2002-09-23 22:51:26 +0000 (Mon, 23 Sep 2002) | 3 lines
+Changed paths:
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_prec.c
+
+(mpfr_init, mpfr_init2, mpfr_set_prec): Make void return, these always
+succeed.
+
+------------------------------------------------------------------------
+r2029 | zimmerma | 2002-09-23 12:25:52 +0000 (Mon, 23 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+fixed various tiny problems
+
+------------------------------------------------------------------------
+r2028 | zimmerma | 2002-09-23 12:19:24 +0000 (Mon, 23 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+added more tests for mpfr_urandomb, and for small precision
+
+------------------------------------------------------------------------
+r2027 | zimmerma | 2002-09-23 08:45:25 +0000 (Mon, 23 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+ M /trunk/tests/trandom.c
+
+fixed bugs in mpfr_random2 (wrong exponent, invalid numbers)
+
+------------------------------------------------------------------------
+r2026 | zimmerma | 2002-09-23 08:42:28 +0000 (Mon, 23 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+added checks for mpfr_random2
+
+------------------------------------------------------------------------
+r2025 | zimmerma | 2002-09-23 08:20:31 +0000 (Mon, 23 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/cmp_abs.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/pow.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tsub.c
+
+cmp_abs -> cmpabs (for compatibility with mpz)
+
+------------------------------------------------------------------------
+r2024 | ryde | 2002-09-21 22:57:26 +0000 (Sat, 21 Sep 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Converting Floats): Don't refer to the internal _mp_free_func with
+mpfr_get_str.
+
+------------------------------------------------------------------------
+r2023 | ryde | 2002-09-21 22:51:58 +0000 (Sat, 21 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+(Special Functions, Internals): Make these into nodes.
+
+------------------------------------------------------------------------
+r2022 | zimmerma | 2002-09-20 16:11:47 +0000 (Fri, 20 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+now accept uppercase letters too
+
+------------------------------------------------------------------------
+r2021 | zimmerma | 2002-09-20 16:07:35 +0000 (Fri, 20 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added test for uppercase letters
+
+------------------------------------------------------------------------
+r2020 | zimmerma | 2002-09-18 15:11:33 +0000 (Wed, 18 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+now mpfr_agm returns an int (inexact flag)
+
+------------------------------------------------------------------------
+r2019 | vlefevre | 2002-09-13 10:11:33 +0000 (Fri, 13 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/prepare
+
+Some more information.
+
+------------------------------------------------------------------------
+r2018 | vlefevre | 2002-09-12 11:50:34 +0000 (Thu, 12 Sep 2002) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+On HP-UX, use the +allowunsats switch for ld, otherwise ld complains
+that some GMP symbols are unsatisfied.
+
+------------------------------------------------------------------------
+r2017 | zimmerma | 2002-09-12 09:54:44 +0000 (Thu, 12 Sep 2002) | 2 lines
+Changed paths:
+ M /trunk/gamma.c
+ M /trunk/tests/tgamma.c
+
+fixed bug in reflection formula for x<1
+
+------------------------------------------------------------------------
+r2016 | vlefevre | 2002-08-23 22:05:08 +0000 (Fri, 23 Aug 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/mpfr.texi
+
+MPFR now needs GMP 4.1 or higher.
+
+------------------------------------------------------------------------
+r2015 | ryde | 2002-08-22 00:56:07 +0000 (Thu, 22 Aug 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-math.h
+
+(__mpfr_nan): Clarify comments about HP C and alpha.
+
+------------------------------------------------------------------------
+r2014 | ryde | 2002-08-22 00:47:22 +0000 (Thu, 22 Aug 2002) | 4 lines
+Changed paths:
+ M /trunk/mpfr-math.h
+
+(_MPFR_NAN_BYTES, _MPFR_INFP_BYTES, _MPFR_INFM_BYTES):
+Use HAVE_DOUBLE_IEEE_LITTLE_ENDIAN etc to select endianness, not a big
+block of #ifdefs.
+
+------------------------------------------------------------------------
+r2013 | vlefevre | 2002-08-12 00:35:25 +0000 (Mon, 12 Aug 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/strcasecmp.c
+ A /trunk/strncasecmp.c
+
+strcasecmp.c -> strcasecmp.c & strncasecmp.c
+
+------------------------------------------------------------------------
+r2012 | ryde | 2002-08-07 01:47:30 +0000 (Wed, 07 Aug 2002) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Use $(top_builddir) consistently with libmpfr.a, for the benefit of
+srcdir!=builddir.
+
+------------------------------------------------------------------------
+r2011 | vlefevre | 2002-08-02 23:36:46 +0000 (Fri, 02 Aug 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Don't touch user specified flags (CFLAGS). [patch by Kevin Ryde]
+
+------------------------------------------------------------------------
+r2010 | vlefevre | 2002-07-30 03:19:37 +0000 (Tue, 30 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-impl.h
+ M /trunk/set_str.c
+
+Better check for strcasecmp and strncasecmp. Bug fixed.
+
+------------------------------------------------------------------------
+r2009 | vlefevre | 2002-07-28 23:48:20 +0000 (Sun, 28 Jul 2002) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ A /trunk/comparisons.c
+ M /trunk/mpfr.h
+
+Functions mpfr_greater_p, mpfr_greaterequal_p, mpfr_less_p,
+mpfr_lessequal_p, mpfr_lessgreater_p, mpfr_equal_p, mpfr_unordered_p.
+
+------------------------------------------------------------------------
+r2008 | vlefevre | 2002-07-28 01:58:32 +0000 (Sun, 28 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/prepare
+ M /trunk/tests/Makefile.am
+
+Use AUTOMAKE_OPTIONS = gnu [suggested by Kevin Ryde]
+
+------------------------------------------------------------------------
+r2007 | vlefevre | 2002-07-28 01:43:29 +0000 (Sun, 28 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+check target -> TESTS = $(check_PROGRAMS) [suggested by Kevin Ryde]
+
+------------------------------------------------------------------------
+r2006 | vlefevre | 2002-07-28 01:28:54 +0000 (Sun, 28 Jul 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/strcasecmp.c
+
+strcasecmp and strncasecmp -> mpfr_strcasecmp and mpfr_strncasecmp
+if they are provided by MPFR.
+
+------------------------------------------------------------------------
+r2005 | vlefevre | 2002-07-28 00:50:51 +0000 (Sun, 28 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+TMP_MARK missing (patch by Kevin Ryde).
+
+------------------------------------------------------------------------
+r2004 | vlefevre | 2002-07-26 17:53:53 +0000 (Fri, 26 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r2003 | vlefevre | 2002-07-26 17:49:03 +0000 (Fri, 26 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/README
+ M /trunk/README.dev
+
+Update (mainly concerning CVS use).
+
+------------------------------------------------------------------------
+r2002 | vlefevre | 2002-07-26 15:52:58 +0000 (Fri, 26 Jul 2002) | 5 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/mpfr-impl.h
+ M /trunk/next.c
+ M /trunk/setmax.c
+ M /trunk/setmin.c
+
+Prototype of mpfr_setmax and mpfr_setmin changed (exponent given).
+In mpfr_exp for x ~= 0, add_one_ulp and sub_one_ulp are no longer
+used (sub_one_ulp was incorrect). These cases should now be faster.
+Small fix in mpfr_nextabove, mpfr_nextbelow and mpfr_nexttoward.
+
+------------------------------------------------------------------------
+r2001 | vlefevre | 2002-07-26 15:21:45 +0000 (Fri, 26 Jul 2002) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/TODO
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/next.c
+ A /trunk/setmax.c
+ A /trunk/setmin.c
+ M /trunk/sub_one_ulp.c
+
+New internal functions mpfr_setmin and mpfr_setmax.
+New functions mpfr_nextabove, mpfr_nextbelow, mpfr_nexttoward.
+Small fix in mpfr_sub_one_ulp.
+
+------------------------------------------------------------------------
+r2000 | zimmerma | 2002-07-26 13:24:45 +0000 (Fri, 26 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+improved the computation of g = ceil((e-1)/log_2(beta)), using two tables
+
+------------------------------------------------------------------------
+r1999 | vlefevre | 2002-07-25 15:43:49 +0000 (Thu, 25 Jul 2002) | 5 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.texi
+ M /trunk/save_expo.c
+ M /trunk/set_q.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+ M /trunk/ui_pow_ui.c
+
+Function mpfr_check_range now propagates the inexact ternary value.
+Function mpfr_restore_emin_emax OR's the saved flags with the current
+flags, as this is more useful in general.
+Macro MPFR_RESTORE_RET removed (no longer useful).
+
+------------------------------------------------------------------------
+r1998 | vlefevre | 2002-07-24 17:38:21 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/frac.c
+
+Change concerning an assertion, due to GMP limitation.
+
+------------------------------------------------------------------------
+r1997 | zimmerma | 2002-07-24 16:35:02 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+gnu indentation
+
+------------------------------------------------------------------------
+r1996 | zimmerma | 2002-07-24 16:32:49 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tgamma.c
+
+reduce range of tests (did take too much time)
+
+------------------------------------------------------------------------
+r1995 | zimmerma | 2002-07-24 16:31:00 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added plenty of new cases, now covers all lines of get_str.c
+
+------------------------------------------------------------------------
+r1994 | zimmerma | 2002-07-24 16:29:40 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+updated documentation of mpfr_get_str
+
+------------------------------------------------------------------------
+r1993 | zimmerma | 2002-07-24 16:28:21 +0000 (Wed, 24 Jul 2002) | 4 lines
+Changed paths:
+ M /trunk/get_str.c
+
+completely new version, written by Alain Delplanque and Paul Zimmermann.
+It now directly uses mpn_get_str, with subquadratic complexity.
+About 3 times faster than previous version in most cases.
+
+------------------------------------------------------------------------
+r1992 | vlefevre | 2002-07-24 16:23:27 +0000 (Wed, 24 Jul 2002) | 3 lines
+Changed paths:
+ M /trunk/frac.c
+
+Bug fixed: unsigned int variables changed to int to avoid operations
+with mixed signed/unsigned variables and unwanted casts.
+
+------------------------------------------------------------------------
+r1991 | vlefevre | 2002-07-24 16:04:16 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/frac.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tfrac.c
+
+Function mpfr_frac and tests added.
+
+------------------------------------------------------------------------
+r1990 | vlefevre | 2002-07-24 15:05:51 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+Bug fixed (0 was forgotten).
+
+------------------------------------------------------------------------
+r1989 | vlefevre | 2002-07-24 11:11:07 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/isinteger.c
+
+Optimization: mpfr_trunc no longer used!
+
+------------------------------------------------------------------------
+r1988 | vlefevre | 2002-07-24 10:13:00 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/isinteger.c
+
+mpfr_isinteger extended to non-fp numbers and to zero.
+
+------------------------------------------------------------------------
+r1987 | vlefevre | 2002-07-24 09:59:01 +0000 (Wed, 24 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/isnum.c
+
+Simpler test.
+
+------------------------------------------------------------------------
+r1986 | vlefevre | 2002-07-23 17:19:47 +0000 (Tue, 23 Jul 2002) | 2 lines
+Changed paths:
+ A /trunk/mul.c
+
+Re-adding mul.c with fixed permissions.
+
+------------------------------------------------------------------------
+r1985 | vlefevre | 2002-07-23 17:18:56 +0000 (Tue, 23 Jul 2002) | 2 lines
+Changed paths:
+ D /trunk/mul.c
+
+Temporarily removing mul.c in order to try to fix its permissions.
+
+------------------------------------------------------------------------
+r1984 | vlefevre | 2002-07-23 16:22:08 +0000 (Tue, 23 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Fixed permissions.
+
+------------------------------------------------------------------------
+r1983 | vlefevre | 2002-07-23 16:02:30 +0000 (Tue, 23 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/tests/texceptions.c
+
+Function mpfr_check_range improved in the underflow case.
+
+------------------------------------------------------------------------
+r1982 | vlefevre | 2002-07-22 15:52:33 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r1981 | zimmerma | 2002-07-22 15:22:13 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/dump.c
+
+now dump in base 2
+
+------------------------------------------------------------------------
+r1980 | zimmerma | 2002-07-22 15:11:50 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+forgot one free() call
+
+------------------------------------------------------------------------
+r1979 | vlefevre | 2002-07-22 13:57:15 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+mpfr_pow bug removed.
+
+------------------------------------------------------------------------
+r1978 | vlefevre | 2002-07-22 13:54:55 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Reindentation.
+
+------------------------------------------------------------------------
+r1977 | vlefevre | 2002-07-22 13:51:20 +0000 (Mon, 22 Jul 2002) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+pow.c: bug fixed (in the call to mpfr_can_round).
+tpow.c: mpfr_clear added.
+
+------------------------------------------------------------------------
+r1976 | vlefevre | 2002-07-22 13:26:54 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Modified the two tests to make the bug appear.
+
+------------------------------------------------------------------------
+r1975 | zimmerma | 2002-07-22 09:37:31 +0000 (Mon, 22 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added two tests
+
+------------------------------------------------------------------------
+r1974 | vlefevre | 2002-07-19 15:31:23 +0000 (Fri, 19 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Updated note concerning rcs2log.
+
+------------------------------------------------------------------------
+r1973 | vlefevre | 2002-07-19 11:31:30 +0000 (Fri, 19 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Line mpfr_get_exp / mpfr_set_exp removed.
+
+------------------------------------------------------------------------
+r1972 | zimmerma | 2002-07-16 15:33:31 +0000 (Tue, 16 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added function check_large
+
+------------------------------------------------------------------------
+r1971 | vlefevre | 2002-07-15 13:16:15 +0000 (Mon, 15 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/config.guess
+ M /trunk/config.sub
+
+Update from ftp://ftp.gnu.org/pub/gnu/config/
+
+------------------------------------------------------------------------
+r1970 | vlefevre | 2002-07-14 23:44:41 +0000 (Sun, 14 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-math.h
+
+Add __sparc__ (patch by Nix <nix@esperi.demon.co.uk>).
+
+------------------------------------------------------------------------
+r1969 | vlefevre | 2002-07-14 23:39:13 +0000 (Sun, 14 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Note about randomized tests.
+
+------------------------------------------------------------------------
+r1968 | vlefevre | 2002-07-04 15:09:17 +0000 (Thu, 04 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Bug concerning the rounding of pow().
+
+------------------------------------------------------------------------
+r1967 | vlefevre | 2002-07-04 14:26:00 +0000 (Thu, 04 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+mpfr_pow() didn't work when the exponent was a negative integer.
+
+------------------------------------------------------------------------
+r1966 | vlefevre | 2002-07-04 14:25:40 +0000 (Thu, 04 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/get_z_exp.c
+
+mpfr_get_z_exp() didn't work when the MPFR number was negative.
+
+------------------------------------------------------------------------
+r1965 | vlefevre | 2002-07-04 11:59:27 +0000 (Thu, 04 Jul 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_exp.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ A /trunk/set_exp.c
+
+New functions mpfr_get_exp and mpfr_set_exp.
+
+------------------------------------------------------------------------
+r1964 | zimmerma | 2002-06-27 14:07:06 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed duplicated entry (thread-safe)
+
+------------------------------------------------------------------------
+r1963 | zimmerma | 2002-06-27 13:57:23 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new items
+
+------------------------------------------------------------------------
+r1962 | zimmerma | 2002-06-27 12:55:03 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added special cases
+
+------------------------------------------------------------------------
+r1961 | zimmerma | 2002-06-27 12:50:36 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added one reference (nocite)
+
+------------------------------------------------------------------------
+r1960 | zimmerma | 2002-06-27 12:50:15 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+
+added one reference
+
+------------------------------------------------------------------------
+r1959 | zimmerma | 2002-06-27 12:49:01 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/inp_str.c
+
+fixed bug in return value
+
+------------------------------------------------------------------------
+r1958 | zimmerma | 2002-06-27 12:30:03 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+new additions
+
+------------------------------------------------------------------------
+r1957 | zimmerma | 2002-06-27 09:31:01 +0000 (Thu, 27 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added pointer to mpfr_inp_str in mpfr_set_str
+
+------------------------------------------------------------------------
+r1956 | vlefevre | 2002-06-26 23:55:24 +0000 (Wed, 26 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r1955 | vlefevre | 2002-06-26 23:51:49 +0000 (Wed, 26 Jun 2002) | 3 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/div.c
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/print_raw.c
+ M /trunk/rint.c
+ M /trunk/round_prec.c
+ M /trunk/set.c
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sub1.c
+
+MP_LIMB_T_HIGHBIT -> MPFR_LIMB_HIGHBIT.
+MPFR is now compatible with GMP 4.1.
+
+------------------------------------------------------------------------
+r1954 | vlefevre | 2002-06-15 10:50:23 +0000 (Sat, 15 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Added: make MPFR thread-safe.
+
+------------------------------------------------------------------------
+r1953 | zimmerma | 2002-06-14 13:14:34 +0000 (Fri, 14 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/set_q.c
+
+fixed bug found by Gerardo Ballabio
+
+------------------------------------------------------------------------
+r1952 | zimmerma | 2002-06-14 13:14:08 +0000 (Fri, 14 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_q.c
+
+added one test (bug in mpfr-2.0.1 found by Gerardo Ballabio)
+
+------------------------------------------------------------------------
+r1951 | zimmerma | 2002-06-13 12:44:16 +0000 (Thu, 13 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added mpfr_modf
+
+------------------------------------------------------------------------
+r1950 | vlefevre | 2002-06-12 22:30:26 +0000 (Wed, 12 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Added modf (to implement).
+
+------------------------------------------------------------------------
+r1949 | vlefevre | 2002-06-08 22:58:28 +0000 (Sat, 08 Jun 2002) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tmul.c
+
+check: Apply a hack to the parameter order to make sparc gcc 2.95.2
+happy (patch by Kevin Ryde) + static added.
+
+------------------------------------------------------------------------
+r1948 | vlefevre | 2002-06-08 22:45:57 +0000 (Sat, 08 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Patch by Kevin Ryde.
+
+------------------------------------------------------------------------
+r1947 | vlefevre | 2002-06-08 02:45:27 +0000 (Sat, 08 Jun 2002) | 3 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+
+Suppress tests if sqrt is not affected by mpfr_set_machine_rnd_mode
+(patch by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1946 | vlefevre | 2002-06-08 02:25:49 +0000 (Sat, 08 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r1945 | vlefevre | 2002-06-08 02:20:00 +0000 (Sat, 08 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/README
+
+fdl.texi added.
+
+------------------------------------------------------------------------
+r1944 | vlefevre | 2002-06-08 02:16:07 +0000 (Sat, 08 Jun 2002) | 9 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/README.dev
+ A /trunk/fdl.texi
+ M /trunk/mpfr.texi
+ M /trunk/texinfo.tex
+
+Patch by Kevin Ryde (and Vincent Lefevre).
+mpfr.texi: Change license to FDL, use @copying per texinfo 4.2.
+Use @dircategory, @direntry, @documentdescription.
+Move @contents to start of file.
+(VERSION, UPDATED): New variables.
+(m, GMPtimes, times): New macros.
+(Float Arithmetic): Fix html output. Reported by Richard Dawe.
+(GNU Free Documentation License): New appendix.
+
+------------------------------------------------------------------------
+r1943 | vlefevre | 2002-06-06 11:08:47 +0000 (Thu, 06 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+Use gmp-impl.h to get MPFR_HAVE_FESETROUND (reported by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1942 | zimmerma | 2002-06-05 15:27:23 +0000 (Wed, 05 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+patch for mpfr.texi
+
+------------------------------------------------------------------------
+r1941 | zimmerma | 2002-06-05 15:24:46 +0000 (Wed, 05 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+patch from Richard Dawe <richdawe@bigfoot.com> to generate HTML
+
+------------------------------------------------------------------------
+r1940 | zimmerma | 2002-06-05 15:05:21 +0000 (Wed, 05 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/gamma.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tgamma.c
+
+added mpfr_gamma in libmpfr
+
+------------------------------------------------------------------------
+r1939 | vlefevre | 2002-06-05 01:01:42 +0000 (Wed, 05 Jun 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tests.c
+
+Check for isnan.
+
+------------------------------------------------------------------------
+r1938 | vlefevre | 2002-05-29 13:08:04 +0000 (Wed, 29 May 2002) | 2 lines
+Changed paths:
+ M /trunk/rint.c
+
+Bug fixed (possible integer overflow).
+
+------------------------------------------------------------------------
+r1937 | vlefevre | 2002-05-29 12:48:06 +0000 (Wed, 29 May 2002) | 2 lines
+Changed paths:
+ M /trunk/add_one_ulp.c
+ M /trunk/sub_one_ulp.c
+
+Bug fixed (possible integer overflow).
+
+------------------------------------------------------------------------
+r1936 | vlefevre | 2002-05-29 12:41:19 +0000 (Wed, 29 May 2002) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/sub1.c
+
+Bug fixed (possible integer overflow).
+
+------------------------------------------------------------------------
+r1935 | vlefevre | 2002-05-29 12:21:32 +0000 (Wed, 29 May 2002) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+
+Note added for mpfr_check_range. Bug fixed.
+
+------------------------------------------------------------------------
+r1934 | vlefevre | 2002-05-29 11:37:31 +0000 (Wed, 29 May 2002) | 3 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+Sign wasn't set (reported by Dmitrii Baksheyev).
+Types fixed and code clean-up.
+
+------------------------------------------------------------------------
+r1933 | vlefevre | 2002-05-29 10:56:51 +0000 (Wed, 29 May 2002) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Types fixed and code clean-up.
+
+------------------------------------------------------------------------
+r1932 | vlefevre | 2002-05-27 13:48:56 +0000 (Mon, 27 May 2002) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/memory.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ A /trunk/tests/tests.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+
+Patch by Kevin Ryde for memory leak checking + misc declaration fixes.
+Code moved from mpfr-test.h to tests.c.
+
+------------------------------------------------------------------------
+r1931 | vlefevre | 2002-05-14 23:14:53 +0000 (Tue, 14 May 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Ternary flag for mpfr_agm.
+
+------------------------------------------------------------------------
+r1930 | vlefevre | 2002-05-14 23:03:08 +0000 (Tue, 14 May 2002) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/add.c
+ M /trunk/asin.c
+ M /trunk/atan.c
+ M /trunk/cmp2.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/div.c
+ M /trunk/exceptions.c
+ M /trunk/gamma.c
+ M /trunk/generic.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/isinteger.c
+ M /trunk/mpfi.h
+ M /trunk/out_str.c
+ M /trunk/set_si.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/sub.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tzeta.c
+ M /trunk/ui_div.c
+ M /trunk/zeta.c
+
+Copyright line updated.
+
+------------------------------------------------------------------------
+r1929 | zimmerma | 2002-05-14 14:47:35 +0000 (Tue, 14 May 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+ternary flag for mpfr_agm?
+
+------------------------------------------------------------------------
+r1928 | zimmerma | 2002-05-14 14:37:20 +0000 (Tue, 14 May 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+update wrt mpfr_set_machine_rnd_mode
+
+------------------------------------------------------------------------
+r1927 | zimmerma | 2002-05-14 09:44:27 +0000 (Tue, 14 May 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mathematical description of arithmetico-geometric mean
+
+------------------------------------------------------------------------
+r1926 | vlefevre | 2002-05-08 00:13:28 +0000 (Wed, 08 May 2002) | 4 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/acinclude.m4
+
+The problem on a G4 PowerPC was a bug in gcc; this is now tested
+in configure (float-conversion bug) and -ffloat-store is used if
+need be.
+
+------------------------------------------------------------------------
+r1925 | vlefevre | 2002-05-06 08:37:34 +0000 (Mon, 06 May 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Problem on the G4 PowerPC.
+
+------------------------------------------------------------------------
+r1924 | zimmerma | 2002-04-30 18:49:21 +0000 (Tue, 30 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/pow.c
+ M /trunk/tests/tpow.c
+
+fixed problem (infinite loop) in mpfr_pow for exact powers
+
+------------------------------------------------------------------------
+r1923 | zimmerma | 2002-04-30 09:54:12 +0000 (Tue, 30 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed errors found by Sylvain Pion
+
+------------------------------------------------------------------------
+r1922 | vlefevre | 2002-04-27 23:13:33 +0000 (Sat, 27 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+not relevant -> undefined.
+
+------------------------------------------------------------------------
+r1921 | vlefevre | 2002-04-27 23:07:29 +0000 (Sat, 27 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Some changes concerning the internals and zeros
+(including remarks by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1920 | vlefevre | 2002-04-25 15:40:13 +0000 (Thu, 25 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/mpfr-math.h
+
+Check if HUGE_VAL is supported.
+
+------------------------------------------------------------------------
+r1919 | vlefevre | 2002-04-25 14:03:17 +0000 (Thu, 25 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Changes in mpfr_set_str.
+
+------------------------------------------------------------------------
+r1918 | zimmerma | 2002-04-25 13:45:07 +0000 (Thu, 25 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+update
+
+------------------------------------------------------------------------
+r1917 | zimmerma | 2002-04-25 09:04:20 +0000 (Thu, 25 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+
+mpfr_set_str doesn't require any more a final '\0'
+ and return the number of characters read
+
+------------------------------------------------------------------------
+r1916 | zimmerma | 2002-04-25 09:02:31 +0000 (Thu, 25 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+modified tests for special values
+
+------------------------------------------------------------------------
+r1915 | vlefevre | 2002-04-24 10:25:02 +0000 (Wed, 24 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/cmp_abs.c
+
+Description updated.
+
+------------------------------------------------------------------------
+r1914 | vlefevre | 2002-04-24 10:23:42 +0000 (Wed, 24 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+mpfr_cmp_abs no longer an internal function and described in mpfr.texi.
+In mpfr.texi, a @var{} was forgotten.
+
+------------------------------------------------------------------------
+r1913 | vlefevre | 2002-04-24 10:21:15 +0000 (Wed, 24 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/cmp_abs.c
+
+mpfr_cmp_abs can now be called on zero numbers.
+
+------------------------------------------------------------------------
+r1912 | vlefevre | 2002-04-24 00:21:46 +0000 (Wed, 24 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-math.h
+
+Structures are used to get correct alignment.
+
+------------------------------------------------------------------------
+r1911 | vlefevre | 2002-04-23 23:32:28 +0000 (Tue, 23 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-math.h
+
+_MPFR_INF*_BYTES fix. On alpha, use a "double" for the bytes,
+to avoid a mis-conversion on alpha gcc 3.0.2. (Kevin Ryde)
+
+------------------------------------------------------------------------
+r1910 | vlefevre | 2002-04-23 20:00:42 +0000 (Tue, 23 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mul.c
+ M /trunk/mul_2si.c
+ A /trunk/powerof2.c
+ M /trunk/set_z.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+
+Underflow semantics changed (not tested).
+
+------------------------------------------------------------------------
+r1909 | vlefevre | 2002-04-23 09:35:26 +0000 (Tue, 23 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Code simplified due to change in the maximum exponent range.
+
+------------------------------------------------------------------------
+r1908 | zimmerma | 2002-04-23 09:08:33 +0000 (Tue, 23 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+modifs from Andreas
+
+------------------------------------------------------------------------
+r1907 | vlefevre | 2002-04-22 22:23:26 +0000 (Mon, 22 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-math.h
+
+Union -> array + cast because of the HP compiler.
+
+------------------------------------------------------------------------
+r1906 | vlefevre | 2002-04-20 13:17:37 +0000 (Sat, 20 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Avoid constant floating expression, as this doesn't give the correct
+result with gcc on some Alpha machines. (patch by Paul Zimmermann)
+
+------------------------------------------------------------------------
+r1905 | vlefevre | 2002-04-19 23:19:31 +0000 (Fri, 19 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+RAND_MAX defined if not already defined (as it should be).
+
+------------------------------------------------------------------------
+r1904 | vlefevre | 2002-04-19 23:10:09 +0000 (Fri, 19 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+Include config.h, for the benefit of test programs not using
+gmp-impl.h (Kevin Ryde).
+
+------------------------------------------------------------------------
+r1903 | zimmerma | 2002-04-19 18:16:53 +0000 (Fri, 19 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+added tests in mpfr_test_init for denorms and extended precision
+
+------------------------------------------------------------------------
+r1902 | zimmerma | 2002-04-19 17:22:46 +0000 (Fri, 19 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+mpfr_init and mpfr_init2 now return an int
+
+------------------------------------------------------------------------
+r1901 | vlefevre | 2002-04-19 16:37:15 +0000 (Fri, 19 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/set_q.c
+
+Exponent range saved/restored. Returns NaN when the numerator
+or the denominator is too large for MPFR.
+
+------------------------------------------------------------------------
+r1900 | vlefevre | 2002-04-19 12:26:06 +0000 (Fri, 19 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/div_ui.c
+ M /trunk/mul_ui.c
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+
+Added some assertions (any unsigned long must be representable
+in a mp_limb_t).
+
+------------------------------------------------------------------------
+r1899 | vlefevre | 2002-04-19 12:01:16 +0000 (Fri, 19 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/cmp_si.c
+ M /trunk/mpfr-impl.h
+ M /trunk/set_si.c
+
+SAFE_ABS changed so that it can be used for any unsigned type.
+
+------------------------------------------------------------------------
+r1898 | vlefevre | 2002-04-18 15:36:36 +0000 (Thu, 18 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/set_z.c
+
+Added code to prevent possible integer overflow when the input number
+is very large.
+
+------------------------------------------------------------------------
+r1897 | vlefevre | 2002-04-18 15:22:56 +0000 (Thu, 18 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+New values for exponent range.
+
+------------------------------------------------------------------------
+r1896 | zimmerma | 2002-04-18 14:28:31 +0000 (Thu, 18 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+call get_d with rounding mode in check2, to avoid problems near +Inf
+
+------------------------------------------------------------------------
+r1895 | zimmerma | 2002-04-18 12:10:49 +0000 (Thu, 18 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+2147483647 -> INT_MAX
+
+------------------------------------------------------------------------
+r1894 | zimmerma | 2002-04-18 09:47:02 +0000 (Thu, 18 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/tests/tadd.c
+
+improved ulp() to deal with infinities
+and fixed tadd/check2 to deal with infinities
+
+------------------------------------------------------------------------
+r1893 | zimmerma | 2002-04-17 12:04:21 +0000 (Wed, 17 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+improved documentation of mpfr_set_precset_prec.
+
+------------------------------------------------------------------------
+r1892 | zimmerma | 2002-04-16 16:31:42 +0000 (Tue, 16 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed documentation of cosh/sinh/tanh
+
+------------------------------------------------------------------------
+r1891 | vlefevre | 2002-04-16 13:26:15 +0000 (Tue, 16 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/cmp_si.c
+ M /trunk/cmp_ui.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+mpfr_cmp_ui_2exp and mpfr_cmp_si_2exp rewritten.
+Prototype changed.
+
+------------------------------------------------------------------------
+r1890 | vlefevre | 2002-04-16 00:56:54 +0000 (Tue, 16 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Use AC_CANONICAL_HOST and $host instead of $OS_TYPE and $MACHTYPE
+(patch suggested by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1889 | vlefevre | 2002-04-16 00:51:21 +0000 (Tue, 16 Apr 2002) | 2 lines
+Changed paths:
+ A /trunk/config.guess
+ A /trunk/config.sub
+
+Added files from ftp.gnu.org for automake and AC_CANONICAL_HOST.
+
+------------------------------------------------------------------------
+r1888 | zimmerma | 2002-04-15 17:45:46 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_sub.c
+
+replaced 2.2e-307 by DBL_MIN
+
+------------------------------------------------------------------------
+r1887 | vlefevre | 2002-04-15 16:23:49 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README
+
+Typo: Gnu -> GNU.
+
+------------------------------------------------------------------------
+r1886 | vlefevre | 2002-04-15 15:43:26 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/VERSION
+ M /trunk/mpfr.texi
+
+Update for future 2.0.2.
+
+------------------------------------------------------------------------
+r1884 | vlefevre | 2002-04-15 15:33:49 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for mpfr 2.0.1.
+
+------------------------------------------------------------------------
+r1883 | vlefevre | 2002-04-15 15:32:21 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/VERSION
+ M /trunk/mpfr.texi
+
+Back to version 2.0.1, updated documentation.
+
+------------------------------------------------------------------------
+r1882 | vlefevre | 2002-04-15 14:48:58 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+ M /trunk/VERSION
+
+Post-release commit.
+
+------------------------------------------------------------------------
+r1881 | vlefevre | 2002-04-15 14:38:45 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for mpfr 2.0.1.
+
+------------------------------------------------------------------------
+r1880 | vlefevre | 2002-04-15 14:16:20 +0000 (Mon, 15 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+
+mpfr_cmp_ui_2exp and mpfr_cmp_si_2exp can no longer be called with a NaN.
+Misc bugs fixed.
+
+------------------------------------------------------------------------
+r1879 | zimmerma | 2002-04-15 14:08:47 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+added main changes in version 2.0.1
+
+------------------------------------------------------------------------
+r1878 | vlefevre | 2002-04-15 13:47:24 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/README
+
+Update for "make dist".
+
+------------------------------------------------------------------------
+r1877 | vlefevre | 2002-04-15 13:26:56 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/COPYING
+ A /trunk/COPYING.LIB
+ M /trunk/README
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_str.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inp_str.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/minmax.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfi.c
+ M /trunk/mpfi.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-math.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/rnd_mode.c
+ M /trunk/round_prec.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+COPYING -> COPYING.LIB and GPL re-added.
+
+------------------------------------------------------------------------
+r1876 | vlefevre | 2002-04-15 12:34:08 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r1875 | vlefevre | 2002-04-15 12:13:27 +0000 (Mon, 15 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Removed switches -g -O2 as already done by configure.
+
+------------------------------------------------------------------------
+r1874 | vlefevre | 2002-04-14 22:55:55 +0000 (Sun, 14 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Update.
+
+------------------------------------------------------------------------
+r1873 | vlefevre | 2002-04-14 15:53:55 +0000 (Sun, 14 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Removed useless @iftex...
+
+------------------------------------------------------------------------
+r1872 | vlefevre | 2002-04-14 11:14:31 +0000 (Sun, 14 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update.
+
+------------------------------------------------------------------------
+r1871 | vlefevre | 2002-04-14 10:24:27 +0000 (Sun, 14 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/set_q.c
+
+When q = 0, +0 is returned.
+
+------------------------------------------------------------------------
+r1870 | vlefevre | 2002-04-13 18:32:56 +0000 (Sat, 13 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1869 | vlefevre | 2002-04-13 18:27:39 +0000 (Sat, 13 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/acinclude.m4
+ M /trunk/set_str.c
+ A /trunk/strcasecmp.c
+ M /trunk/tests/tset_str.c
+
+Support for NaN and Inf (case insensitive) in mpfr_set_str. Tests.
+
+------------------------------------------------------------------------
+r1868 | vlefevre | 2002-04-13 01:40:03 +0000 (Sat, 13 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1867 | vlefevre | 2002-04-13 01:22:51 +0000 (Sat, 13 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1866 | vlefevre | 2002-04-13 01:18:54 +0000 (Sat, 13 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Misc changes. Use of AC_CACHE_CHECK.
+
+------------------------------------------------------------------------
+r1865 | vlefevre | 2002-04-12 16:11:14 +0000 (Fri, 12 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/texp.c
+
+Code clean-up.
+
+------------------------------------------------------------------------
+r1864 | vlefevre | 2002-04-12 14:51:26 +0000 (Fri, 12 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1863 | vlefevre | 2002-04-12 14:29:58 +0000 (Fri, 12 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+New tests.
+
+------------------------------------------------------------------------
+r1862 | vlefevre | 2002-04-12 14:29:49 +0000 (Fri, 12 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/get_d.c
+
+mpfr_get_d* fixed.
+
+------------------------------------------------------------------------
+r1861 | vlefevre | 2002-04-12 10:25:34 +0000 (Fri, 12 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/const_log2.c
+
+Types fixed in const_log2.c (this fixes the tconst_log2 crash).
+
+------------------------------------------------------------------------
+r1860 | vlefevre | 2002-04-12 09:58:11 +0000 (Fri, 12 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Added a note about the native SunOS 4 C compiler.
+
+------------------------------------------------------------------------
+r1859 | vlefevre | 2002-04-11 22:37:48 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tconst_log2.c
+
+Type fixed.
+
+------------------------------------------------------------------------
+r1858 | vlefevre | 2002-04-11 16:42:20 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/set_d.c
+
+mpfr_set_d bug fixed, but other bugs still remain...
+
+------------------------------------------------------------------------
+r1857 | vlefevre | 2002-04-11 16:21:50 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/print_rnd_mode.c
+
+NULL was undeclared on some architectures (reported by Torbjorn Granlund).
+
+------------------------------------------------------------------------
+r1856 | vlefevre | 2002-04-11 13:00:43 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+ M /trunk/mpfr-math.h
+
+#include ordering changed for Windows + Cygwin 32.
+
+------------------------------------------------------------------------
+r1855 | vlefevre | 2002-04-11 12:41:54 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+LDFLAGS changed on HP-UX.
+
+------------------------------------------------------------------------
+r1854 | vlefevre | 2002-04-11 03:35:40 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1853 | vlefevre | 2002-04-11 03:29:44 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+Subnormal test in different rounding modes + fix.
+
+------------------------------------------------------------------------
+r1852 | vlefevre | 2002-04-11 02:49:49 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/configure.in
+
+Function MPFR_CONFIGS.
+
+------------------------------------------------------------------------
+r1851 | vlefevre | 2002-04-11 01:54:09 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+Tests added.
+
+------------------------------------------------------------------------
+r1850 | vlefevre | 2002-04-11 01:53:57 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/get_d.c
+
+get_d.c partly rewritten (Paul Zimmermann).
+
+------------------------------------------------------------------------
+r1849 | vlefevre | 2002-04-11 01:36:49 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/set_q.c
+
+#include ordering fixed.
+
+------------------------------------------------------------------------
+r1848 | vlefevre | 2002-04-11 01:24:20 +0000 (Thu, 11 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Check for gcc float-conversion bug.
+
+------------------------------------------------------------------------
+r1847 | vlefevre | 2002-04-10 23:21:41 +0000 (Wed, 10 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/round_prec.c
+
+Added comment for mpfr_round_raw_generic (about using 1-bit precision).
+
+------------------------------------------------------------------------
+r1846 | vlefevre | 2002-04-10 14:05:52 +0000 (Wed, 10 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update (thanks to Nathalie Revol).
+
+------------------------------------------------------------------------
+r1845 | vlefevre | 2002-04-10 12:20:13 +0000 (Wed, 10 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1844 | vlefevre | 2002-04-10 12:13:25 +0000 (Wed, 10 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/rnd_mode.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+HAVE_FESETROUND renamed to MPFR_HAVE_FESETROUND to avoid possible
+name conflict.
+
+------------------------------------------------------------------------
+r1843 | vlefevre | 2002-04-10 00:12:01 +0000 (Wed, 10 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ D /trunk/srandom.h
+
+Added missing headers in libmpfr_a_SOURCES.
+
+------------------------------------------------------------------------
+r1842 | vlefevre | 2002-04-09 23:53:57 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1841 | vlefevre | 2002-04-09 23:48:30 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Possible tconst_log2 crash under Solaris.
+
+------------------------------------------------------------------------
+r1840 | vlefevre | 2002-04-09 23:30:08 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Under OSF, use option -ffloat-store only when the compiler is gcc.
+
+------------------------------------------------------------------------
+r1839 | vlefevre | 2002-04-09 23:11:46 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+include_HEADERS should contain only mpfr.h and mpf2mpfr.h.
+
+------------------------------------------------------------------------
+r1838 | vlefevre | 2002-04-09 13:47:16 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Added code to support fesetround under Solaris.
+
+------------------------------------------------------------------------
+r1837 | vlefevre | 2002-04-09 12:49:54 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+"In case of problem" update.
+
+------------------------------------------------------------------------
+r1836 | vlefevre | 2002-04-09 12:40:11 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Old URL removed.
+
+------------------------------------------------------------------------
+r1835 | vlefevre | 2002-04-09 11:33:14 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Renaming: DIR -> GMPINSTALL, GMPDIR -> GMPBUILD. Bug on IRIX updated.
+
+------------------------------------------------------------------------
+r1834 | vlefevre | 2002-04-09 11:04:42 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Removed note about stack-alloc.h.
+
+------------------------------------------------------------------------
+r1833 | vlefevre | 2002-04-09 10:50:01 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/rnd_mode.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+Check for fenv.h -> check for fesetround.
+
+------------------------------------------------------------------------
+r1832 | vlefevre | 2002-04-09 00:12:01 +0000 (Tue, 09 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README.dev
+
+Added note concerning patch submission.
+
+------------------------------------------------------------------------
+r1831 | vlefevre | 2002-04-08 21:23:50 +0000 (Mon, 08 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Note about overflows. Functions mpfr_{div,mul}_{si,ui} described.
+
+------------------------------------------------------------------------
+r1830 | vlefevre | 2002-04-07 23:22:34 +0000 (Sun, 07 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next (and last?) pre-release.
+
+------------------------------------------------------------------------
+r1829 | vlefevre | 2002-04-07 23:11:04 +0000 (Sun, 07 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Stricter test for HAVE_INFS.
+
+------------------------------------------------------------------------
+r1828 | vlefevre | 2002-04-07 20:20:15 +0000 (Sun, 07 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r1827 | vlefevre | 2002-04-07 20:10:31 +0000 (Sun, 07 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Added note about IRIX.
+
+------------------------------------------------------------------------
+r1826 | vlefevre | 2002-04-07 01:01:01 +0000 (Sun, 07 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1825 | vlefevre | 2002-04-07 00:38:47 +0000 (Sun, 07 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/exp.c
+ M /trunk/exp_2.c
+ M /trunk/get_d.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+mpfr_get_d -> mpfr_get_d1 and mpfr_get_d2 -> mpfr_get_d.
+
+------------------------------------------------------------------------
+r1824 | vlefevre | 2002-04-06 01:01:29 +0000 (Sat, 06 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1823 | vlefevre | 2002-04-06 00:54:50 +0000 (Sat, 06 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+Update.
+
+------------------------------------------------------------------------
+r1822 | vlefevre | 2002-04-05 23:56:33 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+New file from Paul.
+
+------------------------------------------------------------------------
+r1821 | vlefevre | 2002-04-05 12:31:59 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+COPYING.LIB removed.
+
+------------------------------------------------------------------------
+r1820 | vlefevre | 2002-04-05 12:29:11 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/COPYING
+ D /trunk/COPYING.LIB
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/cbrt.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/generic.c
+ M /trunk/get_d.c
+ M /trunk/get_str.c
+ M /trunk/get_z_exp.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inp_str.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/minmax.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfi.c
+ M /trunk/mpfi.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-math.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/rnd_mode.c
+ M /trunk/round_prec.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_inf.c
+ M /trunk/set_nan.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sin_cos.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/srandom.h
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/uceil_exp2.c
+ M /trunk/uceil_log2.c
+ M /trunk/ufloor_log2.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+COPYING.LIB -> COPYING.
+
+------------------------------------------------------------------------
+r1819 | vlefevre | 2002-04-05 12:14:11 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README
+ A /trunk/README.dev
+
+README.dev added.
+
+------------------------------------------------------------------------
+r1818 | zimmerma | 2002-04-05 12:08:31 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+put back label removed by error
+
+------------------------------------------------------------------------
+r1817 | zimmerma | 2002-04-05 12:05:35 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+removed _FPU_RC_NEAREST ... for x86 (not used any more, now use fenv.h)
+
+------------------------------------------------------------------------
+r1816 | zimmerma | 2002-04-05 12:04:40 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/sqrt.c
+
+removed nested TMP_MARK's (problems when configuring gmp with --disable-alloca)
+
+------------------------------------------------------------------------
+r1815 | zimmerma | 2002-04-05 11:47:25 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+fixed pb with two markers (with --disable-alloca)
+
+------------------------------------------------------------------------
+r1814 | vlefevre | 2002-04-05 11:40:58 +0000 (Fri, 05 Apr 2002) | 2 lines
+Changed paths:
+ D /trunk/shortmul.c
+
+Removed (not used).
+
+------------------------------------------------------------------------
+r1813 | zimmerma | 2002-04-05 07:21:21 +0000 (Fri, 05 Apr 2002) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr-test.h
+ M /trunk/rnd_mode.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+use AC_CHECK_HEADERS to check for fenv.h
+and AC_CHECK_FUNCS to check for lrand48
+
+------------------------------------------------------------------------
+r1812 | vlefevre | 2002-04-04 23:44:27 +0000 (Thu, 04 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/README
+
+Added "VERSION" and "prepare" descriptions.
+
+------------------------------------------------------------------------
+r1811 | zimmerma | 2002-04-04 14:20:19 +0000 (Thu, 04 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed bugs found by Nathalie
+
+------------------------------------------------------------------------
+r1810 | vlefevre | 2002-04-04 13:50:20 +0000 (Thu, 04 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1809 | vlefevre | 2002-04-04 13:46:23 +0000 (Thu, 04 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Removed check for extended precision, as no longer used.
+
+------------------------------------------------------------------------
+r1808 | zimmerma | 2002-04-04 11:46:32 +0000 (Thu, 04 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+added check for denormalized numbers
+
+------------------------------------------------------------------------
+r1807 | zimmerma | 2002-04-04 10:19:32 +0000 (Thu, 04 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new functions to implement
+
+------------------------------------------------------------------------
+r1806 | vlefevre | 2002-04-03 16:28:40 +0000 (Wed, 03 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update for the next pre-release.
+
+------------------------------------------------------------------------
+r1805 | vlefevre | 2002-04-03 13:52:42 +0000 (Wed, 03 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+-ffloat-store is a gcc option.
+
+------------------------------------------------------------------------
+r1804 | vlefevre | 2002-04-03 13:40:49 +0000 (Wed, 03 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Added 4th argument to AC_TRY_RUN.
+
+------------------------------------------------------------------------
+r1803 | vlefevre | 2002-04-03 12:12:45 +0000 (Wed, 03 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Re-fix.
+
+------------------------------------------------------------------------
+r1802 | zimmerma | 2002-04-03 10:11:59 +0000 (Wed, 03 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr-test.h
+
+added check for fpu_control.h
+
+------------------------------------------------------------------------
+r1801 | zimmerma | 2002-04-03 10:02:27 +0000 (Wed, 03 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added missing cast to double
+
+------------------------------------------------------------------------
+r1800 | vlefevre | 2002-04-02 23:42:48 +0000 (Tue, 02 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+[ ] used around error message.
+
+------------------------------------------------------------------------
+r1799 | vlefevre | 2002-04-02 15:44:50 +0000 (Tue, 02 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+Update.
+
+------------------------------------------------------------------------
+r1798 | vlefevre | 2002-04-02 15:36:51 +0000 (Tue, 02 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Check BITS_PER_MP_LIMB and BYTES_PER_MP_LIMB.
+
+------------------------------------------------------------------------
+r1797 | vlefevre | 2002-04-02 12:30:24 +0000 (Tue, 02 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr-impl.h
+ D /trunk/sqrtrem.c
+
+sqrtrem.c removed.
+
+------------------------------------------------------------------------
+r1796 | vlefevre | 2002-04-02 11:50:27 +0000 (Tue, 02 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/ChangeLog
+
+New ChangeLog file (generated by rcs2log).
+
+------------------------------------------------------------------------
+r1795 | vlefevre | 2002-04-02 11:42:03 +0000 (Tue, 02 Apr 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Suppress PACKAGE and VERSION definitions for the compiler.
+
+------------------------------------------------------------------------
+r1794 | zimmerma | 2002-04-01 17:28:42 +0000 (Mon, 01 Apr 2002) | 2 lines
+Changed paths:
+ D /trunk/Configure
+
+old file
+
+------------------------------------------------------------------------
+r1793 | zimmerma | 2002-03-31 14:58:47 +0000 (Sun, 31 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+more "internal" changes suggested by Vincent
+
+------------------------------------------------------------------------
+r1792 | zimmerma | 2002-03-31 14:48:14 +0000 (Sun, 31 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added suggestions from Kevin in "internals"
+
+------------------------------------------------------------------------
+r1791 | zimmerma | 2002-03-28 09:01:28 +0000 (Thu, 28 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+added test for denorms
+
+------------------------------------------------------------------------
+r1790 | zimmerma | 2002-03-28 09:01:06 +0000 (Thu, 28 Mar 2002) | 3 lines
+Changed paths:
+ M /trunk/set_d.c
+
+on a 32-bit machine, denormalized numbers with high 32 bits to 0
+were flushed to zero
+
+------------------------------------------------------------------------
+r1789 | zimmerma | 2002-03-27 15:26:18 +0000 (Wed, 27 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+
+sign of sin(-1) was not set
+
+------------------------------------------------------------------------
+r1788 | zimmerma | 2002-03-27 15:25:54 +0000 (Wed, 27 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tasin.c
+
+added check for asin(-1)
+
+------------------------------------------------------------------------
+r1787 | zimmerma | 2002-03-27 14:38:50 +0000 (Wed, 27 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/texp2.c
+
+added one test
+
+------------------------------------------------------------------------
+r1786 | zimmerma | 2002-03-27 14:38:29 +0000 (Wed, 27 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+previous fix was completely wrong
+
+------------------------------------------------------------------------
+r1785 | zimmerma | 2002-03-27 14:37:39 +0000 (Wed, 27 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+
+fixed pb in cmp_si when i = -2^31 (then beware that -1 * i < 0 !!!)
+
+------------------------------------------------------------------------
+r1784 | zimmerma | 2002-03-27 14:09:35 +0000 (Wed, 27 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+added check for underflow
+
+------------------------------------------------------------------------
+r1783 | zimmerma | 2002-03-26 18:39:57 +0000 (Tue, 26 Mar 2002) | 4 lines
+Changed paths:
+ A /trunk/tests/Makefile.in
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+- use mpfr_test_init to initialize harware floats
+- use #ifdef HAVE_INFS when using DBL_NAN, ...
+- fixed some problems with wrongly converted f-p values (esp. under IRIX)
+
+------------------------------------------------------------------------
+r1782 | zimmerma | 2002-03-26 18:36:49 +0000 (Tue, 26 Mar 2002) | 3 lines
+Changed paths:
+ M /trunk/configure.in
+
+use AC_TRY_CPP instead of AC_TRY_RUN for fenv.h
+(otherwise fails on Itanium)
+
+------------------------------------------------------------------------
+r1781 | zimmerma | 2002-03-26 18:35:56 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+added function mpfr_test_init to initialize full IEEE behaviour
+
+------------------------------------------------------------------------
+r1780 | zimmerma | 2002-03-26 18:34:54 +0000 (Tue, 26 Mar 2002) | 3 lines
+Changed paths:
+ M /trunk/fma.c
+
+put back simple algorithm that computes x*y exactly and then
+directly calls mpfr_add, to avoid wrong inexact flags
+
+------------------------------------------------------------------------
+r1779 | zimmerma | 2002-03-26 09:40:54 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tdump.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+
+added 2002 in copyright line
+
+------------------------------------------------------------------------
+r1778 | zimmerma | 2002-03-26 09:40:06 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+fixed problem on x86 (set precision to double to avoid double rounding)
+
+------------------------------------------------------------------------
+r1777 | zimmerma | 2002-03-26 09:36:52 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+added check for valid 1/0, denormalized, and extended precision
+
+------------------------------------------------------------------------
+r1776 | vlefevre | 2002-03-26 09:29:34 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+New-style comment removed.
+
+------------------------------------------------------------------------
+r1775 | zimmerma | 2002-03-26 09:19:05 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added a description of the mpfr_t type in "Internals"
+
+------------------------------------------------------------------------
+r1774 | vlefevre | 2002-03-26 01:50:35 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_sub.c
+
+#include <unistd.h> removed. Redefined macros ABS removed.
+
+------------------------------------------------------------------------
+r1773 | vlefevre | 2002-03-26 01:35:24 +0000 (Tue, 26 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tui_div.c
+
+Patch by Kevin Ryde + misc fixes.
+
+------------------------------------------------------------------------
+r1772 | zimmerma | 2002-03-25 17:10:50 +0000 (Mon, 25 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+replaced getpid() by time(NULL)
+
+------------------------------------------------------------------------
+r1771 | zimmerma | 2002-03-25 14:56:28 +0000 (Mon, 25 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+MPFR_SIZE and sign were incorrectly set [thanks Kevin]
+
+------------------------------------------------------------------------
+r1770 | zimmerma | 2002-03-25 13:53:31 +0000 (Mon, 25 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added check_nan (from Kevin)
+
+------------------------------------------------------------------------
+r1769 | zimmerma | 2002-03-25 13:52:26 +0000 (Mon, 25 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+fixed bug for sqrt(-0) found by Kevin [NaN flag not cleared]
+
+------------------------------------------------------------------------
+r1768 | vlefevre | 2002-03-22 15:28:29 +0000 (Fri, 22 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+Error message now copes with extended precision.
+
+------------------------------------------------------------------------
+r1767 | zimmerma | 2002-03-22 14:41:46 +0000 (Fri, 22 Mar 2002) | 5 lines
+Changed paths:
+ M /trunk/configure.in
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.texi
+ M /trunk/rnd_mode.c
+ M /trunk/tests/tget_d.c
+
+added test in configure for checking rand48 functions (HAVE_RAND48)
+and fenv.h (HAVE_FENV)
+added mpfr_set_machine_rnd_mode (if fenv.h exists)
+replaced TEST by HAVE_FENV
+
+------------------------------------------------------------------------
+r1766 | vlefevre | 2002-03-22 01:48:18 +0000 (Fri, 22 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+Missing #include.
+
+------------------------------------------------------------------------
+r1765 | vlefevre | 2002-03-22 01:25:57 +0000 (Fri, 22 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/set_nan.c
+
+MPFR_RETNAN shouldn't be used as no value is returned.
+
+------------------------------------------------------------------------
+r1764 | vlefevre | 2002-03-22 01:22:29 +0000 (Fri, 22 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/set_inf.c
+
+Regarde 0 as positive rather than negative (though it's better not to use it).
+
+------------------------------------------------------------------------
+r1763 | vlefevre | 2002-03-22 01:09:58 +0000 (Fri, 22 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/isinteger.c
+
+Memory leak (patch by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1762 | zimmerma | 2002-03-21 15:35:48 +0000 (Thu, 21 Mar 2002) | 4 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+replaced rand/lrand48, drand48, srand/srand48 by macros
+ LONG_RAND, DBL_RAND, SEED_RAND
+and time(NULL) by getpid()
+
+------------------------------------------------------------------------
+r1761 | zimmerma | 2002-03-21 15:34:18 +0000 (Thu, 21 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+added macros LONG_RAND, DBL_RAND, SEED_RAND
+
+------------------------------------------------------------------------
+r1760 | zimmerma | 2002-03-21 10:04:49 +0000 (Thu, 21 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added VERSION and mpfr-math.h for "make dist"
+
+------------------------------------------------------------------------
+r1759 | zimmerma | 2002-03-19 16:45:01 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ A /trunk/set_inf.c
+ A /trunk/set_nan.c
+
+new functions
+
+------------------------------------------------------------------------
+r1758 | zimmerma | 2002-03-19 16:44:32 +0000 (Tue, 19 Mar 2002) | 3 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+now use macros DBL_NAN, DBL_POS_INF, DBL_NEG_INF,
+and functions mpfr_set_nan, mpfr_set_inf
+
+------------------------------------------------------------------------
+r1757 | zimmerma | 2002-03-19 16:42:26 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+defined macros for 0/0, 1/0, -1/0
+
+------------------------------------------------------------------------
+r1756 | zimmerma | 2002-03-19 16:40:41 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+added new functions mpfr_set_nan and mpfr_set_inf
+
+------------------------------------------------------------------------
+r1755 | vlefevre | 2002-03-19 15:09:16 +0000 (Tue, 19 Mar 2002) | 3 lines
+Changed paths:
+ A /trunk/VERSION
+ M /trunk/configure.in
+
+File VERSION added. Contains the next version (currently 2.0.1).
+configure.in updated accordingly.
+
+------------------------------------------------------------------------
+r1754 | vlefevre | 2002-03-19 08:47:22 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+ A /trunk/mpfr-math.h
+ M /trunk/tests/tadd.c
+
+Macros MPFR_DBL_NAN, MPFR_DBL_INFP and MPFR_DBL_INFM.
+
+------------------------------------------------------------------------
+r1753 | zimmerma | 2002-03-19 02:11:56 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+MP_LIMB_T_HIGHBIT -> ULONG_HIGHBIT
+
+------------------------------------------------------------------------
+r1752 | zimmerma | 2002-03-19 02:11:30 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+moved code under #ifdef
+
+------------------------------------------------------------------------
+r1751 | zimmerma | 2002-03-19 02:10:50 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+moved code under #ifdef TEST
+
+------------------------------------------------------------------------
+r1750 | zimmerma | 2002-03-19 02:10:13 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+remove variable sizer (not used)
+
+------------------------------------------------------------------------
+r1749 | zimmerma | 2002-03-19 02:09:11 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/cbrt.c
+
+Library GPL -> Lesser GPL
+
+------------------------------------------------------------------------
+r1748 | zimmerma | 2002-03-19 02:00:53 +0000 (Tue, 19 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated
+
+------------------------------------------------------------------------
+r1747 | vlefevre | 2002-03-17 22:13:03 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Some changes in the types.
+
+------------------------------------------------------------------------
+r1746 | zimmerma | 2002-03-17 22:13:02 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+changed Nt variable to signed
+
+------------------------------------------------------------------------
+r1745 | vlefevre | 2002-03-17 22:03:14 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log2.c
+
+Bugs fixed.
+
+------------------------------------------------------------------------
+r1744 | zimmerma | 2002-03-17 17:53:04 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+added back mpfr_sin_cos
+
+------------------------------------------------------------------------
+r1743 | zimmerma | 2002-03-17 17:50:27 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ A /trunk/sin_cos.c
+
+new version (adapted from sin.c)
+
+------------------------------------------------------------------------
+r1742 | zimmerma | 2002-03-17 17:49:08 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/ttan.c
+
+added tests for tan(3*Pi/4) and tan(7*Pi/4)
+
+------------------------------------------------------------------------
+r1741 | zimmerma | 2002-03-17 17:48:38 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tan.c
+
+fixed bug for tan(3*Pi/4) [wrong sign]
+
+------------------------------------------------------------------------
+r1740 | zimmerma | 2002-03-17 17:27:42 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog10.c
+
+added test for log(10^n)
+
+------------------------------------------------------------------------
+r1739 | zimmerma | 2002-03-17 17:21:31 +0000 (Sun, 17 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/log10.c
+
+fixed infinite loop problem for log(10^n)
+
+------------------------------------------------------------------------
+r1738 | vlefevre | 2002-03-13 01:16:23 +0000 (Wed, 13 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Fix (patch by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1737 | vlefevre | 2002-03-13 00:44:20 +0000 (Wed, 13 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/get_d.c
+
+Do not read the exponent if it has no meaning.
+
+------------------------------------------------------------------------
+r1736 | vlefevre | 2002-03-12 23:58:10 +0000 (Tue, 12 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr_random update (patch by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1735 | vlefevre | 2002-03-12 23:53:47 +0000 (Tue, 12 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+2 more known bugs.
+
+------------------------------------------------------------------------
+r1734 | vlefevre | 2002-03-12 23:48:06 +0000 (Tue, 12 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr_a{cos,sin,tan} documentation at a better place.
+
+------------------------------------------------------------------------
+r1733 | vlefevre | 2002-03-12 23:43:10 +0000 (Tue, 12 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+
+Some mpfr_clear added (patch by Kevin Ryde).
+
+------------------------------------------------------------------------
+r1732 | vlefevre | 2002-03-11 16:54:55 +0000 (Mon, 11 Mar 2002) | 3 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/get_d.c
+ M /trunk/tests/tget_d.c
+
+mpfr_get_d3 partially rewritten (to follow the new specifications).
+tget_d.c updated because of changes in get_d.c.
+
+------------------------------------------------------------------------
+r1731 | vlefevre | 2002-03-11 13:52:30 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/print_rnd_mode.c
+
+Return a null pointer if rnd_mode is an invalid rounding mode.
+
+------------------------------------------------------------------------
+r1730 | zimmerma | 2002-03-11 13:43:18 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+set sign before calling mpfr_check_range
+
+------------------------------------------------------------------------
+r1729 | zimmerma | 2002-03-11 13:40:02 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+stupid typo in previous commit
+
+------------------------------------------------------------------------
+r1728 | zimmerma | 2002-03-11 13:36:40 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+removed expx (not used)
+
+------------------------------------------------------------------------
+r1727 | zimmerma | 2002-03-11 13:35:12 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+ M /trunk/tests/tset_si.c
+
+fixed typo (ai [potentially unsigned] replaced by i)
+
+------------------------------------------------------------------------
+r1726 | vlefevre | 2002-03-11 13:16:54 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/get_d.c
+ M /trunk/get_str.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/tests/tget_d.c
+
+New mpfr_get_d, mpfr_get_d2, mpfr_get_d3.
+
+------------------------------------------------------------------------
+r1725 | zimmerma | 2002-03-11 13:00:29 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/print_rnd_mode.c
+
+added return
+
+------------------------------------------------------------------------
+r1724 | vlefevre | 2002-03-11 12:41:00 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_d.c
+ M /trunk/set_d.c
+
+set_d.c split into get_d.c and set_d.c
+
+------------------------------------------------------------------------
+r1723 | daney | 2002-03-11 12:38:44 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ A /trunk/cbrt.c
+
+add cbrt in fonctionnality
+
+------------------------------------------------------------------------
+r1722 | vlefevre | 2002-03-11 10:53:10 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Bug removed.
+
+------------------------------------------------------------------------
+r1721 | vlefevre | 2002-03-11 05:44:18 +0000 (Mon, 11 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/extract.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+#include changes.
+
+------------------------------------------------------------------------
+r1720 | zimmerma | 2002-03-07 16:42:57 +0000 (Thu, 07 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/sinh.c
+
+fixed problem when te=ti=1 (i.e. t=0) found by Kevin Ryde
+
+------------------------------------------------------------------------
+r1719 | zimmerma | 2002-03-07 16:04:54 +0000 (Thu, 07 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+simplified test4()
+
+------------------------------------------------------------------------
+r1718 | vlefevre | 2002-03-06 17:56:06 +0000 (Wed, 06 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/TODO
+
+Update.
+
+------------------------------------------------------------------------
+r1717 | vlefevre | 2002-03-06 17:05:26 +0000 (Wed, 06 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r1716 | vlefevre | 2002-03-06 16:32:50 +0000 (Wed, 06 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Patch by Kevin Ryde concerning nodes/menus.
+
+------------------------------------------------------------------------
+r1715 | vlefevre | 2002-03-05 00:13:20 +0000 (Tue, 05 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Casts fixed.
+
+------------------------------------------------------------------------
+r1714 | vlefevre | 2002-03-04 23:35:05 +0000 (Mon, 04 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/get_z_exp.c
+ D /trunk/internal_ceil_exp2.c
+ D /trunk/internal_ceil_log2.c
+ D /trunk/internal_floor_log2.c
+ D /trunk/mpz_set_fr.c
+ A /trunk/uceil_exp2.c
+ A /trunk/uceil_log2.c
+ A /trunk/ufloor_log2.c
+
+File renaming.
+
+------------------------------------------------------------------------
+r1713 | vlefevre | 2002-03-04 23:05:20 +0000 (Mon, 04 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_one_ulp.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_ui.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_2si.c
+ M /trunk/div_2ui.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/init2.c
+ M /trunk/inp_str.c
+ M /trunk/internal_ceil_exp2.c
+ M /trunk/internal_ceil_log2.c
+ M /trunk/internal_floor_log2.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/minmax.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfi.c
+ M /trunk/mpfi.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_2si.c
+ M /trunk/mul_2ui.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rint.c
+ M /trunk/rnd_mode.c
+ M /trunk/round_prec.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sqrtrem.c
+ M /trunk/srandom.h
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub_one_ulp.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tconst_euler.c
+ M /trunk/tests/tconst_log2.c
+ M /trunk/tests/tconst_pi.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/trint.c
+ M /trunk/tests/tround_prec.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+Copyright line changed.
+
+------------------------------------------------------------------------
+r1712 | zimmerma | 2002-03-01 13:03:11 +0000 (Fri, 01 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+updated
+
+------------------------------------------------------------------------
+r1711 | zimmerma | 2002-03-01 13:02:03 +0000 (Fri, 01 Mar 2002) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/exp_2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpz_set_fr.c
+ M /trunk/pow.c
+
+changed name of mpz_set_fr to mpfr_get_z_exp
+
+------------------------------------------------------------------------
+r1710 | vlefevre | 2002-02-28 14:21:20 +0000 (Thu, 28 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+
+Removed some <math.h> dependencies.
+
+------------------------------------------------------------------------
+r1709 | vlefevre | 2002-02-28 00:19:56 +0000 (Thu, 28 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+Fixed.
+
+------------------------------------------------------------------------
+r1708 | vlefevre | 2002-02-28 00:19:46 +0000 (Thu, 28 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+mpfr_get_d rewritten (still needs to be fixed when the result is a subnormal).
+
+------------------------------------------------------------------------
+r1707 | vlefevre | 2002-02-27 18:16:29 +0000 (Wed, 27 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+
+mpfr_get_d2 tested.
+
+------------------------------------------------------------------------
+r1706 | vlefevre | 2002-02-27 14:29:18 +0000 (Wed, 27 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+Update.
+
+------------------------------------------------------------------------
+r1705 | vlefevre | 2002-02-27 14:02:18 +0000 (Wed, 27 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tset_d.c
+
+New tests.
+
+------------------------------------------------------------------------
+r1704 | vlefevre | 2002-02-27 14:00:16 +0000 (Wed, 27 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/configure.in
+
+Additional flags for gcc + minor changes.
+
+------------------------------------------------------------------------
+r1703 | vlefevre | 2002-02-27 13:57:51 +0000 (Wed, 27 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Minor update.
+
+------------------------------------------------------------------------
+r1702 | vlefevre | 2002-02-25 14:50:14 +0000 (Mon, 25 Feb 2002) | 7 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/set_d.c
+
+mpfr_get_d2 prototype changed (mp_exp_t instead of long).
+__mpfr_scale2 fixes: checks for integer overflows, signed zeros, exact
+rounding for subnormals in the rounding to the nearest mode (problems
+due to multiple roundings avoided).
+mpfr_get_d2: signed zeros taken into account. This function still needs
+to be rewritten (because of multiple roundings).
+
+------------------------------------------------------------------------
+r1701 | vlefevre | 2002-02-21 15:43:40 +0000 (Thu, 21 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/agm.c
+ A /trunk/internal_ceil_exp2.c
+ A /trunk/internal_ceil_log2.c
+ A /trunk/internal_floor_log2.c
+
+_mpfr_ceil_log2, _mpfr_floor_log2, _mpfr_ceil_exp2 in separate files.
+
+------------------------------------------------------------------------
+r1700 | vlefevre | 2002-02-19 16:05:52 +0000 (Tue, 19 Feb 2002) | 3 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Fixes, code clean-up and some asserts against integer overflows.
+Code need to be checked.
+
+------------------------------------------------------------------------
+r1699 | vlefevre | 2002-02-14 11:36:40 +0000 (Thu, 14 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/acos.c
+ M /trunk/agm.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/const_euler.c
+ M /trunk/const_log2.c
+ M /trunk/const_pi.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/gamma.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/tanh.c
+ M /trunk/zeta.c
+
+mpfr_{div,mul}_2exp -> mpfr_{div,mul}_2ui.
+
+------------------------------------------------------------------------
+r1698 | vlefevre | 2002-02-14 02:35:35 +0000 (Thu, 14 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Partial code clean-up and some asserts against integer overflows (2).
+
+------------------------------------------------------------------------
+r1697 | vlefevre | 2002-02-13 13:53:46 +0000 (Wed, 13 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+Partial code clean-up and some asserts against integer overflows.
+
+------------------------------------------------------------------------
+r1696 | vlefevre | 2002-02-13 13:18:12 +0000 (Wed, 13 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+MP_EXP_T_MAX and MP_EXP_T_MIN defined.
+
+------------------------------------------------------------------------
+r1695 | vlefevre | 2002-02-13 10:49:09 +0000 (Wed, 13 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Macros IS_POW2 and NOT_POW2.
+
+------------------------------------------------------------------------
+r1694 | vlefevre | 2002-02-12 17:11:50 +0000 (Tue, 12 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/ui_pow_ui.c
+
+Use mpfr_save_emin_emax and MPFR_RESTORE_RET.
+
+------------------------------------------------------------------------
+r1693 | vlefevre | 2002-02-12 16:41:50 +0000 (Tue, 12 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tdump.c
+
+Update due to changes in mpfr_get_str.
+
+------------------------------------------------------------------------
+r1692 | vlefevre | 2002-02-12 16:41:36 +0000 (Tue, 12 Feb 2002) | 4 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpz_set_fr.c
+ M /trunk/out_str.c
+
+mpfr_get_str: the returned exponent for 0 is 0 (like in frexp()).
+mpz_set_fr.c: comment added.
+out_str.c: minor changes.
+
+------------------------------------------------------------------------
+r1691 | vlefevre | 2002-02-12 15:59:02 +0000 (Tue, 12 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Update.
+
+------------------------------------------------------------------------
+r1690 | vlefevre | 2002-02-12 14:42:23 +0000 (Tue, 12 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/ui_pow_ui.c
+
+Bug fixed and other changes.
+
+------------------------------------------------------------------------
+r1689 | vlefevre | 2002-02-12 14:08:25 +0000 (Tue, 12 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+NULL -> null pointer and other small changes.
+
+------------------------------------------------------------------------
+r1688 | vlefevre | 2002-02-12 14:03:02 +0000 (Tue, 12 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+
+mpfr_get_str: null pointer returned in case of error, NaN taken into account.
+
+------------------------------------------------------------------------
+r1687 | vlefevre | 2002-02-11 14:59:18 +0000 (Mon, 11 Feb 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+
+mpfr_set_str partially rewritten to cope with integer overflows.
+The rounding code hasn't been fixed yet.
+
+------------------------------------------------------------------------
+r1686 | vlefevre | 2002-02-08 17:04:01 +0000 (Fri, 08 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Typo.
+
+------------------------------------------------------------------------
+r1685 | vlefevre | 2002-02-08 17:01:49 +0000 (Fri, 08 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_str.c
+
+mpfr_set_str: base must be between 2 and 36.
+
+------------------------------------------------------------------------
+r1684 | daney | 2002-02-06 15:34:46 +0000 (Wed, 06 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+chnage the return values
+
+------------------------------------------------------------------------
+r1683 | daney | 2002-02-06 15:34:15 +0000 (Wed, 06 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+Change the test return values
+
+------------------------------------------------------------------------
+r1682 | vlefevre | 2002-02-06 02:57:55 +0000 (Wed, 06 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Some optimizations.
+
+------------------------------------------------------------------------
+r1681 | vlefevre | 2002-02-04 01:04:59 +0000 (Mon, 04 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/pow_ui.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_sub.c
+
+Misc bug fixes and code clean-up.
+
+------------------------------------------------------------------------
+r1680 | vlefevre | 2002-02-04 00:16:27 +0000 (Mon, 04 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/pow.c
+
+Misc bug fixes and code clean-up.
+
+------------------------------------------------------------------------
+r1679 | vlefevre | 2002-02-03 02:59:44 +0000 (Sun, 03 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+
+For the value 0, return __mpfr_emin instead of 0.
+
+------------------------------------------------------------------------
+r1678 | vlefevre | 2002-02-01 21:35:34 +0000 (Fri, 01 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/agm.c
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/hypot.c
+ M /trunk/log.c
+ M /trunk/log10.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/pow_si.c
+
+Misc bug fixes and code clean-up.
+
+------------------------------------------------------------------------
+r1677 | hanrot | 2002-02-01 18:17:56 +0000 (Fri, 01 Feb 2002) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+Patch.
+
+------------------------------------------------------------------------
+r1676 | vlefevre | 2002-01-30 14:57:31 +0000 (Wed, 30 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/trint.c
+
+Bux fixed.
+
+------------------------------------------------------------------------
+r1675 | vlefevre | 2002-01-30 14:57:24 +0000 (Wed, 30 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+mpfr_set_z rewritten.
+
+------------------------------------------------------------------------
+r1674 | vlefevre | 2002-01-30 12:37:04 +0000 (Wed, 30 Jan 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Update concerning mpfr_round_prec, mpfr_rint, mpfr_ceil, mpfr_floor,
+mpfr_round and mpfr_trunc.
+
+------------------------------------------------------------------------
+r1673 | vlefevre | 2002-01-30 04:57:52 +0000 (Wed, 30 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/reuse.c
+ A /trunk/tests/trint.c
+
+Tests added (mpfr_trunc, mpfr_floor, mpfr_ceil, mpfr_round).
+
+------------------------------------------------------------------------
+r1672 | vlefevre | 2002-01-30 04:57:10 +0000 (Wed, 30 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr.h
+ A /trunk/rint.c
+ D /trunk/trunc.c
+
+mpfr_rint, mpfr_trunc, mpfr_floor, mpfr_ceil, mpfr_round rewritten.
+
+------------------------------------------------------------------------
+r1671 | vlefevre | 2002-01-25 14:00:37 +0000 (Fri, 25 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/cos.c
+ M /trunk/get_str.c
+ M /trunk/mpfr.h
+ D /trunk/round.c
+ A /trunk/round_prec.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/tacos.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tgamma.c
+ D /trunk/tests/tround.c
+ A /trunk/tests/tround_prec.c
+
+mpfr_round -> mpfr_round_prec.
+
+------------------------------------------------------------------------
+r1670 | vlefevre | 2002-01-25 13:43:31 +0000 (Fri, 25 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Code reformatted.
+
+------------------------------------------------------------------------
+r1669 | vlefevre | 2002-01-23 00:08:52 +0000 (Wed, 23 Jan 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+MAX, MIN, ABS macros undefined before being redefined.
+Fix in ABS macro.
+
+------------------------------------------------------------------------
+r1668 | vlefevre | 2002-01-22 02:29:47 +0000 (Tue, 22 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+Example with high bit set.
+
+------------------------------------------------------------------------
+r1667 | vlefevre | 2002-01-22 02:29:35 +0000 (Tue, 22 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Fix (Kevin Ryde).
+
+------------------------------------------------------------------------
+r1666 | vlefevre | 2002-01-22 00:45:44 +0000 (Tue, 22 Jan 2002) | 4 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/sqrt.c
+
+MPFR_PREC_MAX redefined.
+MPFR_INTPREC_MAX defined (internal maximum precision).
+Some integer overflow detection.
+
+------------------------------------------------------------------------
+r1665 | vlefevre | 2002-01-21 11:37:41 +0000 (Mon, 21 Jan 2002) | 3 lines
+Changed paths:
+ M /trunk/sqrt_ui.c
+
+Set sign of sqrt(0).
+Support for exponent range.
+
+------------------------------------------------------------------------
+r1664 | vlefevre | 2002-01-21 10:38:37 +0000 (Mon, 21 Jan 2002) | 3 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+can_round type changed: char -> int.
+Case sqrt(0) improved.
+
+------------------------------------------------------------------------
+r1663 | vlefevre | 2002-01-21 10:26:13 +0000 (Mon, 21 Jan 2002) | 4 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Bug fixes:
+ * return 1 -> MPFR_RET_NAN
+ * a MPFR_CLEAR_INF was missing.
+
+------------------------------------------------------------------------
+r1662 | vlefevre | 2002-01-20 00:17:27 +0000 (Sun, 20 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/mpfr-impl.h
+ M /trunk/sub_ui.c
+
+New macro MPFR_RESTORE_RET.
+
+------------------------------------------------------------------------
+r1661 | vlefevre | 2002-01-18 16:13:33 +0000 (Fri, 18 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Code clean-up (goto suppressed).
+
+------------------------------------------------------------------------
+r1660 | vlefevre | 2002-01-18 15:40:30 +0000 (Fri, 18 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Cases 0 * 0 + 0.
+
+------------------------------------------------------------------------
+r1659 | vlefevre | 2002-01-18 11:33:22 +0000 (Fri, 18 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Nt: int -> mp_prec_t
+
+------------------------------------------------------------------------
+r1658 | vlefevre | 2002-01-18 11:15:54 +0000 (Fri, 18 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+ M /trunk/tests/tacosh.c
+
+<> changed back to "".
+
+------------------------------------------------------------------------
+r1657 | daney | 2002-01-18 09:58:00 +0000 (Fri, 18 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+
+change "" -> <> in headers
+
+------------------------------------------------------------------------
+r1656 | daney | 2002-01-18 09:51:03 +0000 (Fri, 18 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Change indendation + replace "" -> <> in header
+
+------------------------------------------------------------------------
+r1655 | vlefevre | 2002-01-17 21:45:41 +0000 (Thu, 17 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Particular cases rewritten.
+
+------------------------------------------------------------------------
+r1654 | vlefevre | 2002-01-17 20:33:21 +0000 (Thu, 17 Jan 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+Test "__hpux", not "hpux". Mask off mrand48 return value to 31 bits
+to work around sloppy mpfr #include practices. (Torbjorn Granlund)
+
+------------------------------------------------------------------------
+r1653 | vlefevre | 2002-01-17 20:29:58 +0000 (Thu, 17 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog10.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/tui_pow.c
+
+#include fixes (Torbjorn Granlund).
+
+------------------------------------------------------------------------
+r1652 | vlefevre | 2002-01-16 15:14:09 +0000 (Wed, 16 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Comments were incorrect.
+
+------------------------------------------------------------------------
+r1651 | vlefevre | 2002-01-15 11:23:34 +0000 (Tue, 15 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Note concerning mpfr_trunc, mpfr_floor and mpfr_ceil.
+
+------------------------------------------------------------------------
+r1650 | vlefevre | 2002-01-14 13:09:42 +0000 (Mon, 14 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Special cases.
+
+------------------------------------------------------------------------
+r1649 | vlefevre | 2002-01-12 01:27:53 +0000 (Sat, 12 Jan 2002) | 3 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/shortmul.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+Patches by Kevin Ryde for K&R compilers
+and other fixes in prototypes.
+
+------------------------------------------------------------------------
+r1648 | vlefevre | 2002-01-10 22:20:28 +0000 (Thu, 10 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+Test check_min added.
+
+------------------------------------------------------------------------
+r1647 | vlefevre | 2002-01-10 21:45:00 +0000 (Thu, 10 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+Test check_max added.
+
+------------------------------------------------------------------------
+r1646 | vlefevre | 2002-01-10 13:42:21 +0000 (Thu, 10 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+ M /trunk/cmp2.c
+ M /trunk/log.c
+
+Spelling: "canceled"
+
+------------------------------------------------------------------------
+r1645 | zimmerma | 2002-01-10 13:05:58 +0000 (Thu, 10 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+GMP_PROTO change was already done by Vincent
+
+------------------------------------------------------------------------
+r1644 | zimmerma | 2002-01-10 12:58:47 +0000 (Thu, 10 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+prepare change PROTO -> GMP_PROTO
+
+------------------------------------------------------------------------
+r1643 | vlefevre | 2002-01-04 14:41:33 +0000 (Fri, 04 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/sub_one_ulp.c
+
+The precision can no longer be 1.
+
+------------------------------------------------------------------------
+r1642 | vlefevre | 2002-01-04 03:07:23 +0000 (Fri, 04 Jan 2002) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+__GMP_PROTO defined if not already defined.
+
+------------------------------------------------------------------------
+r1641 | vlefevre | 2002-01-04 02:57:08 +0000 (Fri, 04 Jan 2002) | 5 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/agm.c
+ M /trunk/cmp2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+
+Optimization: mpfr_cmp2 now accepts any combination of real arguments
+and computes the sign of |b| - |c| (in addition to the number of
+cancelled bits); mpfr_add, mpfr_sub, mpfr_sub1, mpfr_agm and some
+tests updated to take this change into account.
+
+------------------------------------------------------------------------
+r1640 | zimmerma | 2001-12-21 16:33:10 +0000 (Fri, 21 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+added check for sin(3*Pi/2)
+
+------------------------------------------------------------------------
+r1639 | zimmerma | 2001-12-21 16:33:02 +0000 (Fri, 21 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+
+fixed bug for sin(3*Pi/2)
+
+------------------------------------------------------------------------
+r1638 | vlefevre | 2001-12-19 15:50:01 +0000 (Wed, 19 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+Global NaN flag set when result is NaN.
+
+------------------------------------------------------------------------
+r1637 | zimmerma | 2001-12-19 14:41:04 +0000 (Wed, 19 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+forgot to clear nan flag for Inf
+
+------------------------------------------------------------------------
+r1636 | zimmerma | 2001-12-19 13:32:05 +0000 (Wed, 19 Dec 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+changed description of mpfr_cmp to correspond to the implementation:
+NaNs are not allowed
+
+------------------------------------------------------------------------
+r1635 | zimmerma | 2001-12-19 12:39:49 +0000 (Wed, 19 Dec 2001) | 6 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+fixed mpfr_cmp2 : there was a bug noticed by Nicolas Magaud and Didier
+Bondyfalat for inputs:
+100 011 111
+100 010 110
+where it gave 8 instead of 5.
+
+------------------------------------------------------------------------
+r1634 | vlefevre | 2001-12-19 10:44:15 +0000 (Wed, 19 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/sub1.c
+
+Better comments.
+
+------------------------------------------------------------------------
+r1633 | zimmerma | 2001-12-10 09:20:59 +0000 (Mon, 10 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+ M /trunk/algorithms.tex
+
+added "PI and the AGM"
+
+------------------------------------------------------------------------
+r1632 | vlefevre | 2001-12-06 17:25:46 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tlog10.c
+ A /trunk/tests/tlog2.c
+ D /trunk/tests/tlog_base_10.c
+ D /trunk/tests/tlog_base_2.c
+
+Files renamed (log in base 2 and 10).
+
+------------------------------------------------------------------------
+r1631 | vlefevre | 2001-12-06 17:22:14 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tconst_euler.c
+ A /trunk/tests/tconst_log2.c
+ A /trunk/tests/tconst_pi.c
+ D /trunk/tests/teuler.c
+ D /trunk/tests/tlog2.c
+ D /trunk/tests/tpi.c
+
+Files renamed (constants).
+
+------------------------------------------------------------------------
+r1630 | vlefevre | 2001-12-06 17:12:59 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ D /trunk/aclocal.m4
+
+File aclocal.m4 removed, as generated by aclocal (called by prepare).
+
+------------------------------------------------------------------------
+r1629 | vlefevre | 2001-12-06 17:02:18 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/log10.c
+ A /trunk/log2.c
+ D /trunk/log_base_10.c
+ D /trunk/log_base_2.c
+
+Files log_base_*.c renamed.
+
+------------------------------------------------------------------------
+r1628 | vlefevre | 2001-12-06 16:53:25 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/const_euler.c
+ A /trunk/const_log2.c
+ A /trunk/const_pi.c
+ D /trunk/euler.c
+ D /trunk/log2.c
+ D /trunk/pi.c
+
+Functions (constants) renamed.
+
+------------------------------------------------------------------------
+r1627 | vlefevre | 2001-12-06 16:33:10 +0000 (Thu, 06 Dec 2001) | 3 lines
+Changed paths:
+ D /trunk/Makefile.in
+ D /trunk/configure
+ D /trunk/tests/Makefile.in
+
+Files configure, Makefile.in, tests/Makefile.in removed.
+Use the `prepare' script to generate them.
+
+------------------------------------------------------------------------
+r1626 | vlefevre | 2001-12-06 12:37:05 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+Removed 2 bugs.
+
+------------------------------------------------------------------------
+r1625 | vlefevre | 2001-12-06 12:12:43 +0000 (Thu, 06 Dec 2001) | 2 lines
+Changed paths:
+ A /trunk/prepare
+
+Initial release.
+
+------------------------------------------------------------------------
+r1624 | zimmerma | 2001-12-05 17:06:03 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added arc-tangent (from Mathieu)
+
+------------------------------------------------------------------------
+r1623 | zimmerma | 2001-12-05 16:29:15 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added paragraph on asin and acos from Mathieu Dutour
+
+------------------------------------------------------------------------
+r1622 | zimmerma | 2001-12-05 16:28:31 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ A /trunk/tests/tacos.c
+
+added tacos
+
+------------------------------------------------------------------------
+r1621 | zimmerma | 2001-12-05 16:27:44 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+in check5, test NaNs before calling mpfr_cmp
+
+------------------------------------------------------------------------
+r1620 | zimmerma | 2001-12-05 16:26:56 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+added acos
+
+------------------------------------------------------------------------
+r1619 | zimmerma | 2001-12-05 16:26:34 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added acos.c
+
+------------------------------------------------------------------------
+r1618 | zimmerma | 2001-12-05 16:26:02 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ A /trunk/acos.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+added acos (from Mathieu Dutour)
+
+------------------------------------------------------------------------
+r1617 | zimmerma | 2001-12-05 16:25:10 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+use now new sqrtrem from gmp-4.0
+
+------------------------------------------------------------------------
+r1616 | zimmerma | 2001-12-05 16:08:30 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+improved test (avoid mpfr_get_d)
+
+------------------------------------------------------------------------
+r1615 | zimmerma | 2001-12-05 15:15:47 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+removed isnan prototype
+
+------------------------------------------------------------------------
+r1614 | zimmerma | 2001-12-05 15:11:47 +0000 (Wed, 05 Dec 2001) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+added stdlib.h for exit
+
+------------------------------------------------------------------------
+r1613 | zimmerma | 2001-11-30 17:55:16 +0000 (Fri, 30 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/dump.c
+ M /trunk/tests/tdump.c
+
+test NaN before Inf
+changed precision to 2 for test
+
+------------------------------------------------------------------------
+r1612 | vlefevre | 2001-11-30 15:57:22 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/set_prc_raw.c
+
+Cast added.
+
+------------------------------------------------------------------------
+r1611 | zimmerma | 2001-11-30 14:48:45 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+added a new test (worst case)
+
+------------------------------------------------------------------------
+r1610 | zimmerma | 2001-11-30 14:48:12 +0000 (Fri, 30 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/atan.c
+
+nouvelle version de Mathieu Dutour,
+corrigeant certains bugs avec les pires cas de Vincent
+
+------------------------------------------------------------------------
+r1609 | vlefevre | 2001-11-30 14:37:25 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+ M /trunk/set_d.c
+
+#include order changed.
+
+------------------------------------------------------------------------
+r1608 | vlefevre | 2001-11-30 14:29:38 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+Misc fixes.
+
+------------------------------------------------------------------------
+r1607 | vlefevre | 2001-11-30 13:44:59 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+Unused variables.
+
+------------------------------------------------------------------------
+r1606 | zimmerma | 2001-11-30 13:37:37 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teuler.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tlog_base_10.c
+ M /trunk/tests/tlog_base_2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+
+start tests with precision 2 instead of 1
+
+------------------------------------------------------------------------
+r1605 | zimmerma | 2001-11-30 13:29:57 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+
+start from precision 2
+
+------------------------------------------------------------------------
+r1604 | zimmerma | 2001-11-30 13:29:06 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+big rewrite to fix problems when the estimate base exponent is too small
+
+------------------------------------------------------------------------
+r1603 | zimmerma | 2001-11-30 13:28:04 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+fixed detection of exact cases (in particular 0)
+
+------------------------------------------------------------------------
+r1602 | zimmerma | 2001-11-30 13:27:30 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+now use MPFR_PREC_MIN
+
+------------------------------------------------------------------------
+r1601 | zimmerma | 2001-11-30 13:27:01 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+exptol is now of type mp_exp_t
+
+------------------------------------------------------------------------
+r1600 | zimmerma | 2001-11-30 13:26:03 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+
+rewritten part with Taylor series
+
+------------------------------------------------------------------------
+r1599 | zimmerma | 2001-11-30 13:03:07 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed MPFR_PREC_MIN to 2
+
+------------------------------------------------------------------------
+r1598 | zimmerma | 2001-11-30 13:02:45 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_prc_raw.c
+
+updated wrt MPFR_PREC_MIN/MPFR_PREC_MAX
+
+------------------------------------------------------------------------
+r1597 | zimmerma | 2001-11-30 12:53:16 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+
+case x=0 was forgotten
+
+------------------------------------------------------------------------
+r1596 | zimmerma | 2001-11-30 12:52:07 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+now use MPFR_PREC_MIN
+
+------------------------------------------------------------------------
+r1595 | zimmerma | 2001-11-30 12:51:26 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/sub1.c
+
+added comment
+
+------------------------------------------------------------------------
+r1594 | vlefevre | 2001-11-30 02:41:36 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+mpfr_set_z rewritten to support overflows/underflows and ternary value.
+
+------------------------------------------------------------------------
+r1593 | vlefevre | 2001-11-30 00:10:52 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+0 -> set to +0.
+
+------------------------------------------------------------------------
+r1592 | vlefevre | 2001-11-30 00:07:36 +0000 (Fri, 30 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Better sign comparison.
+
+------------------------------------------------------------------------
+r1591 | vlefevre | 2001-11-29 23:56:56 +0000 (Thu, 29 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+
+Use MPFR_SET_POS.
+
+------------------------------------------------------------------------
+r1590 | vlefevre | 2001-11-29 14:23:12 +0000 (Thu, 29 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+Bug fixed concerning integer overflows.
+
+------------------------------------------------------------------------
+r1589 | zimmerma | 2001-11-29 09:43:55 +0000 (Thu, 29 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+
+added comment
+
+------------------------------------------------------------------------
+r1588 | zimmerma | 2001-11-29 09:43:35 +0000 (Thu, 29 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+
+fixed bug for small precision, where r can be >= 1
+
+------------------------------------------------------------------------
+r1587 | vlefevre | 2001-11-29 03:15:54 +0000 (Thu, 29 Nov 2001) | 4 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/div_2exp.c
+ A /trunk/div_2si.c
+ A /trunk/div_2ui.c
+ M /trunk/log.c
+ M /trunk/mpfr.h
+ M /trunk/mul_2exp.c
+ A /trunk/mul_2si.c
+ A /trunk/mul_2ui.c
+
+Functions mpfr_{mul,div}_2{si,ui} added.
+Functions mpfr_{mul,div}_2exp still exist for backward compatibility;
+they are obsolete and should not be used any longer.
+
+------------------------------------------------------------------------
+r1586 | vlefevre | 2001-11-28 17:57:53 +0000 (Wed, 28 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/minmax.c
+
+Particular cases (NaN and signed zeros).
+
+------------------------------------------------------------------------
+r1585 | vlefevre | 2001-11-28 17:12:35 +0000 (Wed, 28 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/thyperbolic.c
+
+Init variables to NaN instead of 0.
+
+------------------------------------------------------------------------
+r1584 | vlefevre | 2001-11-28 17:09:37 +0000 (Wed, 28 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+
+Possible integer overflow fixed.
+
+------------------------------------------------------------------------
+r1583 | vlefevre | 2001-11-28 16:54:20 +0000 (Wed, 28 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+ M /trunk/atan.c
+
+Particular cases fixed.
+
+------------------------------------------------------------------------
+r1582 | vlefevre | 2001-11-25 15:24:31 +0000 (Sun, 25 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+Overflow support.
+
+------------------------------------------------------------------------
+r1581 | vlefevre | 2001-11-25 14:44:49 +0000 (Sun, 25 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+K&R -> ISO C prototype.
+
+------------------------------------------------------------------------
+r1580 | vlefevre | 2001-11-25 08:04:07 +0000 (Sun, 25 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div_2exp.c
+
+mpfr_div_2exp rewritten.
+
+------------------------------------------------------------------------
+r1579 | vlefevre | 2001-11-25 07:49:47 +0000 (Sun, 25 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_2exp.c
+
+mpfr_mul_2exp rewritten.
+
+------------------------------------------------------------------------
+r1578 | vlefevre | 2001-11-25 06:53:41 +0000 (Sun, 25 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Overflow support.
+
+------------------------------------------------------------------------
+r1577 | vlefevre | 2001-11-25 06:20:35 +0000 (Sun, 25 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/init2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/round.c
+
+Casts to size_t added (safer and could be required in the future).
+
+------------------------------------------------------------------------
+r1576 | vlefevre | 2001-11-23 16:39:25 +0000 (Fri, 23 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Minor change.
+
+------------------------------------------------------------------------
+r1575 | vlefevre | 2001-11-23 16:28:08 +0000 (Fri, 23 Nov 2001) | 5 lines
+Changed paths:
+ M /trunk/mul.c
+
+mpfr_mul partially rewritten:
+ * Integer overflows almost completely avoided.
+ * Now supports signed zeros and overflows.
+Not tested yet.
+
+------------------------------------------------------------------------
+r1574 | vlefevre | 2001-11-22 17:21:08 +0000 (Thu, 22 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+mpfr_can_round_raw: integer overflows checked and code duplication avoided.
+
+------------------------------------------------------------------------
+r1573 | vlefevre | 2001-11-22 15:32:44 +0000 (Thu, 22 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+More bugs.
+
+------------------------------------------------------------------------
+r1572 | vlefevre | 2001-11-22 12:48:20 +0000 (Thu, 22 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/round.c
+
+mpfr_can_round and mpfr_can_round_raw: prototypes changed.
+
+------------------------------------------------------------------------
+r1571 | vlefevre | 2001-11-21 20:40:47 +0000 (Wed, 21 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1570 | vlefevre | 2001-11-21 20:07:35 +0000 (Wed, 21 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ A /trunk/add_one_ulp.c
+ D /trunk/add_ulp.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_z.c
+ A /trunk/sub_one_ulp.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tsqrt.c
+
+mpfr_add_one_ulp and mpfr_sub_one_ulp changed.
+
+------------------------------------------------------------------------
+r1569 | vlefevre | 2001-11-21 15:50:45 +0000 (Wed, 21 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/init2.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/round.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_rnd.c
+
+Added MPFR_PREC_MIN and MPFR_PREC_MAX.
+
+------------------------------------------------------------------------
+r1568 | vlefevre | 2001-11-21 14:06:36 +0000 (Wed, 21 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/init2.c
+
+Error test -> assert.
+mp_prec_t -> mp_size_t.
+
+------------------------------------------------------------------------
+r1567 | vlefevre | 2001-11-20 14:10:05 +0000 (Tue, 20 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tround.c
+
+Test added.
+
+------------------------------------------------------------------------
+r1566 | vlefevre | 2001-11-20 14:09:55 +0000 (Tue, 20 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/round.c
+
+mpfr_round rewritten.
+mpfr_round_raw_generic: NULL changed to 0 as not necessarily defined.
+
+------------------------------------------------------------------------
+r1565 | vlefevre | 2001-11-20 13:41:41 +0000 (Tue, 20 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Added macro MPFR_SET_ABSSIZE.
+
+------------------------------------------------------------------------
+r1564 | vlefevre | 2001-11-20 02:17:32 +0000 (Tue, 20 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+mpfr_round: Check for overflow.
+
+------------------------------------------------------------------------
+r1563 | vlefevre | 2001-11-17 03:58:19 +0000 (Sat, 17 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/sub1.c
+
+Some type changes.
+
+------------------------------------------------------------------------
+r1562 | vlefevre | 2001-11-16 17:58:50 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/add1.c
+ M /trunk/mpz_set_fr.c
+
+Integer overflows checked.
+
+------------------------------------------------------------------------
+r1561 | vlefevre | 2001-11-16 17:16:31 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+
+MPFR_ASSERTN instead of fprintf + exit.
+
+------------------------------------------------------------------------
+r1560 | vlefevre | 2001-11-16 17:10:30 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+GMP assert mechanism: macros changed until GMP is fixed.
+
+------------------------------------------------------------------------
+r1559 | zimmerma | 2001-11-16 17:04:15 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+version -> 2002
+removed executable flag
+
+------------------------------------------------------------------------
+r1558 | zimmerma | 2001-11-16 14:38:24 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/exp_2.c
+ M /trunk/log.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/print_raw.c
+ M /trunk/sub1.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/teuler.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+
+mpfr_print_raw -> mpfr_print_binary
+
+------------------------------------------------------------------------
+r1557 | zimmerma | 2001-11-16 14:15:57 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/init2.c
+
+split from init.c
+
+------------------------------------------------------------------------
+r1556 | daney | 2001-11-16 14:14:10 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+ M /trunk/log1p.c
+ M /trunk/tanh.c
+
+remove math.h
+
+------------------------------------------------------------------------
+r1555 | daney | 2001-11-16 14:04:13 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/sinh.c
+
+remve math.h
+
+------------------------------------------------------------------------
+r1554 | zimmerma | 2001-11-16 14:04:06 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added one test
+
+------------------------------------------------------------------------
+r1553 | daney | 2001-11-16 14:00:29 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/atanh.c
+
+remove math.h
+
+------------------------------------------------------------------------
+r1552 | zimmerma | 2001-11-16 13:54:55 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/init.c
+
+init -> init + init2.
+
+------------------------------------------------------------------------
+r1551 | daney | 2001-11-16 13:54:32 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/asinh.c
+
+remove math.h
+
+------------------------------------------------------------------------
+r1550 | hanrot | 2001-11-16 13:27:50 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Ajoute retours chariots dans div.c, etc.
+
+------------------------------------------------------------------------
+r1549 | hanrot | 2001-11-16 13:23:43 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+if () remplace par if ( ==0) ou if ( != 0)
+
+------------------------------------------------------------------------
+r1548 | zimmerma | 2001-11-16 13:22:13 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/TODO
+ M /trunk/add_ui.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+ M /trunk/clear.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fma.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/isinteger.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/log_base_10.c
+ M /trunk/log_base_2.c
+ M /trunk/minmax.c
+ M /trunk/mul.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/print_raw.c
+ M /trunk/rnd_mode.c
+ M /trunk/set_rnd.c
+ M /trunk/set_str_raw.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/Makefile.in
+ M /trunk/ui_pow.c
+
+removed K&R function headers
+
+------------------------------------------------------------------------
+r1547 | hanrot | 2001-11-16 13:19:50 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+Beuh ?
+
+------------------------------------------------------------------------
+r1546 | hanrot | 2001-11-16 13:19:42 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/inp_str.c
+
+return -> MPFR_RET, patch d'un leak dans inp_str.c
+
+------------------------------------------------------------------------
+r1545 | zimmerma | 2001-11-16 13:09:07 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+changed to use GMP assert mechanism
+
+------------------------------------------------------------------------
+r1544 | daney | 2001-11-16 12:55:53 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+
+remove stdio.h math.h
+
+------------------------------------------------------------------------
+r1543 | zimmerma | 2001-11-16 12:54:09 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/euler.c
+
+assert -> MPFR_ASSERT
+
+------------------------------------------------------------------------
+r1542 | daney | 2001-11-16 12:52:55 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+remove stdio math .h
+
+------------------------------------------------------------------------
+r1541 | daney | 2001-11-16 12:50:31 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/isinteger.c
+
+remove stdio.h math.h
+
+------------------------------------------------------------------------
+r1540 | zimmerma | 2001-11-16 12:49:36 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+ M /trunk/sub1.c
+
+ASSERT_ALWAYS -> MPFR_ASSERTN
+
+------------------------------------------------------------------------
+r1539 | zimmerma | 2001-11-16 12:39:30 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added COPYING.LIB
+
+------------------------------------------------------------------------
+r1538 | zimmerma | 2001-11-16 12:38:56 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/COPYING
+
+replaced by GPL
+
+------------------------------------------------------------------------
+r1537 | daney | 2001-11-16 12:34:00 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+
+remove limits.h
+
+------------------------------------------------------------------------
+r1536 | zimmerma | 2001-11-16 12:32:48 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/add.c
+ M /trunk/add1.c
+ M /trunk/add_ui.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/asin.c
+ M /trunk/asinh.c
+ M /trunk/atan.c
+ M /trunk/atanh.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp2.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_ui.c
+ M /trunk/copysign.c
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/dim.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/euler.c
+ M /trunk/exceptions.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/expm1.c
+ M /trunk/extract.c
+ M /trunk/factorial.c
+ M /trunk/fma.c
+ M /trunk/gamma.c
+ M /trunk/gammaPiAGMformula.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/gmp_op.c
+ M /trunk/hypot.c
+ M /trunk/init.c
+ M /trunk/inp_str.c
+ M /trunk/isinf.c
+ M /trunk/isinteger.c
+ M /trunk/isnan.c
+ M /trunk/isnum.c
+ M /trunk/log.c
+ M /trunk/log1p.c
+ M /trunk/log2.c
+ M /trunk/log_base_10.c
+ M /trunk/log_base_2.c
+ M /trunk/minmax.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfi.c
+ M /trunk/mpfi.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/pow_si.c
+ M /trunk/pow_ui.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/rnd_mode.c
+ M /trunk/round.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sqrtrem.c
+ M /trunk/srandom.h
+ M /trunk/sub.c
+ M /trunk/sub1.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tasin.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatan.c
+ M /trunk/tests/tatanh.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/teuler.c
+ M /trunk/tests/texceptions.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/texpm1.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tfma.c
+ M /trunk/tests/tgamma.c
+ M /trunk/tests/tgeneric.c
+ M /trunk/tests/tget_d.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/thypot.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog1p.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tlog_base_10.c
+ M /trunk/tests/tlog_base_2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpi.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tpow3.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tround.c
+ M /trunk/tests/tset.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_pow.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+changed Library GPL to Lesser GPL
+
+------------------------------------------------------------------------
+r1535 | zimmerma | 2001-11-16 12:31:12 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/COPYING.LIB
+
+GNU Lesser General Public License, version 2.1
+
+------------------------------------------------------------------------
+r1534 | daney | 2001-11-16 12:30:42 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+remove limits.h math.h
+
+------------------------------------------------------------------------
+r1533 | zimmerma | 2001-11-16 12:27:02 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/replace_all
+
+now treats all *.h
+
+------------------------------------------------------------------------
+r1532 | daney | 2001-11-16 12:25:25 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+remove the proto, remove math.h
+
+------------------------------------------------------------------------
+r1531 | zimmerma | 2001-11-16 12:21:07 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+removed DEBUG's
+
+------------------------------------------------------------------------
+r1530 | zimmerma | 2001-11-16 12:19:39 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+removed old patch for GMP 2.xx
+
+------------------------------------------------------------------------
+r1529 | zimmerma | 2001-11-16 12:17:56 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/eq.c
+ M /trunk/swap.c
+ M /trunk/urandomb.c
+
+GNU MP -> MPFR
+
+------------------------------------------------------------------------
+r1528 | zimmerma | 2001-11-16 12:08:08 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/add_ulp.c
+
+added year 2001 in copyright line
+
+------------------------------------------------------------------------
+r1527 | zimmerma | 2001-11-16 11:18:52 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/thyperbolic.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpi.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+
+added year 2001 in copyright line
+
+------------------------------------------------------------------------
+r1526 | zimmerma | 2001-11-16 11:18:00 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/cmp.c
+ M /trunk/cmp_abs.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/dump.c
+ M /trunk/exp3.c
+ M /trunk/exp_2.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/inp_str.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr-test.h
+ M /trunk/mpfr.h
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/out_str.c
+ M /trunk/pow_ui.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/round.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_str.c
+ M /trunk/set_z.c
+ M /trunk/sqrtrem.c
+ M /trunk/sub_ui.c
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+ M /trunk/ui_pow_ui.c
+ M /trunk/ui_sub.c
+
+added year 2001 in copyright line
+removed #if __STDC__
+
+------------------------------------------------------------------------
+r1525 | zimmerma | 2001-11-16 11:15:29 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ D /trunk/sin_cos.c
+
+now two separate files cos.c and sin.c
+
+------------------------------------------------------------------------
+r1524 | zimmerma | 2001-11-16 10:43:04 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/pi.c
+ M /trunk/urandomb.c
+
+added year 2001 in copyright line
+
+------------------------------------------------------------------------
+r1523 | zimmerma | 2001-11-16 10:38:25 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+
+updated
+
+------------------------------------------------------------------------
+r1522 | zimmerma | 2001-11-16 10:26:46 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ D /trunk/div2.c
+
+old version, removed
+
+------------------------------------------------------------------------
+r1521 | zimmerma | 2001-11-16 10:16:37 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added isinf and isnum (split from isnan)
+
+------------------------------------------------------------------------
+r1520 | zimmerma | 2001-11-16 10:16:21 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/isinf.c
+ A /trunk/isnum.c
+
+new files (split from isnan.c)
+
+------------------------------------------------------------------------
+r1519 | zimmerma | 2001-11-16 10:14:44 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+ M /trunk/copysign.c
+ M /trunk/cosh.c
+
+removed prototype already in mpfr.h
+
+------------------------------------------------------------------------
+r1518 | zimmerma | 2001-11-16 10:14:27 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+translated french comments to english
+
+------------------------------------------------------------------------
+r1517 | zimmerma | 2001-11-16 10:14:08 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added mpfr_sub
+
+------------------------------------------------------------------------
+r1516 | zimmerma | 2001-11-16 10:13:12 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/atan.c
+ M /trunk/cos.c
+ M /trunk/exp_2.c
+
+added static to local functions
+
+------------------------------------------------------------------------
+r1515 | zimmerma | 2001-11-16 10:12:42 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp2.c
+
+1 -> MP_LIMB_T_ONE
+
+------------------------------------------------------------------------
+r1514 | zimmerma | 2001-11-16 10:11:20 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/div_ui.c
+
+1 -> BITS_PER_MP_LIMB
+
+------------------------------------------------------------------------
+r1513 | zimmerma | 2001-11-16 10:10:48 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/euler.c
+
+added static to local functions
+removed prototype already in mpfr.h
+
+------------------------------------------------------------------------
+r1512 | zimmerma | 2001-11-16 10:10:29 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+removed mpfr_exp2_si (not used)
+
+------------------------------------------------------------------------
+r1511 | zimmerma | 2001-11-16 10:10:07 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/exp3.c
+
+added static to local functions
+translated french comments to english
+
+------------------------------------------------------------------------
+r1510 | zimmerma | 2001-11-16 10:09:29 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/expm1.c
+ M /trunk/log1p.c
+
+translated french comments to english
+removed prototype already in mpfr.h
+
+------------------------------------------------------------------------
+r1509 | zimmerma | 2001-11-16 10:09:09 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+
+initialized inexact to 0
+
+------------------------------------------------------------------------
+r1508 | zimmerma | 2001-11-16 10:08:47 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/generic.c
+
+used TMP_ALLOC
+translated french comments to english
+
+------------------------------------------------------------------------
+r1507 | zimmerma | 2001-11-16 10:08:18 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+simplified test
+
+------------------------------------------------------------------------
+r1506 | zimmerma | 2001-11-16 10:08:04 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/isnan.c
+
+moved inf_p and number_p to different files
+
+------------------------------------------------------------------------
+r1505 | zimmerma | 2001-11-16 10:06:38 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/log2.c
+
+added static to local functions
+explained threshold
+
+------------------------------------------------------------------------
+r1504 | zimmerma | 2001-11-16 10:06:03 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/minmax.c
+
+removed prototypes already in mpfr.h
+
+------------------------------------------------------------------------
+r1503 | zimmerma | 2001-11-16 10:05:45 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+does not include stdio.h any more
+
+------------------------------------------------------------------------
+r1502 | zimmerma | 2001-11-16 10:05:01 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+
+added stdio.h
+
+------------------------------------------------------------------------
+r1501 | zimmerma | 2001-11-16 10:04:07 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/add_ulp.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/print_raw.c
+ M /trunk/round.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/trunc.c
+
+1 -> BITS_PER_MP_LIMB
+1 << (BITS_PER_MP_LIMB - 1) -> MP_LIMB_T_HIGHBIT
+
+------------------------------------------------------------------------
+r1500 | zimmerma | 2001-11-16 09:40:02 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+ M /trunk/reldiff.c
+
+removed french comment
+
+------------------------------------------------------------------------
+r1499 | zimmerma | 2001-11-16 09:39:45 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/pi.c
+
+added static to local functions
+
+------------------------------------------------------------------------
+r1498 | zimmerma | 2001-11-16 09:39:26 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/pow_si.c
+ M /trunk/sinh.c
+ M /trunk/tanh.c
+
+removed prototype already in mpfr.h
+
+------------------------------------------------------------------------
+r1497 | zimmerma | 2001-11-16 09:39:11 +0000 (Fri, 16 Nov 2001) | 4 lines
+Changed paths:
+ M /trunk/print_raw.c
+
+1 -> BITS_PER_MP_LIMB
+translated french comments to english
+added static to local functions
+
+------------------------------------------------------------------------
+r1496 | zimmerma | 2001-11-16 09:38:47 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sub1.c
+ M /trunk/trunc.c
+
+1 -> BITS_PER_MP_LIMB
+
+------------------------------------------------------------------------
+r1495 | zimmerma | 2001-11-16 09:37:52 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/round.c
+
+1 -> BITS_PER_MP_LIMB
+translated french comments to english
+
+------------------------------------------------------------------------
+r1494 | zimmerma | 2001-11-16 09:37:15 +0000 (Fri, 16 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/set_d.c
+ M /trunk/sqrtrem.c
+
+1 -> BITS_PER_MP_LIMB
+added static to local functions
+
+------------------------------------------------------------------------
+r1493 | zimmerma | 2001-11-16 09:33:57 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+removed proto already in mpfr.h
+
+------------------------------------------------------------------------
+r1492 | zimmerma | 2001-11-16 09:33:33 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+1 -> MP_LIMB_T_ONE
+
+------------------------------------------------------------------------
+r1491 | zimmerma | 2001-11-16 09:32:45 +0000 (Fri, 16 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teuler.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tpi.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+
+added stdio.h
+
+------------------------------------------------------------------------
+r1490 | vlefevre | 2001-11-15 18:11:07 +0000 (Thu, 15 Nov 2001) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/add.c
+ A /trunk/add1.c
+ M /trunk/sub.c
+ A /trunk/sub1.c
+
+add.c -> add.c & add1.c
+sub.c -> sub.c & sub1.c + some changes.
+
+------------------------------------------------------------------------
+r1489 | zimmerma | 2001-11-13 09:33:07 +0000 (Tue, 13 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+iff the results are exact -> iff the result is exact
+
+------------------------------------------------------------------------
+r1488 | vlefevre | 2001-11-10 01:45:36 +0000 (Sat, 10 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/cmp.c
+ M /trunk/cmp_abs.c
+ M /trunk/exceptions.c
+ M /trunk/neg.c
+ M /trunk/round.c
+ M /trunk/save_expo.c
+ M /trunk/set.c
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+
+GNU coding style. K&R function headers removed.
+
+------------------------------------------------------------------------
+r1487 | vlefevre | 2001-11-10 00:47:44 +0000 (Sat, 10 Nov 2001) | 5 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+MP_LIMB_T_ONE defined.
+mp_size_unsigned_t defined.
+Important bugs fixed (in particular when int has fewer than 32 bits).
+Still unavoidable possible bugs due to the fact that mp_size_t is signed.
+
+------------------------------------------------------------------------
+r1486 | daney | 2001-11-09 11:24:05 +0000 (Fri, 09 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tgamma.c
+
+add tests file for gamma
+
+------------------------------------------------------------------------
+r1485 | daney | 2001-11-09 11:23:33 +0000 (Fri, 09 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/gammaPiAGMformula.c
+
+add gamma function an other version
+
+------------------------------------------------------------------------
+r1484 | daney | 2001-11-09 11:23:04 +0000 (Fri, 09 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/gamma.c
+
+add gamma function
+
+------------------------------------------------------------------------
+r1483 | zimmerma | 2001-11-09 06:24:52 +0000 (Fri, 09 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mis a` jour valeur de retour de mpfr_tan
+
+------------------------------------------------------------------------
+r1482 | vlefevre | 2001-11-09 01:38:45 +0000 (Fri, 09 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+Some -'s missing in floating-point.
+
+------------------------------------------------------------------------
+r1481 | zimmerma | 2001-11-08 23:15:59 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+modifs suite aux remarques de Nathalie
+
+------------------------------------------------------------------------
+r1480 | daney | 2001-11-08 17:48:33 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+remove some name of variables
+
+------------------------------------------------------------------------
+r1479 | vlefevre | 2001-11-08 17:14:01 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp2.c
+ D /trunk/pow2.c
+
+cmp2.c: Integer overflows checked.
+
+------------------------------------------------------------------------
+r1478 | vlefevre | 2001-11-08 17:11:36 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/isinteger.c
+ M /trunk/mpfr.h
+ M /trunk/pow.c
+
+Update.
+
+------------------------------------------------------------------------
+r1477 | vlefevre | 2001-11-08 16:42:30 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Fix.
+
+------------------------------------------------------------------------
+r1476 | daney | 2001-11-08 16:37:47 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+suppress variable name in dim min max
+
+------------------------------------------------------------------------
+r1475 | daney | 2001-11-08 16:23:29 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/isinteger.c
+
+export isinteger in the file isinteger.c
+
+------------------------------------------------------------------------
+r1474 | daney | 2001-11-08 16:21:56 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/pow_si.c
+
+exporte pow_si from pow2.c to pow_si.c
+
+------------------------------------------------------------------------
+r1473 | daney | 2001-11-08 16:21:06 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+rename pow2.c in pow.c (source for mpfr_pow)
+
+------------------------------------------------------------------------
+r1472 | daney | 2001-11-08 16:19:49 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/ui_pow_ui.c
+
+add ui_pow_ui.c (initially in pow.c)
+
+------------------------------------------------------------------------
+r1471 | daney | 2001-11-08 16:19:18 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ A /trunk/pow_ui.c
+
+add pow_ui.c file (initially in pow.c)
+
+------------------------------------------------------------------------
+r1470 | vlefevre | 2001-11-08 15:56:09 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp2.c
+ M /trunk/mpfr-impl.h
+
+mpfr_cmp2: return type changed to mp_prec_t.
+
+------------------------------------------------------------------------
+r1469 | daney | 2001-11-08 14:53:54 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+add function test4 for 3 input test + fma tests
+
+------------------------------------------------------------------------
+r1468 | vlefevre | 2001-11-08 03:04:00 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Macros added.
+
+------------------------------------------------------------------------
+r1467 | vlefevre | 2001-11-08 02:15:36 +0000 (Thu, 08 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+MP_LIMB_T_MAX instead of (mp_limb_t) -1 (a little nicer...).
+
+------------------------------------------------------------------------
+r1466 | vlefevre | 2001-11-06 17:05:41 +0000 (Tue, 06 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Code clean-up.
+
+------------------------------------------------------------------------
+r1465 | vlefevre | 2001-11-05 15:44:24 +0000 (Mon, 05 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+
+Prototypes for K&R C.
+
+------------------------------------------------------------------------
+r1464 | vlefevre | 2001-11-05 09:58:14 +0000 (Mon, 05 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+mpfr_round_raw_generic prototype fixed.
+
+------------------------------------------------------------------------
+r1463 | daney | 2001-11-01 14:15:23 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/asin.c
+
+clear xp for Nan Inf or 0 are returned
+
+------------------------------------------------------------------------
+r1462 | daney | 2001-11-01 14:11:48 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+clear variable if an error is return
+
+------------------------------------------------------------------------
+r1461 | daney | 2001-11-01 14:10:50 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/atanh.c
+
+clear x for Nan inf 0 return
+
+------------------------------------------------------------------------
+r1460 | daney | 2001-11-01 14:10:10 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/asinh.c
+
+clear x for Nan Inf 0 return
+
+------------------------------------------------------------------------
+r1459 | daney | 2001-11-01 14:05:15 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+
+clear te
+
+------------------------------------------------------------------------
+r1458 | vlefevre | 2001-11-01 12:20:32 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+Added prototype.
+
+------------------------------------------------------------------------
+r1457 | vlefevre | 2001-11-01 11:53:58 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1456 | zimmerma | 2001-11-01 10:05:27 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+fixed MLK's
+
+------------------------------------------------------------------------
+r1455 | zimmerma | 2001-11-01 09:44:03 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/pow2.c
+
+fixed MLK's in mpfr_isinteger
+
+------------------------------------------------------------------------
+r1454 | zimmerma | 2001-11-01 09:43:32 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow3.c
+
+fixed MLK's
+
+------------------------------------------------------------------------
+r1453 | zimmerma | 2001-11-01 09:04:19 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_pow.c
+
+fixed missing mpfr_clear's
+
+------------------------------------------------------------------------
+r1452 | zimmerma | 2001-11-01 08:02:00 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+added missing mpfr_clear
+
+------------------------------------------------------------------------
+r1451 | zimmerma | 2001-11-01 07:20:30 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added clear's in bug_ddefour
+
+------------------------------------------------------------------------
+r1450 | zimmerma | 2001-11-01 00:42:47 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+added mpfr_clear's
+
+------------------------------------------------------------------------
+r1449 | zimmerma | 2001-11-01 00:10:46 +0000 (Thu, 01 Nov 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+fixed MLK's
+
+------------------------------------------------------------------------
+r1448 | zimmerma | 2001-10-31 23:12:41 +0000 (Wed, 31 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+fixed MLK for Inf or Nan
+
+------------------------------------------------------------------------
+r1447 | zimmerma | 2001-10-31 22:52:06 +0000 (Wed, 31 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+fixed MLK in check_case_2
+
+------------------------------------------------------------------------
+r1446 | daney | 2001-10-31 10:16:21 +0000 (Wed, 31 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+rename factorial -> fac_ui
+
+------------------------------------------------------------------------
+r1445 | rouillie | 2001-10-30 15:26:27 +0000 (Tue, 30 Oct 2001) | 4 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/gmp_op.c
+ M /trunk/mpfr.h
+ M /trunk/tests/Makefile.in
+
+Change mpfr_<op>_mpz to mpfr_<op>_z
+Change mpfr_<op>_mpq to mpfr_<op>_q
+where <op> is mul,div,add,sub
+
+------------------------------------------------------------------------
+r1444 | daney | 2001-10-30 10:30:48 +0000 (Tue, 30 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+
+correct factorial -> fac_ui in comments
+
+------------------------------------------------------------------------
+r1443 | daney | 2001-10-30 10:24:08 +0000 (Tue, 30 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfactorial.c
+
+rename tfactorial -> fac_ui
+
+------------------------------------------------------------------------
+r1442 | daney | 2001-10-30 10:23:25 +0000 (Tue, 30 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+ M /trunk/mpfr.h
+
+rename factorial -> fac_ui
+
+------------------------------------------------------------------------
+r1441 | vlefevre | 2001-10-27 11:16:02 +0000 (Sat, 27 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1440 | zimmerma | 2001-10-26 16:01:03 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tsub_ui.c
+
+drand -> drand48
+
+------------------------------------------------------------------------
+r1439 | zimmerma | 2001-10-26 15:49:21 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+put MAX_PREC back to 100
+
+------------------------------------------------------------------------
+r1438 | zimmerma | 2001-10-26 15:46:37 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added test for inexact flag
+
+------------------------------------------------------------------------
+r1437 | zimmerma | 2001-10-26 15:45:42 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+use MPFR_RET_NAN and MPFR_RET
+
+------------------------------------------------------------------------
+r1436 | zimmerma | 2001-10-26 15:42:23 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+removed MPFR_DEBUG_LEVEL definition
+
+------------------------------------------------------------------------
+r1435 | zimmerma | 2001-10-26 15:39:21 +0000 (Fri, 26 Oct 2001) | 5 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+mpfr_set_q and mpfr_abs now return an int
+mpfr_pow_ui and mpfr_ui_pow_ui now implement exact rounding
+updated the documentation of the mpfr_*pow* functions
+removed some internal functions
+
+------------------------------------------------------------------------
+r1434 | zimmerma | 2001-10-26 15:32:23 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+implemented exact rounding (but no ternary flag)
+
+------------------------------------------------------------------------
+r1433 | daney | 2001-10-26 15:31:42 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+add some flags
+
+------------------------------------------------------------------------
+r1432 | daney | 2001-10-26 15:29:28 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+mixed version beetwen DD and Pau => (gestion des flag inexacte dirige)
+
+------------------------------------------------------------------------
+r1431 | daney | 2001-10-26 15:28:31 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+rien
+
+------------------------------------------------------------------------
+r1430 | zimmerma | 2001-10-26 13:48:33 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+MAX_PREC included
+
+------------------------------------------------------------------------
+r1429 | zimmerma | 2001-10-26 13:31:55 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_q.c
+
+implemented inexact flag
+
+------------------------------------------------------------------------
+r1428 | hanrot | 2001-10-26 13:28:00 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Clearing high part of rem2.
+
+------------------------------------------------------------------------
+r1427 | rouillie | 2001-10-26 13:24:02 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+adds gmp_op.c
+
+------------------------------------------------------------------------
+r1426 | zimmerma | 2001-10-26 13:23:12 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr_set_q now returns an int
+
+------------------------------------------------------------------------
+r1425 | zimmerma | 2001-10-26 13:22:22 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_q.c
+
+added test for inexact flag
+
+------------------------------------------------------------------------
+r1424 | rouillie | 2001-10-26 13:19:40 +0000 (Fri, 26 Oct 2001) | 3 lines
+Changed paths:
+ A /trunk/gmp_op.c
+
+Adds the file gmp_op.c containing the implementations of operations between
+mpfr and mpz/mpq data
+
+------------------------------------------------------------------------
+r1423 | daney | 2001-10-26 13:05:58 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+err <0 => is now tester
+
+------------------------------------------------------------------------
+r1422 | hanrot | 2001-10-26 13:00:54 +0000 (Fri, 26 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+Patch for bits shifted out when the high word of the quotient is nonzero.
+Induced error on inexact flag (and hence on rounding in some cases).
+
+------------------------------------------------------------------------
+r1421 | daney | 2001-10-26 12:46:30 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/copysign.c
+
+add copysign.c
+
+------------------------------------------------------------------------
+r1420 | zimmerma | 2001-10-26 12:41:45 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added one test
+
+------------------------------------------------------------------------
+r1419 | daney | 2001-10-26 12:37:43 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/dim.c
+
+simplify dim
+
+------------------------------------------------------------------------
+r1418 | daney | 2001-10-26 12:32:57 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/thypot.c
+
+add exact flag
+
+------------------------------------------------------------------------
+r1417 | daney | 2001-10-26 12:24:00 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/log_base_10.c
+ M /trunk/log_base_2.c
+ M /trunk/pow2.c
+
+err => long int
+
+------------------------------------------------------------------------
+r1416 | zimmerma | 2001-10-26 12:22:28 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset.c
+
+added one test
+
+------------------------------------------------------------------------
+r1415 | zimmerma | 2001-10-26 12:21:46 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log1p.c
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r1414 | zimmerma | 2001-10-26 12:21:08 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+can_round return 0 for b=0
+
+------------------------------------------------------------------------
+r1413 | daney | 2001-10-26 12:17:06 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+add thypot
+
+------------------------------------------------------------------------
+r1412 | daney | 2001-10-26 11:51:19 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+add coopysign
+
+------------------------------------------------------------------------
+r1411 | daney | 2001-10-26 11:50:27 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+add copysign
+
+------------------------------------------------------------------------
+r1410 | daney | 2001-10-26 11:47:46 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/expm1.c
+
+correct mp_prec_t err => long int
+
+------------------------------------------------------------------------
+r1409 | daney | 2001-10-26 11:47:09 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log1p.c
+
+correst mp_prec_t err => long int
+
+------------------------------------------------------------------------
+r1408 | rouillie | 2001-10-26 11:34:26 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+Add multiplication/division/addition/subtraction by mpz and mpq
+
+------------------------------------------------------------------------
+r1407 | zimmerma | 2001-10-26 10:56:14 +0000 (Fri, 26 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added two tests
+fixed bug in generic tests (one more bit is needed to get an exact result)
+
+------------------------------------------------------------------------
+r1406 | zimmerma | 2001-10-26 10:55:36 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed pb with exact results not detected (ck was < 0)
+
+------------------------------------------------------------------------
+r1405 | hanrot | 2001-10-26 09:12:13 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+Rien.
+
+------------------------------------------------------------------------
+r1404 | hanrot | 2001-10-26 09:11:07 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Patch for the computation of the u_lo + r part of the remainder when u_lo = 0.
+
+------------------------------------------------------------------------
+r1403 | zimmerma | 2001-10-26 08:43:09 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tsub.c
+ M /trunk/tests/tui_div.c
+
+added test for inexact flag
+
+------------------------------------------------------------------------
+r1402 | zimmerma | 2001-10-26 08:41:29 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed pbs with inexact flag
+
+------------------------------------------------------------------------
+r1401 | zimmerma | 2001-10-26 08:41:05 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+now mpfr_div and mpfr_ui_div return an int
+
+------------------------------------------------------------------------
+r1400 | zimmerma | 2001-10-26 08:40:13 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/ui_div.c
+
+implemented ternary flag in mpfr_ui_div
+
+------------------------------------------------------------------------
+r1399 | zimmerma | 2001-10-26 08:39:28 +0000 (Fri, 26 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/log_base_2.c
+
+removed unnecessary CLEAR_FLAGS
+used MPFR_RET_NAN
+
+------------------------------------------------------------------------
+r1398 | zimmerma | 2001-10-26 08:38:58 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog_base_2.c
+
+reduced number of tests
+
+------------------------------------------------------------------------
+r1397 | zimmerma | 2001-10-26 08:31:58 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_10.c
+
+removed unnecessary CLEAR_FLAGS
+
+------------------------------------------------------------------------
+r1396 | zimmerma | 2001-10-26 08:30:00 +0000 (Fri, 26 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+improved mpfr_compare
+fixed wrong function name for mpfr_log2
+
+------------------------------------------------------------------------
+r1395 | zimmerma | 2001-10-26 08:23:51 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+rewritten to implement ternary inexact flag
+
+------------------------------------------------------------------------
+r1394 | zimmerma | 2001-10-26 08:15:24 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+fixed generic test (pb with double rounding)
+
+------------------------------------------------------------------------
+r1393 | zimmerma | 2001-10-26 07:46:30 +0000 (Fri, 26 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+increased MAX_PREC
+
+------------------------------------------------------------------------
+r1392 | hanrot | 2001-10-25 22:03:55 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+Changed the type of err from mp_prec_t (unsigned) to int.
+
+------------------------------------------------------------------------
+r1391 | hanrot | 2001-10-25 21:32:42 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/tdiv.c
+
+Added tests for inexact flag.
+
+------------------------------------------------------------------------
+r1390 | hanrot | 2001-10-25 21:32:33 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/algorithms.tex
+ M /trunk/configure
+ M /trunk/div.c
+
+Patch for even rounding.
+
+------------------------------------------------------------------------
+r1389 | daney | 2001-10-25 17:12:26 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_2.c
+
+rien
+
+------------------------------------------------------------------------
+r1388 | daney | 2001-10-25 17:05:29 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_10.c
+
+rien
+
+------------------------------------------------------------------------
+r1387 | vlefevre | 2001-10-25 17:00:10 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+Warning avoided.
+
+------------------------------------------------------------------------
+r1386 | zimmerma | 2001-10-25 17:00:06 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tfma
+
+------------------------------------------------------------------------
+r1385 | zimmerma | 2001-10-25 16:53:36 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfma.c
+
+slong -> t
+
+------------------------------------------------------------------------
+r1384 | zimmerma | 2001-10-25 16:53:05 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+nouvelew version (without loop)
+
+------------------------------------------------------------------------
+r1383 | daney | 2001-10-25 16:51:56 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/pow2.c
+
+rien
+
+------------------------------------------------------------------------
+r1382 | daney | 2001-10-25 16:50:31 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/pow2.c
+ M /trunk/tests/reuse.c
+
+rien
+
+------------------------------------------------------------------------
+r1381 | daney | 2001-10-25 16:45:27 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+change
+
+------------------------------------------------------------------------
+r1380 | vlefevre | 2001-10-25 16:45:20 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1379 | daney | 2001-10-25 16:34:55 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/pow2.c
+
+correct bugs with reuse
+
+------------------------------------------------------------------------
+r1378 | daney | 2001-10-25 16:34:05 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+test for log2 log10 pow
+
+------------------------------------------------------------------------
+r1377 | hanrot | 2001-10-25 16:29:46 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/mpfr.h
+
+La division nouvelle est arrivee.
+
+------------------------------------------------------------------------
+r1376 | zimmerma | 2001-10-25 16:04:18 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+ajoute' nouveau test
+
+------------------------------------------------------------------------
+r1375 | vlefevre | 2001-10-25 15:34:17 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1374 | hanrot | 2001-10-25 15:26:36 +0000 (Thu, 25 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/round.c
+
+round_raw, round_raw2 -> round_raw_generic. Macros to simulate previous
+behaviour. Even rounding returns +- MPFR_EVEN_INEX.
+
+------------------------------------------------------------------------
+r1373 | zimmerma | 2001-10-25 15:24:11 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_10.c
+
+fixed pb with mpfr_log10(a, a) with a=-Inf
+
+------------------------------------------------------------------------
+r1372 | zimmerma | 2001-10-25 15:14:01 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added two tests
+
+------------------------------------------------------------------------
+r1371 | zimmerma | 2001-10-25 15:06:12 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+added one test
+
+------------------------------------------------------------------------
+r1370 | daney | 2001-10-25 15:03:13 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+add log2 and log10
+
+------------------------------------------------------------------------
+r1369 | daney | 2001-10-25 15:02:59 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_10.c
+
+correction for reuse
+
+------------------------------------------------------------------------
+r1368 | daney | 2001-10-25 15:02:45 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_2.c
+
+coorection for reuse
+
+------------------------------------------------------------------------
+r1367 | zimmerma | 2001-10-25 14:53:19 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/texceptions.c
+
+test file for testing exceptions
+
+------------------------------------------------------------------------
+r1366 | vlefevre | 2001-10-25 14:32:20 +0000 (Thu, 25 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/add.c
+
+mpfr_add1 completely rewritten. Overflows are checked.
+The ternary value should now be supported (but it hasn't been tested yet).
+
+------------------------------------------------------------------------
+r1365 | daney | 2001-10-25 14:04:09 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/fma.c
+
+new version
+
+------------------------------------------------------------------------
+r1364 | zimmerma | 2001-10-25 13:54:46 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added one test
+
+------------------------------------------------------------------------
+r1363 | zimmerma | 2001-10-25 13:54:27 +0000 (Thu, 25 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/tgeneric.c
+
+add possibility to define a random function (default is mpfr_random)
+to get random variables in specific ranges
+
+------------------------------------------------------------------------
+r1362 | zimmerma | 2001-10-25 13:53:19 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tacosh.c
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatanh.c
+
+now use tgeneric.c
+
+------------------------------------------------------------------------
+r1361 | zimmerma | 2001-10-25 13:50:49 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added texceptions
+
+------------------------------------------------------------------------
+r1360 | zimmerma | 2001-10-25 13:49:56 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+documented exception mechanism (with Vincent Lefe`vre)
+
+------------------------------------------------------------------------
+r1359 | zimmerma | 2001-10-25 13:48:28 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tfactorial.c
+
+changed stupid test (was computing only 200!)
+
+------------------------------------------------------------------------
+r1358 | zimmerma | 2001-10-25 13:47:27 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/factorial.c
+
+implemented inexact flag
+
+------------------------------------------------------------------------
+r1357 | zimmerma | 2001-10-25 13:45:42 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+
+1999 -> 2001
+
+------------------------------------------------------------------------
+r1356 | zimmerma | 2001-10-25 13:45:14 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+check overflow
+
+------------------------------------------------------------------------
+r1355 | zimmerma | 2001-10-25 13:39:35 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+added two tests
+
+------------------------------------------------------------------------
+r1354 | zimmerma | 2001-10-25 13:37:24 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+implemented overflow/underflow
+
+------------------------------------------------------------------------
+r1353 | daney | 2001-10-25 13:36:56 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/atanh.c
+
+correct atanh(INF)=INF exact
+
+------------------------------------------------------------------------
+r1352 | daney | 2001-10-25 13:14:54 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+correct test inf for atanh
+
+------------------------------------------------------------------------
+r1351 | zimmerma | 2001-10-25 12:52:08 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added warning for mpfr_set_d
+
+------------------------------------------------------------------------
+r1350 | daney | 2001-10-25 09:19:06 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+correct bug in tests file (test of atanh for + or - Inf)
+
+------------------------------------------------------------------------
+r1349 | zimmerma | 2001-10-25 08:37:39 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tadd_ui (forgotten?)
+
+------------------------------------------------------------------------
+r1348 | zimmerma | 2001-10-25 08:37:19 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+
+added special test
+
+------------------------------------------------------------------------
+r1347 | zimmerma | 2001-10-25 08:36:55 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed bug in rounding part when rounding towards 0 (infinite loop due to bn<an)
+
+------------------------------------------------------------------------
+r1346 | zimmerma | 2001-10-25 08:34:51 +0000 (Thu, 25 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tasinh.c
+
+added one special test
+
+------------------------------------------------------------------------
+r1345 | daney | 2001-10-24 17:33:12 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/minmax.c
+
+correct the Nan case
+
+------------------------------------------------------------------------
+r1344 | daney | 2001-10-24 17:23:08 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/dim.c
+
+add the function mpfr_dim
+
+------------------------------------------------------------------------
+r1343 | daney | 2001-10-24 17:22:36 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/minmax.c
+
+add function mpfr_min and mpfr_max
+
+------------------------------------------------------------------------
+r1342 | daney | 2001-10-24 16:12:27 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tasinh.c
+ M /trunk/tests/tatanh.c
+
+correct these tesats files
+
+------------------------------------------------------------------------
+r1341 | daney | 2001-10-24 16:11:23 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+ M /trunk/cosh.c
+ M /trunk/sinh.c
+ M /trunk/tanh.c
+
+correct some bugs
+
+------------------------------------------------------------------------
+r1340 | zimmerma | 2001-10-24 15:47:48 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added EXTRA_DIST= tgeneric.c
+
+------------------------------------------------------------------------
+r1339 | daney | 2001-10-24 15:32:28 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+remove tfma
+
+------------------------------------------------------------------------
+r1338 | daney | 2001-10-24 15:29:56 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tfma.c
+
+add tfma
+
+------------------------------------------------------------------------
+r1337 | daney | 2001-10-24 09:34:27 +0000 (Wed, 24 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+
+acosh revue et corrige...+beau
+
+------------------------------------------------------------------------
+r1336 | daney | 2001-10-23 16:57:30 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+add mpfr_log10
+
+------------------------------------------------------------------------
+r1335 | daney | 2001-10-23 16:56:22 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ A /trunk/log_base_10.c
+
+add log_base_10
+
+------------------------------------------------------------------------
+r1334 | daney | 2001-10-23 16:55:58 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+add tlog_base_10
+
+------------------------------------------------------------------------
+r1333 | daney | 2001-10-23 16:55:25 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tlog_base_10.c
+
+add test file for log_base_10 function
+
+------------------------------------------------------------------------
+r1332 | daney | 2001-10-23 16:54:12 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+correct a bug in mpfr_log10 section
+
+------------------------------------------------------------------------
+r1331 | daney | 2001-10-23 13:14:13 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+add help of log10 + fma
+
+------------------------------------------------------------------------
+r1330 | daney | 2001-10-23 12:38:15 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_2.c
+
+correct particular cases
+
+------------------------------------------------------------------------
+r1329 | daney | 2001-10-23 12:33:00 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/log_base_2.c
+
+improve the clear flags
+
+------------------------------------------------------------------------
+r1328 | daney | 2001-10-23 09:41:29 +0000 (Tue, 23 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow3.c
+
+correction dans l'entete
+
+------------------------------------------------------------------------
+r1327 | vlefevre | 2001-10-21 07:56:29 +0000 (Sun, 21 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tdiv.c
+
+Some changes to avoid warnings.
+
+------------------------------------------------------------------------
+r1326 | vlefevre | 2001-10-21 07:12:18 +0000 (Sun, 21 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Bug fixed (char -> int).
+
+------------------------------------------------------------------------
+r1325 | vlefevre | 2001-10-19 20:47:39 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.in
+
+Update.
+
+------------------------------------------------------------------------
+r1324 | vlefevre | 2001-10-19 20:45:12 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/sub_ui.c
+
+Bugs fixed concerning the "inexact" ternary value.
+
+------------------------------------------------------------------------
+r1323 | daney | 2001-10-19 16:56:51 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+suppress thypot tgeneric
+
+------------------------------------------------------------------------
+r1322 | daney | 2001-10-19 16:53:12 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+suppress sample
+
+------------------------------------------------------------------------
+r1321 | zimmerma | 2001-10-19 16:26:47 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+void -> int as return value for mpfr_add_ui
+
+------------------------------------------------------------------------
+r1320 | zimmerma | 2001-10-19 16:26:19 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add_ui.c
+
+added ternary flag
+
+------------------------------------------------------------------------
+r1319 | zimmerma | 2001-10-19 16:24:50 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+void -> int for mpfr_add and mpfr_add_ui
+
+------------------------------------------------------------------------
+r1318 | daney | 2001-10-19 16:21:08 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/thypot.c
+
+add test for hypot
+
+------------------------------------------------------------------------
+r1317 | daney | 2001-10-19 16:15:16 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+add some test
+
+------------------------------------------------------------------------
+r1316 | daney | 2001-10-19 16:13:56 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+add some functions
+
+------------------------------------------------------------------------
+r1315 | daney | 2001-10-19 16:12:44 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+add some proto
+
+------------------------------------------------------------------------
+r1314 | daney | 2001-10-19 16:09:34 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tpow3.c
+
+add test file for pow
+
+------------------------------------------------------------------------
+r1313 | daney | 2001-10-19 16:09:01 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+add the help for pow and pow_si
+
+------------------------------------------------------------------------
+r1312 | daney | 2001-10-19 16:08:29 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/pow2.c
+
+add the function pow and pow_si
+
+------------------------------------------------------------------------
+r1311 | zimmerma | 2001-10-19 16:02:34 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added two tests for 0-c and c-0 with prec(c) > prec(a)
+
+------------------------------------------------------------------------
+r1310 | vlefevre | 2001-10-19 15:53:17 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/neg.c
+
+Removed #include <stdio.h>, "return 0;" replaced by "MPFR_RET(0);".
+
+------------------------------------------------------------------------
+r1309 | vlefevre | 2001-10-19 15:45:18 +0000 (Fri, 19 Oct 2001) | 4 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/sub.c
+
+mpfr_add1 and mpfr_sub1 prototypes moved to mpfr-impl.h (to detect clashes).
+Bug fix concerning the inexact ternary value in mpfr_sub.
+mpfr_add now returns an int (inexact ternary value unsupported if true add).
+
+------------------------------------------------------------------------
+r1308 | vlefevre | 2001-10-19 14:49:44 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+Update.
+
+------------------------------------------------------------------------
+r1307 | vlefevre | 2001-10-19 14:13:10 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+Underflow/overflow check.
+
+------------------------------------------------------------------------
+r1306 | vlefevre | 2001-10-19 14:02:01 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Documentation updated.
+
+------------------------------------------------------------------------
+r1305 | vlefevre | 2001-10-19 13:57:06 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_ui.c
+
+Comment added.
+
+------------------------------------------------------------------------
+r1304 | vlefevre | 2001-10-19 13:41:41 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+MPFR_RET(0) replaced by MPFR_RET_NAN.
+
+------------------------------------------------------------------------
+r1303 | vlefevre | 2001-10-19 13:28:41 +0000 (Fri, 19 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Macro MPFR_RET_NAN.
+
+------------------------------------------------------------------------
+r1302 | vlefevre | 2001-10-18 17:29:45 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Code clean-up in mpfr_round_raw (well... IMHO).
+
+------------------------------------------------------------------------
+r1301 | daney | 2001-10-18 15:30:04 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/ui_pow.c
+
+take in account of CHAR_BIT in ui_pow
+
+------------------------------------------------------------------------
+r1300 | zimmerma | 2001-10-18 15:21:45 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+cast to mp_limb_t was missing
+
+------------------------------------------------------------------------
+r1299 | vlefevre | 2001-10-18 15:05:45 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/acosh.c
+ M /trunk/asinh.c
+ M /trunk/atanh.c
+ M /trunk/factorial.c
+
+BITS_PER_CHAR replaced by the standard CHAR_BIT.
+
+------------------------------------------------------------------------
+r1298 | hanrot | 2001-10-18 14:58:14 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r1297 | daney | 2001-10-18 13:55:26 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tui_pow.c
+
+add test of ui_pow
+
+------------------------------------------------------------------------
+r1296 | daney | 2001-10-18 13:54:47 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+add the help of ui_pow
+
+------------------------------------------------------------------------
+r1295 | daney | 2001-10-18 13:54:21 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/ui_pow.c
+
+add the function pow(unsign long int, mpfr_t)
+
+------------------------------------------------------------------------
+r1294 | vlefevre | 2001-10-18 13:52:48 +0000 (Thu, 18 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/configure
+ M /trunk/configure.in
+
+Improved configure.in.
+configure generated by Autoconf 2.52.
+
+------------------------------------------------------------------------
+r1293 | daney | 2001-10-18 12:09:08 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+ajout du flag inexact
+
+------------------------------------------------------------------------
+r1292 | vlefevre | 2001-10-18 11:27:38 +0000 (Thu, 18 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/configure
+
+fixed and improved check for gmp.h/gmp-impl.h/config.h/gmp-mparam.h/longlong.h
+and corresponding error message
+
+------------------------------------------------------------------------
+r1291 | daney | 2001-10-18 10:38:10 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+add the help on log2
+
+------------------------------------------------------------------------
+r1290 | daney | 2001-10-18 10:36:00 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tlog_base_2.c
+
+add the test file of the log2 (log in base 2)
+
+------------------------------------------------------------------------
+r1289 | daney | 2001-10-18 10:35:11 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/log_base_2.c
+
+ajout de log2 (log en base 2)
+
+------------------------------------------------------------------------
+r1288 | daney | 2001-10-18 10:24:43 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+correst tanh(0)
+
+------------------------------------------------------------------------
+r1287 | zimmerma | 2001-10-18 10:20:41 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+added two more tests
+
+------------------------------------------------------------------------
+r1286 | zimmerma | 2001-10-18 10:20:09 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+wrong sign passed to mpfr_can_round (mp_limb_t may be unsigned)
+
+------------------------------------------------------------------------
+r1285 | daney | 2001-10-18 10:10:49 +0000 (Thu, 18 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sinh.c
+
+correct a bug for sinh(Inf)
+
+------------------------------------------------------------------------
+r1284 | daney | 2001-10-17 15:49:52 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tanh.c
+
+correct syntax of tanh.c
+
+------------------------------------------------------------------------
+r1283 | daney | 2001-10-17 15:47:03 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sinh.c
+
+correct an error
+
+------------------------------------------------------------------------
+r1282 | daney | 2001-10-17 15:42:10 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/cosh.c
+
+correct few things
+
+------------------------------------------------------------------------
+r1281 | daney | 2001-10-17 15:29:50 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/cosh.c
+
+little patch for cosh
+
+------------------------------------------------------------------------
+r1280 | daney | 2001-10-17 15:04:43 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/texpm1.c
+
+add the test function of expm1
+
+------------------------------------------------------------------------
+r1279 | daney | 2001-10-17 15:04:06 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tlog1p.c
+
+add the test of the function log1p
+
+------------------------------------------------------------------------
+r1278 | daney | 2001-10-17 15:03:04 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/expm1.c
+
+add the function expm1
+
+------------------------------------------------------------------------
+r1277 | daney | 2001-10-17 15:02:30 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/log1p.c
+
+add the function log1p
+
+------------------------------------------------------------------------
+r1276 | daney | 2001-10-17 12:50:15 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+add to mpfr.texi log1p and expm1
+
+------------------------------------------------------------------------
+r1275 | daney | 2001-10-17 12:37:46 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+actualisation de exp2.c
+
+------------------------------------------------------------------------
+r1274 | daney | 2001-10-17 12:36:51 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+actualisation de exp2
+
+------------------------------------------------------------------------
+r1273 | hanrot | 2001-10-17 10:28:27 +0000 (Wed, 17 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/tdiv.c
+
+New tests in tdiv.c.
+
+------------------------------------------------------------------------
+r1272 | hanrot | 2001-10-17 10:28:14 +0000 (Wed, 17 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/div.c
+ A /trunk/div2.c
+
+New division in div.c, old one renamed in mpfr_div2. Remains to implement
+exact/inexact flag. Should not be *that* hard.
+
+------------------------------------------------------------------------
+r1271 | daney | 2001-10-16 16:02:21 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+ajout de functions pow, fma, hypot etc etc
+
+------------------------------------------------------------------------
+r1270 | zimmerma | 2001-10-16 15:48:48 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added fma.c
+
+------------------------------------------------------------------------
+r1269 | zimmerma | 2001-10-16 15:48:34 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototypes for mpfr_fma and mpfr_hypot
+
+------------------------------------------------------------------------
+r1268 | zimmerma | 2001-10-16 15:48:12 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/hypot.c
+
+small changes for inexact flag
+
+------------------------------------------------------------------------
+r1267 | zimmerma | 2001-10-16 15:41:38 +0000 (Tue, 16 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/fma.c
+
+added some cases for Inf
+implement (partly) inexact flag
+
+------------------------------------------------------------------------
+r1266 | daney | 2001-10-16 15:09:29 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/hypot.c
+
+ajout hypot
+
+------------------------------------------------------------------------
+r1265 | daney | 2001-10-16 15:06:29 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/fma.c
+
+ajout de fma
+
+------------------------------------------------------------------------
+r1264 | vlefevre | 2001-10-16 10:13:02 +0000 (Tue, 16 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+Comment: // --> /* ... */
+
+------------------------------------------------------------------------
+r1263 | zimmerma | 2001-10-15 14:19:10 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tgeneric.c
+
+generic test file
+
+------------------------------------------------------------------------
+r1262 | zimmerma | 2001-10-15 14:16:50 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+added cast to (void*) for new functions returning an int
+
+------------------------------------------------------------------------
+r1261 | zimmerma | 2001-10-15 14:16:25 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+
+added test for inexact flag
+
+------------------------------------------------------------------------
+r1260 | zimmerma | 2001-10-15 14:15:49 +0000 (Mon, 15 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/tcos.c
+
+now use tgeneric.c
+added more tests
+
+------------------------------------------------------------------------
+r1259 | zimmerma | 2001-10-15 14:15:27 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcosh.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/texp2.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsinh.c
+ M /trunk/tests/ttan.c
+ M /trunk/tests/ttanh.c
+
+now use tgeneric.c
+
+------------------------------------------------------------------------
+r1258 | zimmerma | 2001-10-15 14:14:38 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+fixed test of return values for infinities: foo(+/-Inf) is *exact*
+
+------------------------------------------------------------------------
+r1257 | zimmerma | 2001-10-15 14:13:33 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset.c
+
+now also try with negative numbers
+
+------------------------------------------------------------------------
+r1256 | zimmerma | 2001-10-15 14:09:24 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/cos.c
+ M /trunk/cosh.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp_2.c
+ M /trunk/log.c
+
+implement ternary inexact flag
+
+------------------------------------------------------------------------
+r1255 | zimmerma | 2001-10-15 14:08:57 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/div_2exp.c
+ M /trunk/exp3.c
+ M /trunk/mul_2exp.c
+
+implement inexact flag
+
+------------------------------------------------------------------------
+r1254 | zimmerma | 2001-10-15 14:06:46 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+return type is now int for mpfr_mul_2exp and mpfr_div_2exp
+
+------------------------------------------------------------------------
+r1253 | zimmerma | 2001-10-15 14:06:17 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+return type is now int for more functions
+
+------------------------------------------------------------------------
+r1252 | zimmerma | 2001-10-15 14:05:10 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+sign was not set
+
+------------------------------------------------------------------------
+r1251 | zimmerma | 2001-10-15 14:04:24 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+rewritten completely mpfr_can_round_raw
+
+------------------------------------------------------------------------
+r1250 | zimmerma | 2001-10-15 14:02:37 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+documented mpfr_set4
+
+------------------------------------------------------------------------
+r1249 | zimmerma | 2001-10-15 14:02:13 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+return non-zero if malloc failed
+
+------------------------------------------------------------------------
+r1248 | zimmerma | 2001-10-15 14:01:42 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/set_q.c
+
+cosmetic changes
+
+------------------------------------------------------------------------
+r1247 | zimmerma | 2001-10-15 14:01:18 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sin.c
+ M /trunk/sinh.c
+ M /trunk/tan.c
+ M /trunk/tanh.c
+
+implement ternary inexact flag
+
+------------------------------------------------------------------------
+r1246 | zimmerma | 2001-10-15 14:00:45 +0000 (Mon, 15 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sqrt_ui.c
+
+avoid one variable
+
+------------------------------------------------------------------------
+r1245 | daney | 2001-10-12 15:19:02 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+correction d'erreurs sur les notations + correction de la regle 9
+
+------------------------------------------------------------------------
+r1244 | zimmerma | 2001-10-12 12:56:24 +0000 (Fri, 12 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+fixed MPFR_ASSERT
+documented MPFR_ASSERTN and MPFR_ASSERTD
+
+------------------------------------------------------------------------
+r1243 | zimmerma | 2001-10-12 12:24:18 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+added test for mpfr_init_set_f prototype
+
+------------------------------------------------------------------------
+r1242 | zimmerma | 2001-10-12 12:23:50 +0000 (Fri, 12 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added test for inexact flag
+corrected a wrong test
+
+------------------------------------------------------------------------
+r1241 | zimmerma | 2001-10-12 12:23:11 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+cosmetic change
+
+------------------------------------------------------------------------
+r1240 | zimmerma | 2001-10-12 12:22:36 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tsub_ui (did exist but forgotten in Makefile) and tset (new file)
+
+------------------------------------------------------------------------
+r1239 | zimmerma | 2001-10-12 12:21:40 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tset.c
+
+test file for mpfr_set, initial version
+
+------------------------------------------------------------------------
+r1238 | zimmerma | 2001-10-12 12:20:53 +0000 (Fri, 12 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+void -> int as return value for several functions
+and explained the ternary return value
+
+------------------------------------------------------------------------
+r1237 | zimmerma | 2001-10-12 12:19:49 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/neg.c
+ M /trunk/set_f.c
+ M /trunk/ui_sub.c
+
+implemented inexact flag
+
+------------------------------------------------------------------------
+r1236 | zimmerma | 2001-10-12 12:18:46 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+void -> int as return value for new functions implementing inexact flag
+
+------------------------------------------------------------------------
+r1235 | zimmerma | 2001-10-12 12:18:10 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+implemeted inexact flag in mpfr_set_d
+
+------------------------------------------------------------------------
+r1234 | zimmerma | 2001-10-12 12:17:24 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+implemented inexact flag in mpfr_round
+
+------------------------------------------------------------------------
+r1233 | zimmerma | 2001-10-12 12:16:13 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+completely rewritten
+
+------------------------------------------------------------------------
+r1232 | zimmerma | 2001-10-12 12:15:46 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+computation of inexact flag now directly uses mpfr_round_raw
+
+------------------------------------------------------------------------
+r1231 | zimmerma | 2001-10-12 12:13:27 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+added 'if' in MPFR_ASSERT to avoid compiler warning
+
+------------------------------------------------------------------------
+r1230 | zimmerma | 2001-10-12 12:12:07 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+put initial value in variables which may be used without being initialized
+
+------------------------------------------------------------------------
+r1229 | zimmerma | 2001-10-12 12:11:23 +0000 (Fri, 12 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated things done, added Rounding section
+
+------------------------------------------------------------------------
+r1228 | daney | 2001-10-11 16:47:30 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+ajout de log1p et expm1
+
+------------------------------------------------------------------------
+r1227 | zimmerma | 2001-10-11 15:26:57 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tatan.c
+
+reduced number of random tests (took too much time)
+
+------------------------------------------------------------------------
+r1226 | zimmerma | 2001-10-11 15:19:04 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added random tests for inexact flag
+
+------------------------------------------------------------------------
+r1225 | zimmerma | 2001-10-11 15:18:22 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+ M /trunk/sub_ui.c
+
+implemented inexact flag
+
+------------------------------------------------------------------------
+r1224 | zimmerma | 2001-10-11 15:05:13 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_sub.c
+
+added random tests for inexact flag
+
+------------------------------------------------------------------------
+r1223 | daney | 2001-10-11 14:51:03 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+ajout du log generic et de fma
+
+------------------------------------------------------------------------
+r1222 | zimmerma | 2001-10-11 12:33:08 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+inexact flag was wrong in some cases
+
+------------------------------------------------------------------------
+r1221 | zimmerma | 2001-10-11 12:31:37 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added random tests for inexact flag
+
+------------------------------------------------------------------------
+r1220 | zimmerma | 2001-10-11 12:28:53 +0000 (Thu, 11 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/tasin.c
+
+reduced number of loops per precision from 100 to 10
+(test was too long)
+
+------------------------------------------------------------------------
+r1219 | zimmerma | 2001-10-11 08:25:55 +0000 (Thu, 11 Oct 2001) | 3 lines
+Changed paths:
+ M /trunk/configure
+
+improved check for gmp-impl.h/config.h/gmp-mparam.h/longlong.h
+and corresponding error message
+
+------------------------------------------------------------------------
+r1218 | zimmerma | 2001-10-11 08:25:03 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+stack-alloc.h no longer needed (will be included in gmp-impl.h)
+
+------------------------------------------------------------------------
+r1217 | zimmerma | 2001-10-11 08:24:35 +0000 (Thu, 11 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+stack-alloc.h is no longer needed (will be included in gmp-impl.h)
+
+------------------------------------------------------------------------
+r1216 | zimmerma | 2001-10-09 13:25:20 +0000 (Tue, 09 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added proof of rules
+
+------------------------------------------------------------------------
+r1215 | zimmerma | 2001-10-09 11:38:44 +0000 (Tue, 09 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+fixed buggy test
+
+------------------------------------------------------------------------
+r1214 | zimmerma | 2001-10-05 07:35:10 +0000 (Fri, 05 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed bug for b + d where b=2^900+2^500+2^110, d=2^900-2^500-2^110
+
+------------------------------------------------------------------------
+r1213 | zimmerma | 2001-10-03 10:24:47 +0000 (Wed, 03 Oct 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+fixed bug in mpfr_set_d on 64-bit machines
+
+------------------------------------------------------------------------
+r1212 | zimmerma | 2001-09-28 12:13:30 +0000 (Fri, 28 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+fixed a few problems in mpfr_set_d for sizer < MPFR_LIMBS_PER_DOUBLE
+
+------------------------------------------------------------------------
+r1211 | zimmerma | 2001-09-28 10:15:12 +0000 (Fri, 28 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.bib
+
+added paper of Brent and McMillan
+
+------------------------------------------------------------------------
+r1210 | zimmerma | 2001-09-28 10:11:04 +0000 (Fri, 28 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+does not call compare_exp2_exp3 when argc=4
+
+------------------------------------------------------------------------
+r1209 | zimmerma | 2001-09-28 10:09:06 +0000 (Fri, 28 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one item
+
+------------------------------------------------------------------------
+r1208 | zimmerma | 2001-09-28 09:42:22 +0000 (Fri, 28 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/set_prec.c
+
+now mpfr_set_prec returns 1 instead of producing an error in case prec=0
+
+------------------------------------------------------------------------
+r1207 | daney | 2001-09-27 13:03:29 +0000 (Thu, 27 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+New version with new generic function + / * etc
+
+------------------------------------------------------------------------
+r1206 | vlefevre | 2001-09-20 15:08:05 +0000 (Thu, 20 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/BUGS
+ M /trunk/INSTALL
+ M /trunk/README
+
+BUGS updated.
+
+------------------------------------------------------------------------
+r1205 | vlefevre | 2001-09-13 16:35:18 +0000 (Thu, 13 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttan.c
+
+Prototype changes.
+
+------------------------------------------------------------------------
+r1204 | vlefevre | 2001-09-13 13:20:40 +0000 (Thu, 13 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/dump.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+
+<strings.h> -> <string.h> (ISO C).
+
+------------------------------------------------------------------------
+r1203 | vlefevre | 2001-09-13 13:12:21 +0000 (Thu, 13 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_prc_raw.c
+
+#include added.
+
+------------------------------------------------------------------------
+r1202 | vlefevre | 2001-09-13 12:32:44 +0000 (Thu, 13 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/agm.c
+ M /trunk/euler.c
+ M /trunk/init.c
+ M /trunk/pi.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/set_prec.c
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tcos.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/tests/tisnan.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/tsin.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttan.c
+
+#include added/removed.
+
+------------------------------------------------------------------------
+r1201 | vlefevre | 2001-09-13 12:16:12 +0000 (Thu, 13 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/configure
+ M /trunk/configure.in
+ M /trunk/mpfr-impl.h
+
+GCC option -Wno-implicit removed and prototype added to mpfr-impl.h
+
+------------------------------------------------------------------------
+r1200 | vlefevre | 2001-09-12 15:51:26 +0000 (Wed, 12 Sep 2001) | 8 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/Makefile.in
+
+INCLUDES in Makefile.am: -I$(top_srcdir) and @INCLUDES@ swapped.
+This defines the following precedence for the tests:
+ 1) MPFR directories
+ 2) User-defined directory
+ 3) GMP include directory
+This allows the user to override the GMP longlong.h file with the
+gcc-3 one, by using: INCLUDES="-I.../include" ./configure ...
+
+------------------------------------------------------------------------
+r1199 | vlefevre | 2001-09-12 13:50:42 +0000 (Wed, 12 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+
+#include order fixed.
+
+------------------------------------------------------------------------
+r1198 | vlefevre | 2001-09-12 12:19:27 +0000 (Wed, 12 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+Tests added (in particular, inex value).
+
+------------------------------------------------------------------------
+r1197 | vlefevre | 2001-09-12 12:19:06 +0000 (Wed, 12 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1196 | vlefevre | 2001-09-11 15:21:52 +0000 (Tue, 11 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+MPFR_RET: definition changed to avoid warning.
+
+------------------------------------------------------------------------
+r1195 | vlefevre | 2001-09-11 14:02:32 +0000 (Tue, 11 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/set.c
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+
+Inexact ternary value for mpfr_set4, mpfr_set_ui and mpfr_set_si.
+
+------------------------------------------------------------------------
+r1194 | vlefevre | 2001-09-11 13:55:08 +0000 (Tue, 11 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Macro SAFE_ABS.
+
+------------------------------------------------------------------------
+r1193 | vlefevre | 2001-09-11 13:16:51 +0000 (Tue, 11 Sep 2001) | 3 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+
+Inexact ternary value and flag for mpfr_set_underflow, mpfr_set_overflow
+and mpfr_check_range.
+
+------------------------------------------------------------------------
+r1192 | vlefevre | 2001-09-11 03:20:42 +0000 (Tue, 11 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/set.c
+
+Macro MPFR_RET added. Ternary value for mpfr_set4.
+
+------------------------------------------------------------------------
+r1191 | vlefevre | 2001-09-11 01:02:15 +0000 (Tue, 11 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+ M /trunk/mpfr.h
+
+New flags.
+
+------------------------------------------------------------------------
+r1190 | vlefevre | 2001-09-10 23:58:12 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/div.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_f.c
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/sqrt.c
+ M /trunk/tests/Makefile.in
+
+Parameter added to mpfr_round_raw: pointer to inexact ternary value.
+
+------------------------------------------------------------------------
+r1189 | hanrot | 2001-09-10 16:30:21 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Zqwiuyt
+
+------------------------------------------------------------------------
+r1188 | hanrot | 2001-09-10 16:21:42 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Zorgs.
+
+------------------------------------------------------------------------
+r1187 | hanrot | 2001-09-10 15:42:12 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Gleurbs.
+
+------------------------------------------------------------------------
+r1186 | hanrot | 2001-09-10 15:40:57 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Patch grotesque.
+
+------------------------------------------------------------------------
+r1185 | hanrot | 2001-09-10 15:20:08 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Patch for the case SIZE(r) < MPFR_LIMBS_PER_DOUBLE.
+
+------------------------------------------------------------------------
+r1184 | zimmerma | 2001-09-10 07:47:29 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/ttan.c
+
+test file for mpfr_tan
+
+------------------------------------------------------------------------
+r1183 | zimmerma | 2001-09-10 07:47:15 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin.c
+
+fixed a few typos
+
+------------------------------------------------------------------------
+r1182 | zimmerma | 2001-09-10 07:46:56 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/tests/reuse.c
+
+added mpfr_tan
+
+------------------------------------------------------------------------
+r1181 | zimmerma | 2001-09-10 07:46:37 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added ttan
+
+------------------------------------------------------------------------
+r1180 | zimmerma | 2001-09-10 07:45:54 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added the tangent
+
+------------------------------------------------------------------------
+r1179 | zimmerma | 2001-09-10 07:45:14 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added tan.c
+
+------------------------------------------------------------------------
+r1178 | zimmerma | 2001-09-10 07:44:05 +0000 (Mon, 10 Sep 2001) | 2 lines
+Changed paths:
+ A /trunk/tan.c
+
+tangent function
+
+------------------------------------------------------------------------
+r1177 | zimmerma | 2001-09-07 12:46:54 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+removed mpfr_sin and mpfr_cos (now separate implementations)
+
+------------------------------------------------------------------------
+r1176 | zimmerma | 2001-09-07 12:45:52 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+removed sin_cos
+
+------------------------------------------------------------------------
+r1175 | zimmerma | 2001-09-07 12:41:15 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added sine and cosine
+
+------------------------------------------------------------------------
+r1174 | zimmerma | 2001-09-07 12:40:29 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+removed sin_cos, added sin and cos
+
+------------------------------------------------------------------------
+r1173 | zimmerma | 2001-09-07 12:37:21 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+removed mpfr_sin_cos
+
+------------------------------------------------------------------------
+r1172 | zimmerma | 2001-09-07 12:32:28 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+removed sin_cos, added sin and cos
+
+------------------------------------------------------------------------
+r1171 | zimmerma | 2001-09-07 12:32:07 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+removed tsin_cos, added tsin and tcos
+
+------------------------------------------------------------------------
+r1170 | zimmerma | 2001-09-07 12:30:42 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tcos.c
+ A /trunk/tests/tsin.c
+
+test files for mpfr_cos and mpfr_sin
+
+------------------------------------------------------------------------
+r1169 | zimmerma | 2001-09-07 12:30:14 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ A /trunk/sin.c
+
+new implementation of mpfr_sin, using mpfr_cos
+
+------------------------------------------------------------------------
+r1168 | zimmerma | 2001-09-07 12:29:52 +0000 (Fri, 07 Sep 2001) | 2 lines
+Changed paths:
+ A /trunk/cos.c
+
+new (faster) implementation of mpfr_cos
+
+------------------------------------------------------------------------
+r1167 | vlefevre | 2001-09-06 15:59:15 +0000 (Thu, 06 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/exceptions.c
+
+Fix: flags set in mpfr_set_{under,over}flow().
+
+------------------------------------------------------------------------
+r1166 | vlefevre | 2001-09-06 12:49:53 +0000 (Thu, 06 Sep 2001) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+Cases where the result is 0 fixed.
+Integer overflow checked in mpfr_sub.
+
+------------------------------------------------------------------------
+r1165 | vlefevre | 2001-09-06 11:35:12 +0000 (Thu, 06 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/add.c
+
+In add.c: use mpfr_cmp_abs instead of mpfr_cmp3; x - x fixed for GMP_RNDD.
+
+------------------------------------------------------------------------
+r1164 | vlefevre | 2001-09-06 10:27:57 +0000 (Thu, 06 Sep 2001) | 2 lines
+Changed paths:
+ A /trunk/cmp_abs.c
+
+Compare the absolute values of two nonzero FP numbers.
+
+------------------------------------------------------------------------
+r1163 | vlefevre | 2001-09-05 15:40:47 +0000 (Wed, 05 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+ M /trunk/mpfr.h
+
+mpfr_cmp3 changed and integer overflows checked.
+
+------------------------------------------------------------------------
+r1162 | zimmerma | 2001-09-05 09:52:50 +0000 (Wed, 05 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added efficiency item
+
+------------------------------------------------------------------------
+r1161 | vlefevre | 2001-09-03 14:52:45 +0000 (Mon, 03 Sep 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Cases [+-]0 + [+-]0 fixed (depending on the rounding mode).
+
+------------------------------------------------------------------------
+r1160 | vlefevre | 2001-08-29 15:29:46 +0000 (Wed, 29 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+Optimization + overflow support.
+
+------------------------------------------------------------------------
+r1159 | vlefevre | 2001-08-29 14:10:30 +0000 (Wed, 29 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/mpfr-impl.h
+
+Case +0 + -0 fixed.
+
+------------------------------------------------------------------------
+r1158 | zimmerma | 2001-08-29 12:30:24 +0000 (Wed, 29 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added one test
+
+------------------------------------------------------------------------
+r1157 | zimmerma | 2001-08-29 09:24:30 +0000 (Wed, 29 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+another test from Norbert
+
+------------------------------------------------------------------------
+r1156 | zimmerma | 2001-08-29 09:24:10 +0000 (Wed, 29 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+another fix (final copy when xsize > ysize was wrong)
+
+------------------------------------------------------------------------
+r1155 | zimmerma | 2001-08-28 16:15:02 +0000 (Tue, 28 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added several tests for case (1b)
+
+------------------------------------------------------------------------
+r1154 | zimmerma | 2001-08-28 15:57:47 +0000 (Tue, 28 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+another fix (previous one was incomplete)
+
+------------------------------------------------------------------------
+r1153 | zimmerma | 2001-08-28 15:56:22 +0000 (Tue, 28 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added one more test (from Norbert)
+
+------------------------------------------------------------------------
+r1152 | vlefevre | 2001-08-28 14:20:50 +0000 (Tue, 28 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Bug fixed.
+
+------------------------------------------------------------------------
+r1151 | vlefevre | 2001-08-28 10:28:50 +0000 (Tue, 28 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Bug fixed and update to check the exponents.
+
+------------------------------------------------------------------------
+r1150 | zimmerma | 2001-08-27 14:54:28 +0000 (Mon, 27 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+added test for 53 <= xprec, yprec <= 128
+
+------------------------------------------------------------------------
+r1149 | zimmerma | 2001-08-27 14:10:03 +0000 (Mon, 27 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added multiple tests for 53 <= xprec, yprec <= 128
+
+------------------------------------------------------------------------
+r1148 | zimmerma | 2001-08-27 14:09:13 +0000 (Mon, 27 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+was completely wrong for ysize > xsize
+
+------------------------------------------------------------------------
+r1147 | zimmerma | 2001-08-27 12:47:37 +0000 (Mon, 27 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added faster formula in exp(-8*n) for Euler's constant
+
+------------------------------------------------------------------------
+r1146 | vlefevre | 2001-08-25 09:58:24 +0000 (Sat, 25 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Assertion support with debug level.
+
+------------------------------------------------------------------------
+r1145 | vlefevre | 2001-08-25 09:11:18 +0000 (Sat, 25 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/add_ui.c
+ A /trunk/exceptions.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ A /trunk/save_expo.c
+ M /trunk/sub_ui.c
+
+Some support for exponent change and exceptions.
+
+------------------------------------------------------------------------
+r1144 | zimmerma | 2001-08-23 14:57:09 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+added constant ALPHA (for mpfr_const_euler)
+
+------------------------------------------------------------------------
+r1143 | zimmerma | 2001-08-23 14:56:36 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.in
+
+added euler/teuler
+
+------------------------------------------------------------------------
+r1142 | zimmerma | 2001-08-23 14:53:23 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added teuler
+
+------------------------------------------------------------------------
+r1141 | zimmerma | 2001-08-23 14:47:41 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added euler.c
+
+------------------------------------------------------------------------
+r1140 | zimmerma | 2001-08-23 14:45:58 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed pb with c2 = c2old << dif with dif negative
+
+------------------------------------------------------------------------
+r1139 | zimmerma | 2001-08-23 14:25:50 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug for (2^53+4) - 1
+
+------------------------------------------------------------------------
+r1138 | zimmerma | 2001-08-23 13:51:31 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added new test from Norbert Mueller
+
+------------------------------------------------------------------------
+r1137 | zimmerma | 2001-08-23 13:41:17 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+fixed pb: sh becomes "negative"
+
+------------------------------------------------------------------------
+r1136 | zimmerma | 2001-08-23 11:13:44 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+included Euler's constant
+
+------------------------------------------------------------------------
+r1135 | zimmerma | 2001-08-23 11:13:10 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/algorithms.bib
+
+bibtex file for algorithms.tex
+
+------------------------------------------------------------------------
+r1134 | zimmerma | 2001-08-23 11:07:19 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/teuler.c
+
+test file for mpfr_const_euler
+
+------------------------------------------------------------------------
+r1133 | zimmerma | 2001-08-23 11:06:52 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/euler.c
+
+computation of Euler's constant 0.577...
+
+------------------------------------------------------------------------
+r1132 | zimmerma | 2001-08-23 11:06:23 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added missing prototype
+
+------------------------------------------------------------------------
+r1131 | zimmerma | 2001-08-23 11:01:31 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr_const_euler returns an int
+
+------------------------------------------------------------------------
+r1130 | zimmerma | 2001-08-23 11:00:34 +0000 (Thu, 23 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+added mpfr_const_euler
+
+------------------------------------------------------------------------
+r1129 | vlefevre | 2001-08-22 16:01:37 +0000 (Wed, 22 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+Tests added.
+
+------------------------------------------------------------------------
+r1128 | vlefevre | 2001-08-22 16:01:28 +0000 (Wed, 22 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+Bugs fixed (particular cases).
+
+------------------------------------------------------------------------
+r1127 | vlefevre | 2001-08-22 15:18:06 +0000 (Wed, 22 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+"mant(c) != 1/2" test was broken.
+
+------------------------------------------------------------------------
+r1126 | vlefevre | 2001-08-22 15:05:23 +0000 (Wed, 22 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+check fixed. Check added: 2^53 + 1 --> 2^53.
+
+------------------------------------------------------------------------
+r1125 | vlefevre | 2001-08-22 14:24:02 +0000 (Wed, 22 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.in
+
+Update.
+
+------------------------------------------------------------------------
+r1124 | zimmerma | 2001-08-21 15:02:19 +0000 (Tue, 21 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+added one test
+
+------------------------------------------------------------------------
+r1123 | zimmerma | 2001-08-21 15:02:05 +0000 (Tue, 21 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+fixed stupid bug when dif < 0
+
+------------------------------------------------------------------------
+r1122 | zimmerma | 2001-08-14 14:15:25 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+
+added mpfr_asin
+
+------------------------------------------------------------------------
+r1121 | zimmerma | 2001-08-14 14:14:57 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added missing cast
+
+------------------------------------------------------------------------
+r1120 | zimmerma | 2001-08-14 13:50:47 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tasin.c
+
+test file for mpfr_asin
+
+------------------------------------------------------------------------
+r1119 | zimmerma | 2001-08-14 13:47:32 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/asin.c
+
+arc-sine, contributed by Mathieu Dutour
+
+------------------------------------------------------------------------
+r1118 | zimmerma | 2001-08-14 13:37:06 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+added mpfr_asin
+
+------------------------------------------------------------------------
+r1117 | zimmerma | 2001-08-14 13:36:50 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tatan.c
+
+new name for file tarctan.c
+
+------------------------------------------------------------------------
+r1116 | zimmerma | 2001-08-14 13:36:37 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ D /trunk/tests/tarctan.c
+
+renamed to tatan.c
+
+------------------------------------------------------------------------
+r1115 | zimmerma | 2001-08-14 13:36:10 +0000 (Tue, 14 Aug 2001) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+renamed tarctan.c into tatan.c
+added tasin.c
+
+------------------------------------------------------------------------
+r1114 | zimmerma | 2001-08-14 13:32:47 +0000 (Tue, 14 Aug 2001) | 3 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+renamed arctan.c to atan.c
+added asin.c
+
+------------------------------------------------------------------------
+r1113 | zimmerma | 2001-08-14 13:32:20 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ A /trunk/atan.c
+
+new name for file arctan.c
+
+------------------------------------------------------------------------
+r1112 | zimmerma | 2001-08-14 13:32:04 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ D /trunk/arctan.c
+
+moved to atan.c
+
+------------------------------------------------------------------------
+r1111 | zimmerma | 2001-08-14 13:15:56 +0000 (Tue, 14 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+low significant bit is in ap[0] and not in ap[an-1] !!!
+
+------------------------------------------------------------------------
+r1110 | vlefevre | 2001-08-13 17:56:06 +0000 (Mon, 13 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Cleaner MPFR_SET_SAME_SIGN.
+
+------------------------------------------------------------------------
+r1109 | vlefevre | 2001-08-13 04:48:05 +0000 (Mon, 13 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Macros MPFR_SET_SAME_SIGN, MPFR_INIT and MPFR_INIT1 changed to expressions.
+
+------------------------------------------------------------------------
+r1108 | vlefevre | 2001-08-10 15:40:56 +0000 (Fri, 10 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+ M /trunk/set_ui.c
+ M /trunk/set_z.c
+
+Bugs fixed (wrong types).
+
+------------------------------------------------------------------------
+r1107 | vlefevre | 2001-08-10 12:35:30 +0000 (Fri, 10 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Macros mpfr_init_set_* changed to expressions.
+
+------------------------------------------------------------------------
+r1106 | vlefevre | 2001-08-10 12:04:17 +0000 (Fri, 10 Aug 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+Makefile.in update.
+
+------------------------------------------------------------------------
+r1105 | zimmerma | 2001-07-06 14:02:40 +0000 (Fri, 06 Jul 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+edited wrt GNU style
+
+------------------------------------------------------------------------
+r1104 | zimmerma | 2001-07-06 13:56:34 +0000 (Fri, 06 Jul 2001) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed stupid bug: ceil(a/b) isn't (a+b-1)/a but simply a/b for a negative!
+
+------------------------------------------------------------------------
+r1103 | zimmerma | 2001-07-06 13:04:04 +0000 (Fri, 06 Jul 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed array bound write (bn < an + cancel1 + 1)
+
+------------------------------------------------------------------------
+r1102 | zimmerma | 2001-07-06 12:32:13 +0000 (Fri, 06 Jul 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+macros MPFR_NOTZERO and MPFR_ISZERO did not work properly with 64-bit words
+
+------------------------------------------------------------------------
+r1101 | zimmerma | 2001-06-29 16:21:05 +0000 (Fri, 29 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed bug for output base 2^k
+
+------------------------------------------------------------------------
+r1100 | zimmerma | 2001-06-29 16:19:30 +0000 (Fri, 29 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added one test
+
+------------------------------------------------------------------------
+r1099 | zimmerma | 2001-06-29 16:17:20 +0000 (Fri, 29 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added a section for the exponential
+
+------------------------------------------------------------------------
+r1098 | zimmerma | 2001-06-29 11:56:51 +0000 (Fri, 29 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+ M /trunk/tests/tdiv_ui.c
+
+fixed bug when dividend is 0
+
+------------------------------------------------------------------------
+r1097 | zimmerma | 2001-06-28 12:45:27 +0000 (Thu, 28 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/exp_2.c
+
+moved TMP_FREE
+
+------------------------------------------------------------------------
+r1096 | zimmerma | 2001-06-28 12:39:45 +0000 (Thu, 28 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added 2 things
+
+------------------------------------------------------------------------
+r1095 | zimmerma | 2001-06-27 09:40:24 +0000 (Wed, 27 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added mpfr.info to files to remove for "make distclean"
+
+------------------------------------------------------------------------
+r1094 | vlefevre | 2001-06-23 01:41:08 +0000 (Sat, 23 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/Makefile.in
+
+Non-existent C source references removed.
+
+------------------------------------------------------------------------
+r1093 | vlefevre | 2001-06-23 01:13:41 +0000 (Sat, 23 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+Macros MPFR_INIT and MPFR_INIT1 fixed.
+
+------------------------------------------------------------------------
+r1092 | zimmerma | 2001-06-18 13:52:58 +0000 (Mon, 18 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/sqrt.c
+
+nested double TMP_DECL's
+
+------------------------------------------------------------------------
+r1091 | daney | 2001-06-14 15:55:36 +0000 (Thu, 14 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/arctan.c
+ M /trunk/mpfr.h
+ M /trunk/out_str.c
+ M /trunk/sin_cos.c
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tarctan.c
+ M /trunk/tests/tfactorial.c
+ M /trunk/ui_sub.c
+
+A few patches.
+
+------------------------------------------------------------------------
+r1090 | zimmerma | 2001-06-07 14:22:08 +0000 (Thu, 07 Jun 2001) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/sin_cos.c
+
+added mpfr_sin and mpfr_cos
+corrected in the documentation some exact values
+
+------------------------------------------------------------------------
+r1089 | zimmerma | 2001-06-01 16:15:23 +0000 (Fri, 01 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+removed 2 tabs
+
+------------------------------------------------------------------------
+r1088 | zimmerma | 2001-06-01 16:03:15 +0000 (Fri, 01 Jun 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added change explaining the LGPL with non-free programs
+
+------------------------------------------------------------------------
+r1087 | hanrot | 2001-05-31 16:56:11 +0000 (Thu, 31 May 2001) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Patch for the case b = 0 or c = 0.
+
+------------------------------------------------------------------------
+r1086 | hanrot | 2001-05-23 16:57:20 +0000 (Wed, 23 May 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+Added DDefour's bug.
+
+------------------------------------------------------------------------
+r1085 | hanrot | 2001-05-22 10:29:32 +0000 (Tue, 22 May 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+Patch in the case MPFR_PREC(b) > MPFR_PREC(a)+cancel.
+
+------------------------------------------------------------------------
+r1084 | vlefevre | 2001-05-10 12:31:23 +0000 (Thu, 10 May 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/mpfr.texi
+ M /trunk/tests/Makefile.in
+
+fixed bug in mpfr.texi
+
+------------------------------------------------------------------------
+r1083 | daney | 2001-05-10 09:19:25 +0000 (Thu, 10 May 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+correction du bug donne par vincent + ajout des aides des fonctions hyperbolic
+
+------------------------------------------------------------------------
+r1082 | daney | 2001-05-09 15:26:28 +0000 (Wed, 09 May 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r1081 | zimmerma | 2001-04-20 08:49:45 +0000 (Fri, 20 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+log(0) now returns 0 (exact infinity)
+
+------------------------------------------------------------------------
+r1080 | zimmerma | 2001-04-18 16:05:20 +0000 (Wed, 18 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+fixed pbs with NaN/Inf
+
+------------------------------------------------------------------------
+r1079 | zimmerma | 2001-04-18 11:56:09 +0000 (Wed, 18 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed new bug found by Nathalie Revol (case when add_one_ulp produces a carry)
+
+------------------------------------------------------------------------
+r1078 | zimmerma | 2001-04-18 11:51:51 +0000 (Wed, 18 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsub.c
+
+added new bug found by Nathalie Revol
+
+------------------------------------------------------------------------
+r1077 | zimmerma | 2001-04-18 11:40:26 +0000 (Wed, 18 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug for 1.0000... - 0.000001 for rounding up or nearest
+
+------------------------------------------------------------------------
+r1076 | revol | 2001-04-17 18:23:18 +0000 (Tue, 17 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+Case where argument < 0 included, NR 17-04-2001
+
+------------------------------------------------------------------------
+r1075 | zimmerma | 2001-04-12 21:38:29 +0000 (Thu, 12 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+added new (special) tests
+
+------------------------------------------------------------------------
+r1074 | zimmerma | 2001-04-12 21:38:02 +0000 (Thu, 12 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tsub.c
+
+test file for mpfr_sub
+
+------------------------------------------------------------------------
+r1073 | zimmerma | 2001-04-12 21:37:47 +0000 (Thu, 12 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tsub
+
+------------------------------------------------------------------------
+r1072 | daney | 2001-04-06 09:30:15 +0000 (Fri, 06 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+change old exp2 (conflict with 2^x) to exp_2
+
+------------------------------------------------------------------------
+r1071 | zimmerma | 2001-04-05 18:29:54 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+0 -> GMP_RNDN
+
+------------------------------------------------------------------------
+r1070 | zimmerma | 2001-04-05 18:29:03 +0000 (Thu, 05 Apr 2001) | 3 lines
+Changed paths:
+ M /trunk/cmp2.c
+
+check apart the case c=0 (otherwise some low significant limbs may be
+non zero, which may produce a wrong result)
+
+------------------------------------------------------------------------
+r1069 | zimmerma | 2001-04-05 18:18:14 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+mpfr_exp2 -> mpfr_exp_2
+
+------------------------------------------------------------------------
+r1068 | zimmerma | 2001-04-05 17:52:36 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+mpfr_exp2 -> mpfr_exp_2
+
+------------------------------------------------------------------------
+r1067 | daney | 2001-04-05 17:42:31 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+reactualise .h
+
+------------------------------------------------------------------------
+r1066 | daney | 2001-04-05 17:42:09 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/thyperbolic.c
+
+change header
+
+------------------------------------------------------------------------
+r1065 | daney | 2001-04-05 17:39:30 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+change reuse to suppress factorial
+
+------------------------------------------------------------------------
+r1064 | daney | 2001-04-05 17:33:16 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+suppress of timing in makefile
+
+------------------------------------------------------------------------
+r1063 | daney | 2001-04-05 17:22:23 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/exp_2.c
+
+add the old exp2 function and file renamed by exp_2
+
+------------------------------------------------------------------------
+r1062 | daney | 2001-04-05 17:20:11 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+change makefile for new functions
+
+------------------------------------------------------------------------
+r1061 | daney | 2001-04-05 17:19:21 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+change make file test for hyperbolic function exp2 and factorial
+
+------------------------------------------------------------------------
+r1060 | daney | 2001-04-05 17:17:38 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tacosh.c
+ A /trunk/tests/tasinh.c
+ A /trunk/tests/tatanh.c
+ A /trunk/tests/tcosh.c
+ A /trunk/tests/tsinh.c
+ A /trunk/tests/ttanh.c
+
+add new test file for hyperbolic function
+
+------------------------------------------------------------------------
+r1059 | daney | 2001-04-05 17:16:37 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/texp2.c
+ A /trunk/tests/tfactorial.c
+ A /trunk/tests/thyperbolic.c
+
+add test file for new function
+
+------------------------------------------------------------------------
+r1058 | daney | 2001-04-05 17:15:37 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ A /trunk/factorial.c
+
+add function
+
+------------------------------------------------------------------------
+r1057 | daney | 2001-04-05 17:14:44 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/acosh.c
+ A /trunk/asinh.c
+ A /trunk/atanh.c
+ A /trunk/sinh.c
+ A /trunk/tanh.c
+
+new file function
+
+------------------------------------------------------------------------
+r1056 | daney | 2001-04-05 17:13:11 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/cosh.c
+
+new function file
+
+------------------------------------------------------------------------
+r1055 | zimmerma | 2001-04-05 17:07:35 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+new version with cmp2.c
+
+------------------------------------------------------------------------
+r1054 | zimmerma | 2001-04-05 15:53:49 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+fixed pb with inexact flag when 'int' and 'mp_limb_t' has different sizes
+
+------------------------------------------------------------------------
+r1053 | daney | 2001-04-05 15:31:42 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+ M /trunk/tests/tcmp_ui.c
+
+fixed bug for mpfr_cmp_ui (Inf, 0)
+
+------------------------------------------------------------------------
+r1052 | daney | 2001-04-05 15:29:31 +0000 (Thu, 05 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/set_ui.c
+ M /trunk/tests/tset_si.c
+
+fixed bug for mpfr_set_ui (x, 0) [was giving -0]
+
+------------------------------------------------------------------------
+r1051 | zimmerma | 2001-04-03 17:36:03 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/algorithms.tex
+
+added algorithm for mpfr_cmp2
+
+------------------------------------------------------------------------
+r1050 | zimmerma | 2001-04-03 17:35:37 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added cmp2.c
+
+------------------------------------------------------------------------
+r1049 | zimmerma | 2001-04-03 17:35:03 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp2.c
+
+fixed bug when diff_exp >= BITS_PER_MP_LIMB
+
+------------------------------------------------------------------------
+r1048 | zimmerma | 2001-04-03 17:34:03 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added new test for worst cases: 1 - 1/2^i and (1 + 1/2^i) - 1/2^i
+
+------------------------------------------------------------------------
+r1047 | zimmerma | 2001-04-03 17:11:08 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+changed return value of mpfr_cmp2
+
+------------------------------------------------------------------------
+r1046 | zimmerma | 2001-04-03 17:10:39 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ A /trunk/cmp2.c
+
+new file for mpfr_cmp2
+
+------------------------------------------------------------------------
+r1045 | zimmerma | 2001-04-03 17:10:23 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+moved mpfr_cmp2 to separate file cmp2.c
+
+------------------------------------------------------------------------
+r1044 | zimmerma | 2001-04-03 17:09:44 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added several tests, and a routine that generates worst cases
+
+------------------------------------------------------------------------
+r1043 | zimmerma | 2001-04-03 10:21:10 +0000 (Tue, 03 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+two changes suggested by Kevin Ryde
+
+------------------------------------------------------------------------
+r1042 | zimmerma | 2001-04-02 17:46:07 +0000 (Mon, 02 Apr 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+new version from new Makefile.am
+
+------------------------------------------------------------------------
+r1041 | zimmerma | 2001-03-27 20:23:12 +0000 (Tue, 27 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new test
+
+------------------------------------------------------------------------
+r1040 | zimmerma | 2001-03-27 20:22:57 +0000 (Tue, 27 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed new bug in mpfr_cmp2 found by Fabrice
+
+------------------------------------------------------------------------
+r1039 | zimmerma | 2001-03-21 22:07:04 +0000 (Wed, 21 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added new test
+
+------------------------------------------------------------------------
+r1038 | zimmerma | 2001-03-21 22:05:54 +0000 (Wed, 21 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed bug found by Nathalie Revol
+
+------------------------------------------------------------------------
+r1037 | zimmerma | 2001-03-20 14:32:26 +0000 (Tue, 20 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added 2 items
+
+------------------------------------------------------------------------
+r1036 | zimmerma | 2001-03-20 10:03:08 +0000 (Tue, 20 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+added test for mpfr_cmp_ui (-0, 0)
+
+------------------------------------------------------------------------
+r1035 | zimmerma | 2001-03-20 10:02:27 +0000 (Tue, 20 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+now prints -0 for -0
+
+------------------------------------------------------------------------
+r1034 | revol | 2001-03-19 18:11:09 +0000 (Mon, 19 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+
+Comparison between 0- and 0 now returns 0, NR 19-03-2001
+
+------------------------------------------------------------------------
+r1033 | vlefevre | 2001-03-16 13:50:18 +0000 (Fri, 16 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+added cast to avoid a warning
+
+------------------------------------------------------------------------
+r1032 | zimmerma | 2001-03-13 09:32:53 +0000 (Tue, 13 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+added tests for inexact return value
+
+------------------------------------------------------------------------
+r1031 | zimmerma | 2001-03-13 09:32:28 +0000 (Tue, 13 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+tiny bug in inexact value determination
+
+------------------------------------------------------------------------
+r1030 | zimmerma | 2001-03-13 08:55:46 +0000 (Tue, 13 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+
+mpfr_mul now returns an int
+
+------------------------------------------------------------------------
+r1029 | zimmerma | 2001-03-09 17:52:21 +0000 (Fri, 09 Mar 2001) | 2 lines
+Changed paths:
+ A /trunk/algorithms.tex
+
+description of algorithms
+
+------------------------------------------------------------------------
+r1028 | zimmerma | 2001-03-09 17:14:53 +0000 (Fri, 09 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+reorganized
+
+------------------------------------------------------------------------
+r1027 | zimmerma | 2001-03-08 13:26:07 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added few things
+
+------------------------------------------------------------------------
+r1026 | zimmerma | 2001-03-08 13:25:39 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/mpfr.h
+
+added arc-tangent
+
+------------------------------------------------------------------------
+r1025 | zimmerma | 2001-03-08 13:24:57 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tarctan
+
+------------------------------------------------------------------------
+r1024 | zimmerma | 2001-03-08 13:24:29 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+
+added test to mpfr_arctan
+
+------------------------------------------------------------------------
+r1023 | zimmerma | 2001-03-08 13:23:34 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tarctan.c
+
+added header
+
+------------------------------------------------------------------------
+r1022 | zimmerma | 2001-03-08 13:22:20 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tarctan.c
+
+test file for mpfr_arctan
+
+------------------------------------------------------------------------
+r1021 | zimmerma | 2001-03-08 13:14:26 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/arctan.c
+
+removed math.h
+
+------------------------------------------------------------------------
+r1020 | zimmerma | 2001-03-08 13:08:25 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ A /trunk/arctan.c
+
+arctangent function (contributed by Mathieu Dutour, done slight changes)
+
+------------------------------------------------------------------------
+r1019 | zimmerma | 2001-03-08 13:07:32 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added Mathieu Dutour in contributors
+
+------------------------------------------------------------------------
+r1018 | zimmerma | 2001-03-08 13:06:20 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_arctan
+
+------------------------------------------------------------------------
+r1017 | zimmerma | 2001-03-08 11:21:31 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tcan_round.c
+
+added one test
+
+------------------------------------------------------------------------
+r1016 | zimmerma | 2001-03-08 11:21:14 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+fixed bug in mpfr_can_round_raw, when err > bn*BITS_PER_MP_LIMB
+
+------------------------------------------------------------------------
+r1015 | zimmerma | 2001-03-08 09:35:03 +0000 (Thu, 08 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+now tset_str <number> <prec> is possible
+
+------------------------------------------------------------------------
+r1014 | zimmerma | 2001-03-06 16:41:25 +0000 (Tue, 06 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+fixed bug for Infinity (was testing zero before)
+
+------------------------------------------------------------------------
+r1013 | zimmerma | 2001-03-01 10:32:32 +0000 (Thu, 01 Mar 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+replaced (mp_limb_t) 4294967295 by CNST_LIMB(0xFFFFFFFF)
+
+------------------------------------------------------------------------
+r1012 | zimmerma | 2001-02-22 13:40:32 +0000 (Thu, 22 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+forgot to declare q in mpfr_get_d2 when BITS_PER_MP_LIMB=64
+
+------------------------------------------------------------------------
+r1011 | zimmerma | 2001-02-21 10:40:35 +0000 (Wed, 21 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+removed fprintf() when unexpected end of string
+
+------------------------------------------------------------------------
+r1010 | zimmerma | 2001-02-21 10:39:04 +0000 (Wed, 21 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+added undef's to avoid warnings at compilation
+
+------------------------------------------------------------------------
+r1009 | zimmerma | 2001-02-19 12:46:07 +0000 (Mon, 19 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+removed mpfr_set_machine_rnd_mode
+
+------------------------------------------------------------------------
+r1008 | zimmerma | 2001-02-18 12:16:14 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/reuse.c
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpi.c
+ M /trunk/tests/tpow.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tswap.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+changed "int main(..)" to two lines
+
+------------------------------------------------------------------------
+r1007 | zimmerma | 2001-02-18 12:13:55 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+now initialize str_is_null correctly
+
+------------------------------------------------------------------------
+r1006 | zimmerma | 2001-02-18 12:13:41 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tround.c
+
+added more tests
+
+------------------------------------------------------------------------
+r1005 | zimmerma | 2001-02-18 12:13:16 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+don't change MPFR_SIZE when allocated size is enough
+
+------------------------------------------------------------------------
+r1004 | zimmerma | 2001-02-18 12:12:52 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+updated specification of mpfr_sgn
+
+------------------------------------------------------------------------
+r1003 | zimmerma | 2001-02-18 12:12:35 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed definition of mpfr_sgn to get rid of MPFR_NOTZERO
+
+------------------------------------------------------------------------
+r1002 | zimmerma | 2001-02-18 12:12:21 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+size of freed block by __gmp_free_func was wrong
+
+------------------------------------------------------------------------
+r1001 | zimmerma | 2001-02-18 12:11:59 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tisnan and tget_d
+
+------------------------------------------------------------------------
+r1000 | zimmerma | 2001-02-18 12:11:40 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/isnan.c
+
+fixed bug for Inf (recognized as an ordinary number)
+
+------------------------------------------------------------------------
+r999 | zimmerma | 2001-02-18 12:11:25 +0000 (Sun, 18 Feb 2001) | 2 lines
+Changed paths:
+ A /trunk/tests/tget_d.c
+ A /trunk/tests/tisnan.c
+
+new test file
+
+------------------------------------------------------------------------
+r998 | zimmerma | 2001-02-16 10:18:33 +0000 (Fri, 16 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+check overflow in _mpfr_ceil_exp2
+
+------------------------------------------------------------------------
+r997 | zimmerma | 2001-02-15 22:19:58 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+added prototype for Ulp
+
+------------------------------------------------------------------------
+r996 | zimmerma | 2001-02-15 22:19:42 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/isnan.c
+
+changed _d to _p, added mpfr_number_p
+
+------------------------------------------------------------------------
+r995 | zimmerma | 2001-02-15 22:19:16 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+changed MPN_COPY into MPN_COPY_INCR/MPN_COPY_DECR in mpfr_round_raw
+
+------------------------------------------------------------------------
+r994 | zimmerma | 2001-02-15 22:18:55 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+added tests for one of arguments NULL
+
+------------------------------------------------------------------------
+r993 | zimmerma | 2001-02-15 22:18:16 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+moved mpfr_sgn to mpfr.h (defined in manual)
+
+------------------------------------------------------------------------
+r992 | zimmerma | 2001-02-15 22:17:58 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+
+use MPZ_REALLOC
+
+------------------------------------------------------------------------
+r991 | zimmerma | 2001-02-15 22:17:41 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/set_str.c
+
+added const to 2nd argument of mpfr_set_str
+
+------------------------------------------------------------------------
+r990 | zimmerma | 2001-02-15 22:17:10 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added set_ui.c
+
+------------------------------------------------------------------------
+r989 | zimmerma | 2001-02-15 22:16:44 +0000 (Thu, 15 Feb 2001) | 3 lines
+Changed paths:
+ M /trunk/set_si.c
+ A /trunk/set_ui.c
+
+added cast to "unsigned long" for ai = ABS(i)
+moved mpfr_set_ui to separate file
+
+------------------------------------------------------------------------
+r988 | zimmerma | 2001-02-15 22:16:04 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/mpfr.texi
+
+now when str==NULL return a block which is exactly strlen(str)+1 bytes long
+
+------------------------------------------------------------------------
+r987 | zimmerma | 2001-02-15 22:15:38 +0000 (Thu, 15 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/agm.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/generic.c
+ M /trunk/log2.c
+ M /trunk/pi.c
+ M /trunk/print_raw.c
+ M /trunk/set_d.c
+ M /trunk/sin_cos.c
+ M /trunk/sub.c
+
+fixed problems with old K&R compilers (_PROTO missing)
+
+------------------------------------------------------------------------
+r986 | zimmerma | 2001-02-08 12:56:50 +0000 (Thu, 08 Feb 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added more items
+
+------------------------------------------------------------------------
+r985 | zimmerma | 2001-01-23 16:11:30 +0000 (Tue, 23 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+fixed ulp computation
+
+------------------------------------------------------------------------
+r984 | zimmerma | 2001-01-19 16:20:33 +0000 (Fri, 19 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+changed behaviour for "tlog N": prints only differences with increasing ulps
+
+------------------------------------------------------------------------
+r983 | zimmerma | 2001-01-19 09:55:11 +0000 (Fri, 19 Jan 2001) | 4 lines
+Changed paths:
+ M /trunk/set_d.c
+
+fixed pb in mpfr_get_d2 for 64-bit machines: in q + res/MP_BASE_AS_DOUBLE,
+q seems first to be cast into a double, which gives more than one ulp of
+error
+
+------------------------------------------------------------------------
+r982 | zimmerma | 2001-01-18 16:08:34 +0000 (Thu, 18 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added guard to prevent multiple inclusion
+
+------------------------------------------------------------------------
+r981 | zimmerma | 2001-01-18 08:42:27 +0000 (Thu, 18 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed bug in mpfr_cmp2 (found on the IA64)
+
+------------------------------------------------------------------------
+r980 | zimmerma | 2001-01-11 17:26:02 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added tests for 0 in mpfr_set_str_raw
+
+------------------------------------------------------------------------
+r979 | zimmerma | 2001-01-11 17:25:28 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+fixed bug for +0000E0
+
+------------------------------------------------------------------------
+r978 | zimmerma | 2001-01-11 16:53:48 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/sqrtrem.c
+
+incorporated changes from Kevin/Torbjorn for GMP 3.2
+
+------------------------------------------------------------------------
+r977 | zimmerma | 2001-01-11 16:46:03 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+truncate the last uk (when the precision is not a power of 2)
+
+------------------------------------------------------------------------
+r976 | zimmerma | 2001-01-11 16:45:01 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+_mp_allocate_func -> _gmp_allocate_func
+
+------------------------------------------------------------------------
+r975 | zimmerma | 2001-01-11 16:44:24 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+_mp_reallocate_func -> _gmp_reallocate_func
+
+------------------------------------------------------------------------
+r974 | zimmerma | 2001-01-11 16:44:04 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/set_dfl_prec.c
+
+__gmp_default_fp_bit_precision -> __mpfr_default_fp_bit_precision
+
+------------------------------------------------------------------------
+r973 | zimmerma | 2001-01-11 16:43:37 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+ M /trunk/round.c
+
+_mp_xxx_func -> _gmp_xxx_func
+
+------------------------------------------------------------------------
+r972 | zimmerma | 2001-01-11 16:43:16 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+removed mpfr_srandom
+
+------------------------------------------------------------------------
+r971 | zimmerma | 2001-01-11 16:42:09 +0000 (Thu, 11 Jan 2001) | 3 lines
+Changed paths:
+ M /trunk/out_str.c
+
+sprintf -> fprintf
+_mp_free_func -> _gmp_free_func
+
+------------------------------------------------------------------------
+r970 | zimmerma | 2001-01-11 16:41:33 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/mpz_set_fr.c
+
+_mp_reallocate_func -> __gmp_reallocate_func
+
+------------------------------------------------------------------------
+r969 | zimmerma | 2001-01-11 16:41:09 +0000 (Thu, 11 Jan 2001) | 4 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added paragraph on NaN and infinities, docu on mpfr_nan_d and mpfr_inf_d
+removed mpfr_srandom
+some renamings
+
+------------------------------------------------------------------------
+r968 | zimmerma | 2001-01-11 16:39:50 +0000 (Thu, 11 Jan 2001) | 4 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+removed srandom
+__gmp_default_fp_bit_precision -> __mpfr_default_fp_bit_precision
+added protocols for mpfr_get_default_prec, mpfr_nan_d and mpfr_inf_d
+
+------------------------------------------------------------------------
+r967 | zimmerma | 2001-01-11 16:38:40 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+removed superfluous TMP_FREE(marker)
+
+------------------------------------------------------------------------
+r966 | zimmerma | 2001-01-11 16:37:52 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/inp_str.c
+
+_mp_xxx_func -> _gmp_xxx_func
+
+------------------------------------------------------------------------
+r965 | zimmerma | 2001-01-11 16:22:41 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/clear.c
+ M /trunk/dump.c
+
+_mp_free_func -> _gmp_free_func
+
+------------------------------------------------------------------------
+r964 | zimmerma | 2001-01-11 16:21:43 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ A /trunk/isnan.c
+
+functions to check for NaN and infinities
+
+------------------------------------------------------------------------
+r963 | zimmerma | 2001-01-11 16:21:14 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added isnan.c, removed srandom.h
+
+------------------------------------------------------------------------
+r962 | zimmerma | 2001-01-11 16:19:06 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added two items from Kevin
+
+------------------------------------------------------------------------
+r961 | zimmerma | 2001-01-11 16:17:44 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+add 2 items
+
+------------------------------------------------------------------------
+r960 | zimmerma | 2001-01-11 16:17:31 +0000 (Thu, 11 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+0.4 -> 1.0
+
+------------------------------------------------------------------------
+r959 | zimmerma | 2001-01-05 16:24:25 +0000 (Fri, 05 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added one test for large operands
+
+------------------------------------------------------------------------
+r958 | zimmerma | 2001-01-05 16:23:34 +0000 (Fri, 05 Jan 2001) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+fixed bug in _mpfr_ceil_exp2 (underflow when exp < -1022)
+
+------------------------------------------------------------------------
+r957 | zimmerma | 2000-12-22 16:49:12 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+remove what was done
+
+------------------------------------------------------------------------
+r956 | zimmerma | 2000-12-22 16:48:24 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/README
+
+added mpfr-test.h
+
+------------------------------------------------------------------------
+r955 | zimmerma | 2000-12-22 16:44:51 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+added Vincent
+
+------------------------------------------------------------------------
+r954 | zimmerma | 2000-12-22 16:41:28 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/NEWS
+
+1.1 -> 2001
+
+------------------------------------------------------------------------
+r953 | zimmerma | 2000-12-22 16:17:45 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+cast for _mpfr_floor_log2 was on the wrong side
+
+------------------------------------------------------------------------
+r952 | zimmerma | 2000-12-22 16:17:09 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added one test
+
+------------------------------------------------------------------------
+r951 | zimmerma | 2000-12-22 16:16:54 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+simplified _mpfr_floor_log2
+
+------------------------------------------------------------------------
+r950 | zimmerma | 2000-12-22 16:16:35 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+code was wrong for infinity
+
+------------------------------------------------------------------------
+r949 | zimmerma | 2000-12-22 15:45:22 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+only editing
+
+------------------------------------------------------------------------
+r948 | zimmerma | 2000-12-22 15:45:04 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added special() cases
+
+------------------------------------------------------------------------
+r947 | zimmerma | 2000-12-22 15:42:49 +0000 (Fri, 22 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/log2.c
+
+removed #if 0 (on Alpha with cc the enclosed code was still used
+since the # was not in the first column)
+
+------------------------------------------------------------------------
+r946 | zimmerma | 2000-12-22 14:55:42 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+changes for version 1.1
+
+------------------------------------------------------------------------
+r945 | zimmerma | 2000-12-22 14:52:02 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added one test (exp2 vs exp3)
+
+------------------------------------------------------------------------
+r944 | zimmerma | 2000-12-22 14:51:00 +0000 (Fri, 22 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/exp2.c
+
+changed c from mp_limb_t into unsigned long in mpfr_exp2_aux2
+(otherwise bugs on IRIX -n32)
+
+------------------------------------------------------------------------
+r943 | zimmerma | 2000-12-22 12:22:13 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tpow.c
+
+added one test
+
+------------------------------------------------------------------------
+r942 | zimmerma | 2000-12-22 12:21:56 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+fixed wrong combination of conditions for Infinity
+
+------------------------------------------------------------------------
+r941 | zimmerma | 2000-12-22 12:10:49 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added mpfr-test.h for MIPS
+
+------------------------------------------------------------------------
+r940 | hanrot | 2000-12-22 10:47:43 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+
+Modified macro calls
+
+------------------------------------------------------------------------
+r939 | zimmerma | 2000-12-22 09:29:05 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added cast (int) to random() to avoid warning on Solaris
+
+------------------------------------------------------------------------
+r938 | zimmerma | 2000-12-22 09:07:59 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added <string.h>
+
+------------------------------------------------------------------------
+r937 | zimmerma | 2000-12-22 08:57:57 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrtrem.c
+
+tiny change at the end of main routine (suggested by Guillaume)
+
+------------------------------------------------------------------------
+r936 | zimmerma | 2000-12-22 08:54:56 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added one test
+
+------------------------------------------------------------------------
+r935 | zimmerma | 2000-12-22 08:53:59 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added two more tests
+
+------------------------------------------------------------------------
+r934 | zimmerma | 2000-12-22 08:53:25 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug when c does not overlap with a, b is negative and GMP_RNDN
+
+------------------------------------------------------------------------
+r933 | zimmerma | 2000-12-22 08:52:20 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+
+moved prototypes for mpfr_set4 and mpfr_cmp3 to mpfr.h
+
+------------------------------------------------------------------------
+r932 | zimmerma | 2000-12-22 08:51:40 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed bug in mpfr_cmp2 when d=0 and lots of bits match
+
+------------------------------------------------------------------------
+r931 | zimmerma | 2000-12-22 08:50:43 +0000 (Fri, 22 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/NEWS
+
+updated for version 1.1
+
+------------------------------------------------------------------------
+r930 | zimmerma | 2000-12-21 17:23:51 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tpow.c
+
+test file for power functions
+
+------------------------------------------------------------------------
+r929 | zimmerma | 2000-12-21 17:22:42 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/reuse.c
+
+test file for in-place operations
+
+------------------------------------------------------------------------
+r928 | zimmerma | 2000-12-21 17:17:51 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+unsigned char (or int) -> mp_rnd_t
+
+------------------------------------------------------------------------
+r927 | zimmerma | 2000-12-21 17:12:14 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+unsigned char -> mp_rnd_t
+
+------------------------------------------------------------------------
+r926 | zimmerma | 2000-12-21 17:11:31 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+unsigned int -> mp_rnd_t
+
+------------------------------------------------------------------------
+r925 | zimmerma | 2000-12-21 17:08:38 +0000 (Thu, 21 Dec 2000) | 4 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add_ui.c
+ M /trunk/agm.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/get_str.c
+ M /trunk/inp_str.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/reldiff.c
+ M /trunk/set_d.c
+ M /trunk/sin_cos.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub.c
+ M /trunk/sub_ui.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+
+k2r -> ansi style
+removed #include <math.h> by defining auxiliary functions
+fixed several tiny remaining bugs with NaN/Inf
+
+------------------------------------------------------------------------
+r924 | zimmerma | 2000-12-21 17:07:12 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+updated description of mpfr_cmp* and mpfr_sin_cos
+
+------------------------------------------------------------------------
+r923 | zimmerma | 2000-12-21 17:06:15 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added MPFR_SIGN
+
+------------------------------------------------------------------------
+r922 | zimmerma | 2000-12-21 17:05:49 +0000 (Thu, 21 Dec 2000) | 5 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+added MPFR_CLEAR_NAN
+MPFR_RESET_INF -> MPFR_CLEAR_INF
+moved MPFR_SIGN to mpfr.h
+added prototypes for log2/isqrt/cuberoot functions
+
+------------------------------------------------------------------------
+r921 | zimmerma | 2000-12-21 17:04:24 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added reuse, tcmp2, teq, tpow, trandom, ttrunc
+
+------------------------------------------------------------------------
+r920 | zimmerma | 2000-12-21 17:02:25 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+removed isnan(), ...
+
+------------------------------------------------------------------------
+r919 | zimmerma | 2000-12-21 17:00:59 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt_ui.c
+
+removed gmp-impl.h, isnan(), ...
+
+------------------------------------------------------------------------
+r918 | zimmerma | 2000-12-21 17:00:21 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+removed gmp-impl, isnan(), ...
+
+------------------------------------------------------------------------
+r917 | zimmerma | 2000-12-21 16:59:24 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+removed cputime stuff
+
+------------------------------------------------------------------------
+r916 | zimmerma | 2000-12-21 16:58:24 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tset_z.c
+
+k&r -> ansi style
+
+------------------------------------------------------------------------
+r915 | zimmerma | 2000-12-21 16:57:08 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tout_str.c
+
+removed isnan() decl.
+
+------------------------------------------------------------------------
+r914 | zimmerma | 2000-12-21 16:55:30 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+MINNORM -> mpfr-test.h
+
+------------------------------------------------------------------------
+r913 | zimmerma | 2000-12-21 16:52:57 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+ulp -> mpfr-test.h
+
+------------------------------------------------------------------------
+r912 | zimmerma | 2000-12-21 16:51:36 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+removed isnan() declaration
+
+------------------------------------------------------------------------
+r911 | zimmerma | 2000-12-21 16:50:48 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+now use MINNORM and MAXNORM
+
+------------------------------------------------------------------------
+r910 | zimmerma | 2000-12-21 16:49:00 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+max, min -> macros
+
+------------------------------------------------------------------------
+r909 | zimmerma | 2000-12-21 12:10:49 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new tests
+
+------------------------------------------------------------------------
+r908 | zimmerma | 2000-12-21 12:07:52 +0000 (Thu, 21 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+added MINNORM, MAXNORM, MIN, MAX, ABS
+
+------------------------------------------------------------------------
+r907 | hanrot | 2000-12-20 16:36:05 +0000 (Wed, 20 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+ M /trunk/tests/tset_str.c
+
+A few basic patches.
+
+------------------------------------------------------------------------
+r906 | hanrot | 2000-12-20 16:35:55 +0000 (Wed, 20 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+Added support for PPC/Linux
+
+------------------------------------------------------------------------
+r905 | hanrot | 2000-12-20 14:54:10 +0000 (Wed, 20 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr-test.h
+
+Patch for wrong prototype.
+
+------------------------------------------------------------------------
+r904 | hanrot | 2000-12-20 10:49:00 +0000 (Wed, 20 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/configure
+ M /trunk/cputime.h
+ M /trunk/mpfr-test.h
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+Added prototypes for all test files.
+
+------------------------------------------------------------------------
+r903 | vlefevre | 2000-12-18 15:07:51 +0000 (Mon, 18 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/add_ulp.c
+ M /trunk/extract.c
+ M /trunk/mpz_set_fr.c
+ M /trunk/set_d.c
+ M /trunk/set_q.c
+ M /trunk/set_z.c
+
+Warnings suppressed on Alpha/OSF1.
+
+------------------------------------------------------------------------
+r902 | zimmerma | 2000-12-18 09:44:06 +0000 (Mon, 18 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added mpfr-test.h
+
+------------------------------------------------------------------------
+r901 | zimmerma | 2000-12-18 09:40:46 +0000 (Mon, 18 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/aclocal.m4
+
+back to 1.3
+
+------------------------------------------------------------------------
+r900 | zimmerma | 2000-12-18 09:06:50 +0000 (Mon, 18 Dec 2000) | 2 lines
+Changed paths:
+ A /trunk/mpfr-test.h
+
+auxiliary test files
+
+------------------------------------------------------------------------
+r899 | zimmerma | 2000-12-18 09:06:34 +0000 (Mon, 18 Dec 2000) | 2 lines
+Changed paths:
+ D /trunk/tests/mpfr-test.h
+
+moved to main directory
+
+------------------------------------------------------------------------
+r898 | zimmerma | 2000-12-18 09:02:54 +0000 (Mon, 18 Dec 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/mpfr-test.h
+
+auxiliary test functions
+
+------------------------------------------------------------------------
+r897 | zimmerma | 2000-12-18 09:02:00 +0000 (Mon, 18 Dec 2000) | 5 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/aclocal.m4
+ M /trunk/add.c
+ M /trunk/add_ui.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/configure
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/extract.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sin_cos.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sqrtrem.c
+ M /trunk/sub.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+
+changed name of mpfr struct fields: _mp_d -> _mpfr_d
+ (to detect conflicts with mpf)
+fixed a few problems in non-STDC headers
+moved definitions of mpfr-impl.h to mpfr-test.h and created a real mpfr-impl.h
+
+------------------------------------------------------------------------
+r896 | zimmerma | 2000-12-15 17:46:34 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+removed tzeta
+
+------------------------------------------------------------------------
+r895 | zimmerma | 2000-12-15 17:42:59 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+explained how to enter NaN/Inf with mpfr_set_str_raw
+
+------------------------------------------------------------------------
+r894 | zimmerma | 2000-12-15 17:42:21 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+removed zeta.c
+
+------------------------------------------------------------------------
+r893 | zimmerma | 2000-12-15 17:40:47 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+added 'to do' for NaN/Inf flags
+
+------------------------------------------------------------------------
+r892 | zimmerma | 2000-12-15 17:39:14 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+clear NaN/Inf flags of result
+
+------------------------------------------------------------------------
+r891 | zimmerma | 2000-12-15 17:37:33 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/ui_sub.c
+
+improved indentation
+
+------------------------------------------------------------------------
+r890 | zimmerma | 2000-12-15 17:35:00 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+
+adapted to NaN/Inf
+
+------------------------------------------------------------------------
+r889 | zimmerma | 2000-12-15 17:29:01 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sub_ui.c
+
+nothing (only better indenting)
+
+------------------------------------------------------------------------
+r888 | zimmerma | 2000-12-15 17:27:03 +0000 (Fri, 15 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+adapted to NaN/Inf
+removed warnings
+
+------------------------------------------------------------------------
+r887 | zimmerma | 2000-12-15 17:21:32 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt_ui.c
+
+adapted to NaN/Inf
+
+------------------------------------------------------------------------
+r886 | zimmerma | 2000-12-15 17:20:55 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/generic.c
+ M /trunk/sin_cos.c
+
+removed warnings
+
+------------------------------------------------------------------------
+r885 | zimmerma | 2000-12-15 17:11:49 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+clear NaN/Inf flags in normal case
+
+------------------------------------------------------------------------
+r884 | zimmerma | 2000-12-15 17:06:11 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+
+adapted to NaN/Inf
+
+------------------------------------------------------------------------
+r883 | zimmerma | 2000-12-15 16:55:19 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_srandom
+
+------------------------------------------------------------------------
+r882 | zimmerma | 2000-12-15 16:54:50 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+now uses directly mpn_random, to avoid all problems with include files
+
+------------------------------------------------------------------------
+r881 | zimmerma | 2000-12-15 16:45:41 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsin_cos.c
+
+added 4 tests
+
+------------------------------------------------------------------------
+r880 | zimmerma | 2000-12-15 16:45:05 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub_ui.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+
+_mp_d -> MPFR_MANT
+
+------------------------------------------------------------------------
+r879 | zimmerma | 2000-12-15 16:41:07 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+ M /trunk/set_str_raw.c
+
+added error message when memory allocation fails
+
+------------------------------------------------------------------------
+r878 | zimmerma | 2000-12-15 16:27:51 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/inp_str.c
+ M /trunk/mpz_set_fr.c
+ M /trunk/print_raw.c
+ M /trunk/round.c
+
+added error message when memory allocation fails
+
+------------------------------------------------------------------------
+r877 | zimmerma | 2000-12-15 16:26:53 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/eq.c
+ M /trunk/log.c
+
+_mp_d -> MPFR_MANT
+
+------------------------------------------------------------------------
+r876 | zimmerma | 2000-12-15 16:26:09 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/init.c
+
+0 -> NULL
+
+------------------------------------------------------------------------
+r875 | zimmerma | 2000-12-15 16:25:14 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/generic.c
+
+added error message if memory allocation fails
+
+------------------------------------------------------------------------
+r874 | zimmerma | 2000-12-15 16:24:35 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+_mp_d -> PTR
+
+------------------------------------------------------------------------
+r873 | zimmerma | 2000-12-15 16:23:08 +0000 (Fri, 15 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/agm.c
+
+_mp_prec -> MPFR_PREC
+_mp_d -> MPFR_MANT
+
+------------------------------------------------------------------------
+r872 | zimmerma | 2000-12-15 16:18:53 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+ M /trunk/mpfr.h
+
+added mpfr_swap
+
+------------------------------------------------------------------------
+r871 | zimmerma | 2000-12-15 15:09:30 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+removed MPFR_SET_IS_FP (not used)
+
+------------------------------------------------------------------------
+r870 | hanrot | 2000-12-15 14:42:57 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/init.c
+ M /trunk/log.c
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/pow.c
+
+A few patches.
+
+------------------------------------------------------------------------
+r869 | vlefevre | 2000-12-15 14:36:22 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+MPFR_CHANGE_SIGN modified to avoid a possible side effect.
+
+------------------------------------------------------------------------
+r868 | zimmerma | 2000-12-15 14:24:11 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+warning: x is a MPF not a MPFR!
+
+------------------------------------------------------------------------
+r867 | hanrot | 2000-12-15 14:12:30 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Modification of the order of includes in random.c
+
+------------------------------------------------------------------------
+r866 | vlefevre | 2000-12-15 12:56:19 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/configure
+ M /trunk/configure.in
+ M /trunk/tests/Makefile.in
+
+Added some warning flags for GCC.
+
+------------------------------------------------------------------------
+r865 | hanrot | 2000-12-15 12:50:28 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ A /trunk/srandom.h
+
+Header file for srandom()
+
+------------------------------------------------------------------------
+r864 | hanrot | 2000-12-15 12:21:35 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/add_ulp.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/mpfr.h
+ M /trunk/pow.c
+ M /trunk/random.c
+
+Patches for compiler warnings.
+
+------------------------------------------------------------------------
+r863 | hanrot | 2000-12-15 11:16:40 +0000 (Fri, 15 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/get_str.c
+ M /trunk/log2.c
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul_ui.c
+ M /trunk/pi.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sub_ui.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+Yet another patch for include files.
+
+------------------------------------------------------------------------
+r862 | hanrot | 2000-12-15 11:05:55 +0000 (Fri, 15 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/add_ui.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/extract.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/inp_str.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sin_cos.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/sub_ui.c
+ M /trunk/swap.c
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+Permutation of includes to avoid warnings due to careless multiple definition
+of ULONG_MAX.
+
+------------------------------------------------------------------------
+r861 | vlefevre | 2000-12-14 17:47:12 +0000 (Thu, 14 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+ M /trunk/set.c
+ M /trunk/set_f.c
+
+Bug fixed concerning the flags.
+
+------------------------------------------------------------------------
+r860 | vlefevre | 2000-12-14 17:28:41 +0000 (Thu, 14 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/set_str.c
+
+Bugs fixed (in case char is signed and accented characters are given).
+
+------------------------------------------------------------------------
+r859 | vlefevre | 2000-12-14 17:02:11 +0000 (Thu, 14 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Include "urandom.h". Old code removed.
+
+------------------------------------------------------------------------
+r858 | vlefevre | 2000-12-14 15:28:28 +0000 (Thu, 14 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/reldiff.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+
+Take into account Inf, Nans ; clear the flags of the return variable
+in most function calls.
+
+------------------------------------------------------------------------
+r857 | vlefevre | 2000-12-14 14:36:09 +0000 (Thu, 14 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Use urandom().
+
+------------------------------------------------------------------------
+r856 | vlefevre | 2000-12-14 14:29:04 +0000 (Thu, 14 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+
+Take into account Inf, Nans ; clear the flags of the return variable
+in most function calls.
+
+------------------------------------------------------------------------
+r855 | hanrot | 2000-12-14 12:14:57 +0000 (Thu, 14 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Yet another random patch.
+
+------------------------------------------------------------------------
+r854 | hanrot | 2000-12-14 12:08:44 +0000 (Thu, 14 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Replaced random by rand.
+
+------------------------------------------------------------------------
+r853 | zimmerma | 2000-12-13 14:55:24 +0000 (Wed, 13 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+fixed pb with mp_ptr vs mp_srcptr
+
+------------------------------------------------------------------------
+r852 | hanrot | 2000-12-13 14:50:26 +0000 (Wed, 13 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tsin_cos.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+Take into account Inf, Nans ; clear the flags of the return variable
+in most function calls. Tests updated accordingly
+
+------------------------------------------------------------------------
+r851 | hanrot | 2000-12-13 14:50:13 +0000 (Wed, 13 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/eq.c
+ M /trunk/generic.c
+ M /trunk/inp_str.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/set_d.c
+ M /trunk/sub_ui.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+
+Take into account Inf, Nans ; clear the flags of the return variable
+in most function calls.
+
+------------------------------------------------------------------------
+r850 | zimmerma | 2000-12-13 08:42:38 +0000 (Wed, 13 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+check that we can round the cosine too
+
+------------------------------------------------------------------------
+r849 | zimmerma | 2000-12-12 16:40:05 +0000 (Tue, 12 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/exp3.c
+
+removed TIMING stuff
+ensures prec_x >= 0
+
+------------------------------------------------------------------------
+r848 | zimmerma | 2000-12-12 16:38:47 +0000 (Tue, 12 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+we need m >= 2 in mpfr_exp2_aux2
+
+------------------------------------------------------------------------
+r847 | zimmerma | 2000-12-12 13:57:34 +0000 (Tue, 12 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sub_ui.c
+
+forgot TMP_MARK(marker)
+
+------------------------------------------------------------------------
+r846 | zimmerma | 2000-12-12 13:50:44 +0000 (Tue, 12 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+
+forgot TMP_MARK(marker) or free'd in wrong order
+
+------------------------------------------------------------------------
+r845 | zimmerma | 2000-12-12 13:44:07 +0000 (Tue, 12 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+
+forgot TMP_MARK(marker)
+
+------------------------------------------------------------------------
+r844 | zimmerma | 2000-12-12 11:49:13 +0000 (Tue, 12 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+fixed mpf_reldiff, mpf_urandomb and mpf_t
+
+------------------------------------------------------------------------
+r843 | zimmerma | 2000-12-12 11:41:28 +0000 (Tue, 12 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added stack-alloc.h when --disable-alloca
+
+------------------------------------------------------------------------
+r842 | vlefevre | 2000-12-11 12:47:11 +0000 (Mon, 11 Dec 2000) | 4 lines
+Changed paths:
+ M /trunk/out_str.c
+ M /trunk/set_d.c
+
+out_str.c: <string.h> included
+set_d.c: (0./0.) instead of sqrt(-1) for NaN (doesn't need <math.h>)
+set_d.c: () added for macros Infp and Infm
+
+------------------------------------------------------------------------
+r841 | zimmerma | 2000-12-07 13:11:32 +0000 (Thu, 07 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+shortened string in mpfr_set_str_raw which was greater than precision
+
+------------------------------------------------------------------------
+r840 | zimmerma | 2000-12-07 11:25:37 +0000 (Thu, 07 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/set_d.c
+
+replaced isnan/isinf/math.h (not portable, for example isinf does not exist
+on Sparc) by new macros from mpfr.h
+
+------------------------------------------------------------------------
+r839 | zimmerma | 2000-12-07 11:24:31 +0000 (Thu, 07 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/set_str_raw.c
+
+added an error message when the mantissa is larger than the precision
+(in mpfr_set_str_raw)
+
+------------------------------------------------------------------------
+r838 | zimmerma | 2000-12-07 11:23:24 +0000 (Thu, 07 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added macros to recognize doubles that are NaNs and infinities
+(isinf is not portable and requires math.h)
+
+------------------------------------------------------------------------
+r837 | zimmerma | 2000-12-07 11:22:04 +0000 (Thu, 07 Dec 2000) | 5 lines
+Changed paths:
+ M /trunk/div.c
+
+in case the destination precision is less than that of the operands,
+and the 1st iteration fails, increase directly the precision to the maximum
+of that of the operands, otherwise divisions by 1.0 may need lots of
+iterations
+
+------------------------------------------------------------------------
+r836 | zimmerma | 2000-12-07 10:44:28 +0000 (Thu, 07 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+added 'return' after dealing with infinities
+
+------------------------------------------------------------------------
+r835 | zimmerma | 2000-12-07 10:37:08 +0000 (Thu, 07 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added wish from JC Fauge`re
+
+------------------------------------------------------------------------
+r834 | zimmerma | 2000-12-05 13:47:05 +0000 (Tue, 05 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/init.c
+ M /trunk/mpfr.texi
+
+mpfr_init/mpfr_init2 initialize to 0 (compatibility with mpf)
+
+------------------------------------------------------------------------
+r833 | zimmerma | 2000-12-05 13:24:43 +0000 (Tue, 05 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed bug in mpfr_cmp2 when return value is k*BITS_PER_MP_LIMB-1
+
+------------------------------------------------------------------------
+r832 | zimmerma | 2000-12-05 13:23:58 +0000 (Tue, 05 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+added new test for mpfr_cmp2
+
+------------------------------------------------------------------------
+r831 | zimmerma | 2000-12-05 12:37:14 +0000 (Tue, 05 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+now ABSSIZE uses only 29 bits
+
+------------------------------------------------------------------------
+r830 | zimmerma | 2000-12-04 14:36:36 +0000 (Mon, 04 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added some explanations how to free the memory space allocated by mpfr_get_str
+
+------------------------------------------------------------------------
+r829 | zimmerma | 2000-12-04 13:45:14 +0000 (Mon, 04 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+fixed one bug found by N. Mueller (MPFR_ABSSIZE(u) was used instead of usize)
+
+------------------------------------------------------------------------
+r828 | zimmerma | 2000-12-04 13:44:24 +0000 (Mon, 04 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one more test from N. Mueller
+
+------------------------------------------------------------------------
+r827 | zimmerma | 2000-12-01 17:30:41 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+ M /trunk/sin_cos.c
+
+cleaned calls to mpfr_extract
+
+------------------------------------------------------------------------
+r826 | zimmerma | 2000-12-01 17:29:33 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added new line
+
+------------------------------------------------------------------------
+r825 | zimmerma | 2000-12-01 17:29:05 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/init.c
+
+added error message when _mp_allocate_func returns 0
+
+------------------------------------------------------------------------
+r824 | zimmerma | 2000-12-01 17:28:22 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added header for mpfr_extract
+
+------------------------------------------------------------------------
+r823 | zimmerma | 2000-12-01 17:27:54 +0000 (Fri, 01 Dec 2000) | 4 lines
+Changed paths:
+ M /trunk/extract.c
+
+- documented what function does
+- cleaned code
+- added header about license...
+
+------------------------------------------------------------------------
+r822 | zimmerma | 2000-12-01 16:25:53 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/get_str.c
+ M /trunk/log2.c
+ M /trunk/mpfr.h
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/sin_cos.c
+
+replaced log(2.0) by LOG2 [first step in getting rid of math.h]
+
+------------------------------------------------------------------------
+r821 | zimmerma | 2000-12-01 15:57:33 +0000 (Fri, 01 Dec 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added extern "C" { ... } for inclusion in C++
+removed old KARATSUBA threshold for gmp 2.0.2
+
+------------------------------------------------------------------------
+r820 | zimmerma | 2000-12-01 14:58:32 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+ M /trunk/cmp.c
+ M /trunk/tests/tcmp.c
+
+fixed bug in mpfr_cmp3 (when b=0, s not taken into account)
+
+------------------------------------------------------------------------
+r819 | zimmerma | 2000-12-01 14:30:41 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/tests/Makefile.am
+
+added swap/tswap
+
+------------------------------------------------------------------------
+r818 | zimmerma | 2000-12-01 14:29:36 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tswap.c
+
+test file for new function mpfr_swap
+
+------------------------------------------------------------------------
+r817 | zimmerma | 2000-12-01 14:29:28 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ A /trunk/swap.c
+
+added new function mpfr_swap
+
+------------------------------------------------------------------------
+r816 | zimmerma | 2000-12-01 13:59:45 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add_ui.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpfi.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/reldiff.c
+ M /trunk/rnd_mode.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_rnd.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sqrtrem.c
+ M /trunk/sub.c
+ M /trunk/sub_ui.c
+ M /trunk/tests/Makefile.in
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/tdump.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpi.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/tround.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/ttrunc.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+ M /trunk/tests/tzeta.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/zeta.c
+
+changed copyright to Free Software Foundation
+
+------------------------------------------------------------------------
+r815 | zimmerma | 2000-12-01 13:57:39 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added possible bug in mpfr_get_str
+
+------------------------------------------------------------------------
+r814 | zimmerma | 2000-12-01 13:55:36 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ D /trunk/init_set.h
+
+now all is in mpfr.h
+
+------------------------------------------------------------------------
+r813 | zimmerma | 2000-12-01 13:00:22 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+return value was wrong for input non-zero (should return 1 = inexact)
+
+------------------------------------------------------------------------
+r812 | zimmerma | 2000-12-01 12:59:15 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed/improved doc. of mpfr_sin_cos and mpfr_urandomb
+
+------------------------------------------------------------------------
+r811 | zimmerma | 2000-12-01 12:58:38 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+removed macro for mpfr_init_set_str_raw
+
+------------------------------------------------------------------------
+r810 | zimmerma | 2000-12-01 12:21:43 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_sin_cos
+
+------------------------------------------------------------------------
+r809 | zimmerma | 2000-12-01 11:06:39 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+sign of result was not correctly (re)set
+
+------------------------------------------------------------------------
+r808 | zimmerma | 2000-12-01 11:05:29 +0000 (Fri, 01 Dec 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added test to check sign of square root
+
+------------------------------------------------------------------------
+r807 | zimmerma | 2000-11-29 16:36:15 +0000 (Wed, 29 Nov 2000) | 3 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+gained a factor of 2 in most cases (replaced initial constant factor=2
+for additional bits for cos(x) by log(n))
+
+------------------------------------------------------------------------
+r806 | zimmerma | 2000-11-29 16:34:14 +0000 (Wed, 29 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tsin_cos
+
+------------------------------------------------------------------------
+r805 | zimmerma | 2000-11-29 16:29:28 +0000 (Wed, 29 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed potential problem in mpfr_sub1 (k=0 and kc<0)
+
+------------------------------------------------------------------------
+r804 | zimmerma | 2000-11-29 16:28:21 +0000 (Wed, 29 Nov 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tsin_cos.c
+
+test file for sin/cos
+
+------------------------------------------------------------------------
+r803 | zimmerma | 2000-11-28 10:42:05 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+forgot cast to int before comparison between imax (can be negative) and an
+
+------------------------------------------------------------------------
+r802 | zimmerma | 2000-11-28 10:41:12 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+returned value was one too small in case d=1
+
+------------------------------------------------------------------------
+r801 | zimmerma | 2000-11-28 10:40:33 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new test from N. Mueller
+
+------------------------------------------------------------------------
+r800 | zimmerma | 2000-11-28 10:40:09 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+added return for case of infinities
+
+------------------------------------------------------------------------
+r799 | zimmerma | 2000-11-28 10:27:07 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added macro MPFR_RESET_INF
+
+------------------------------------------------------------------------
+r798 | zimmerma | 2000-11-28 10:25:04 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+don't forget to reset infinity flag if set!
+
+------------------------------------------------------------------------
+r797 | zimmerma | 2000-11-28 08:28:28 +0000 (Tue, 28 Nov 2000) | 3 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed bug in mpfr_cmp2: wrong limb considered after cp[cn--] when
+ cp[cn] was not 111...111
+
+------------------------------------------------------------------------
+r796 | zimmerma | 2000-11-28 08:25:14 +0000 (Tue, 28 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug when imax>an
+
+------------------------------------------------------------------------
+r795 | zimmerma | 2000-11-27 17:39:00 +0000 (Mon, 27 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added macro MPFR_IS_ZERO
+
+------------------------------------------------------------------------
+r794 | hanrot | 2000-11-21 15:21:39 +0000 (Tue, 21 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+
+Infinis, premiere tentative (tests)
+
+------------------------------------------------------------------------
+r793 | hanrot | 2000-11-21 15:21:33 +0000 (Tue, 21 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/configure
+ M /trunk/div.c
+ M /trunk/div_ui.c
+ M /trunk/dump.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/extract.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/log.c
+ M /trunk/mpfr.h
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/out_str.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/reldiff.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_str_raw.c
+ M /trunk/sin_cos.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/zeta.c
+
+Infinis, premiere tentative.
+
+------------------------------------------------------------------------
+r792 | zimmerma | 2000-11-13 17:13:51 +0000 (Mon, 13 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added one remark from GH
+
+------------------------------------------------------------------------
+r791 | zimmerma | 2000-11-13 17:05:34 +0000 (Mon, 13 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+removed mpfr_cmp2
+
+------------------------------------------------------------------------
+r790 | hanrot | 2000-11-13 15:13:32 +0000 (Mon, 13 Nov 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/aclocal.m4
+
+Added support for Inf. Modified zeta.
+
+------------------------------------------------------------------------
+r789 | zimmerma | 2000-10-26 12:22:07 +0000 (Thu, 26 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+protection of macros done
+
+------------------------------------------------------------------------
+r788 | zimmerma | 2000-10-26 12:11:59 +0000 (Thu, 26 Oct 2000) | 2 lines
+Changed paths:
+ A /trunk/replace_all
+
+shell-script to replace xxx by yyy in all source files
+
+------------------------------------------------------------------------
+r787 | zimmerma | 2000-10-26 12:11:11 +0000 (Thu, 26 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/ttrunc.c
+
+protected macros: xxx -> MPFR_xxx
+
+------------------------------------------------------------------------
+r786 | zimmerma | 2000-10-26 11:59:59 +0000 (Thu, 26 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/add.c
+ M /trunk/add_ui.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/eq.c
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ M /trunk/exp3.c
+ M /trunk/extract.c
+ M /trunk/generic.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpfi.c
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mpz_set_fr.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/print_raw.c
+ M /trunk/random.c
+ M /trunk/random2.c
+ M /trunk/reldiff.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/set_q.c
+ M /trunk/set_si.c
+ M /trunk/set_str.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sin_cos.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt_ui.c
+ M /trunk/sub.c
+ M /trunk/sub_ui.c
+ M /trunk/trunc.c
+ M /trunk/ui_div.c
+ M /trunk/ui_sub.c
+ M /trunk/urandomb.c
+ M /trunk/zeta.c
+
+protected all macros: xxx -> MPFR_xxx
+
+------------------------------------------------------------------------
+r785 | zimmerma | 2000-10-24 11:59:35 +0000 (Tue, 24 Oct 2000) | 2 lines
+Changed paths:
+ A /trunk/mpfi.h
+
+fichier d'include pour mpfi.c
+
+------------------------------------------------------------------------
+r784 | zimmerma | 2000-10-24 11:47:10 +0000 (Tue, 24 Oct 2000) | 2 lines
+Changed paths:
+ A /trunk/mpfi.c
+
+interval arithmetic level (1st version)
+
+------------------------------------------------------------------------
+r783 | zimmerma | 2000-10-24 08:14:07 +0000 (Tue, 24 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added two suggestions from Ben Hinkle
+
+------------------------------------------------------------------------
+r782 | hanrot | 2000-10-19 12:54:17 +0000 (Thu, 19 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+
+Bof.
+
+------------------------------------------------------------------------
+r781 | hanrot | 2000-10-19 12:53:54 +0000 (Thu, 19 Oct 2000) | 2 lines
+Changed paths:
+ D /trunk/.pure
+ D /trunk/mmpfr
+ M /trunk/mpfr.h
+
+Suppression de vieilleries.
+
+------------------------------------------------------------------------
+r780 | hanrot | 2000-10-19 09:11:50 +0000 (Thu, 19 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+1 << 31 -> ((unsigned int)1) << 31.
+
+------------------------------------------------------------------------
+r779 | hanrot | 2000-10-19 08:56:24 +0000 (Thu, 19 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/dump.c
+ M /trunk/log.c
+ M /trunk/round.c
+ M /trunk/set_d.c
+ M /trunk/set_str.c
+
+Correction de prototypes faux dans le cas ou on n'est pas -D__STDC__.
+
+------------------------------------------------------------------------
+r778 | zimmerma | 2000-10-02 08:44:58 +0000 (Mon, 02 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+ M /trunk/extract.c
+ M /trunk/generic.c
+ M /trunk/print_raw.c
+ M /trunk/set_str_raw.c
+
+malloc -> *_mp_allocate_func or TMP_ALLOC
+
+------------------------------------------------------------------------
+r777 | zimmerma | 2000-10-02 08:15:41 +0000 (Mon, 02 Oct 2000) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+ M /trunk/init.c
+ M /trunk/mpfr.h
+ M /trunk/round.c
+ M /trunk/set_d.c
+ M /trunk/set_prc_raw.c
+ M /trunk/set_prec.c
+ M /trunk/urandomb.c
+
+mpfr_t -> mpfr_ptr or mpfr_srcptr
+
+------------------------------------------------------------------------
+r776 | zimmerma | 2000-09-29 16:07:46 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ D /trunk/tests/texp2.c
+
+removed -> all is in texp.c
+
+------------------------------------------------------------------------
+r775 | zimmerma | 2000-09-29 16:06:55 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added comparison between exp2 and exp3
+
+------------------------------------------------------------------------
+r774 | zimmerma | 2000-09-29 16:04:47 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+
+take also the target precision into account for the guard bits
+
+------------------------------------------------------------------------
+r773 | zimmerma | 2000-09-29 16:04:19 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/exp2.c
+
+new faster version with O(n^(1/3)*M(n)) algorithm
+
+------------------------------------------------------------------------
+r772 | zimmerma | 2000-09-29 16:03:51 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+adjusted exp2-exp3 threshold for new faster version of mpfr_exp2
+
+------------------------------------------------------------------------
+r771 | zimmerma | 2000-09-29 14:23:59 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added mpz_set_fr.c
+
+------------------------------------------------------------------------
+r770 | zimmerma | 2000-09-29 13:03:23 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+added tdump
+
+------------------------------------------------------------------------
+r769 | zimmerma | 2000-09-29 13:02:47 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed pb for op=0 (added \0 at the end of string)
+
+------------------------------------------------------------------------
+r768 | zimmerma | 2000-09-29 13:02:01 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/dump.c
+
+use strlen to determine memory to free
+
+------------------------------------------------------------------------
+r767 | zimmerma | 2000-09-29 13:01:17 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tdump.c
+
+test file for mpfr_dump
+
+------------------------------------------------------------------------
+r766 | zimmerma | 2000-09-29 12:30:55 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+removed karasqrt.c, added sqrtrem.c
+
+------------------------------------------------------------------------
+r765 | zimmerma | 2000-09-29 12:30:15 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+kara_sqrtrem -> mpn_sqrtrem_new
+
+------------------------------------------------------------------------
+r764 | zimmerma | 2000-09-29 12:29:56 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ D /trunk/karasqrt.c
+
+now replaced by new code in sqrtrem.c
+
+------------------------------------------------------------------------
+r763 | zimmerma | 2000-09-29 12:29:24 +0000 (Fri, 29 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+now uses new code mpn_sqrtrem_new
+
+------------------------------------------------------------------------
+r762 | zimmerma | 2000-09-29 12:29:02 +0000 (Fri, 29 Sep 2000) | 3 lines
+Changed paths:
+ A /trunk/sqrtrem.c
+
+new version of fast MPN square root
+(should be integrated in a future release of GNU MP)
+
+------------------------------------------------------------------------
+r761 | zimmerma | 2000-09-28 14:06:55 +0000 (Thu, 28 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added another example from N. Mueller
+
+------------------------------------------------------------------------
+r760 | zimmerma | 2000-09-28 14:03:44 +0000 (Thu, 28 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed another ABW bug
+
+------------------------------------------------------------------------
+r759 | zimmerma | 2000-09-28 09:37:20 +0000 (Thu, 28 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed two Array Bound Writes
+
+------------------------------------------------------------------------
+r758 | zimmerma | 2000-09-28 09:36:56 +0000 (Thu, 28 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed one Array Bound Read (to_nearest, bp=cp and k>=cn)
+
+------------------------------------------------------------------------
+r757 | zimmerma | 2000-09-28 09:35:54 +0000 (Thu, 28 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added 2 new tests from Norbert Mueller
+
+------------------------------------------------------------------------
+r756 | zimmerma | 2000-09-27 13:10:43 +0000 (Wed, 27 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new test
+
+------------------------------------------------------------------------
+r755 | zimmerma | 2000-09-27 13:06:39 +0000 (Wed, 27 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed Array Bound Write
+
+------------------------------------------------------------------------
+r754 | zimmerma | 2000-09-20 11:31:42 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added some words about the inclusion of mpfr.h
+
+------------------------------------------------------------------------
+r753 | zimmerma | 2000-09-20 11:31:11 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+we need to better protect macros
+
+------------------------------------------------------------------------
+r752 | zimmerma | 2000-09-20 10:38:15 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+removed MPFR_OBJECTS (does not work)
+
+------------------------------------------------------------------------
+r751 | zimmerma | 2000-09-20 10:33:16 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added $(MPFR_OBJECTS) in libmpfr_a_LIBADD
+
+------------------------------------------------------------------------
+r750 | zimmerma | 2000-09-20 10:28:29 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+added $(MPFR_OBJECTS) in libmpfr_a_DEPENDENCIES
+
+------------------------------------------------------------------------
+r749 | zimmerma | 2000-09-20 10:08:07 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added contributions from Emmanuel Jeandel and Thom Mulders
+
+------------------------------------------------------------------------
+r748 | zimmerma | 2000-09-20 10:03:32 +0000 (Wed, 20 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+added Thom Mulders
+
+------------------------------------------------------------------------
+r747 | zimmerma | 2000-09-20 10:00:31 +0000 (Wed, 20 Sep 2000) | 3 lines
+Changed paths:
+ A /trunk/shortmul.c
+
+routines for naive/fast short multiplication,
+contributed by Thom Mulders (ETH Zu"rich)
+
+------------------------------------------------------------------------
+r746 | zimmerma | 2000-09-19 14:06:06 +0000 (Tue, 19 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+added new test for overlapping x, y
+
+------------------------------------------------------------------------
+r745 | zimmerma | 2000-09-19 14:05:37 +0000 (Tue, 19 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+fixed problem when x=y
+
+------------------------------------------------------------------------
+r744 | zimmerma | 2000-09-14 12:35:42 +0000 (Thu, 14 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added pb from Norbert Muller
+
+------------------------------------------------------------------------
+r743 | zimmerma | 2000-09-14 12:35:16 +0000 (Thu, 14 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed SEGV (mpn_lshift doesn't seem to like src_size=0)
+
+------------------------------------------------------------------------
+r742 | zimmerma | 2000-09-14 12:32:38 +0000 (Thu, 14 Sep 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+now prints "failed" when test file doesn't return 0
+
+------------------------------------------------------------------------
+r741 | zimmerma | 2000-08-29 18:14:19 +0000 (Tue, 29 Aug 2000) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+replaced mpn_divrem by mpn_tdiv_qr for gmp 3 or later
+and avoid copy of one operand when possible
+
+------------------------------------------------------------------------
+r740 | zimmerma | 2000-08-29 12:38:57 +0000 (Tue, 29 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+updated (make check, make install)
+
+------------------------------------------------------------------------
+r739 | zimmerma | 2000-08-29 12:07:24 +0000 (Tue, 29 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/README
+
+described each file
+
+------------------------------------------------------------------------
+r738 | zimmerma | 2000-08-29 11:53:09 +0000 (Tue, 29 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/NEWS
+
+News for version 1.0
+
+------------------------------------------------------------------------
+r737 | zimmerma | 2000-08-25 17:04:05 +0000 (Fri, 25 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed bug for 0.9999999999...
+
+------------------------------------------------------------------------
+r736 | zimmerma | 2000-08-25 16:58:23 +0000 (Fri, 25 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+added test for 0.99999999999999999
+
+------------------------------------------------------------------------
+r735 | zimmerma | 2000-08-24 16:46:56 +0000 (Thu, 24 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added mpfr_swap
+
+------------------------------------------------------------------------
+r734 | zimmerma | 2000-08-24 09:13:21 +0000 (Thu, 24 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+
+now store last computed value together with last rounding mode
+
+------------------------------------------------------------------------
+r733 | zimmerma | 2000-08-23 16:29:19 +0000 (Wed, 23 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+target ps -> mpfr.ps
+
+------------------------------------------------------------------------
+r732 | zimmerma | 2000-08-23 09:56:15 +0000 (Wed, 23 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+added $(srcdir) to trunc.c for sub-directory compilation
+
+------------------------------------------------------------------------
+r731 | zimmerma | 2000-08-16 15:27:56 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/sin_cos.c
+
+removed some memory leaks
+
+------------------------------------------------------------------------
+r730 | zimmerma | 2000-08-16 14:50:40 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/generic.c
+
+solved memory leaks with T[i] and qtoj[i]
+
+------------------------------------------------------------------------
+r729 | zimmerma | 2000-08-16 14:47:22 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated (done autoconf, faster mpfr_exp, sin/cos)
+
+------------------------------------------------------------------------
+r728 | zimmerma | 2000-08-16 14:37:43 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+updated for version 1.0
+
+------------------------------------------------------------------------
+r727 | zimmerma | 2000-08-16 14:21:30 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+COPYING.LIB -> COPYING
+
+------------------------------------------------------------------------
+r726 | zimmerma | 2000-08-16 14:20:59 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ A /trunk/COPYING
+
+renamed back (wanted for "make dist")
+
+------------------------------------------------------------------------
+r725 | zimmerma | 2000-08-16 14:20:42 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ D /trunk/COPYING.LIB
+
+renamed back to COPYING (wanted for "make dist")
+
+------------------------------------------------------------------------
+r724 | zimmerma | 2000-08-16 14:18:57 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ A /trunk/COPYING.LIB
+
+GNU Library General Public License
+
+------------------------------------------------------------------------
+r723 | zimmerma | 2000-08-16 14:18:22 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ D /trunk/COPYING
+
+renamed to COPYING.LIB, according to mpfr.texi
+
+------------------------------------------------------------------------
+r722 | zimmerma | 2000-08-16 14:12:40 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+
+result was free'd twice when good=1
+
+------------------------------------------------------------------------
+r721 | zimmerma | 2000-08-16 14:10:10 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/AUTHORS
+
+put information about authors
+
+------------------------------------------------------------------------
+r720 | zimmerma | 2000-08-16 13:50:37 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/configure
+
+PACKAGE and VERSION are not defined any more
+
+------------------------------------------------------------------------
+r719 | zimmerma | 2000-08-16 13:48:39 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+gmp-mparam.h is required too
+
+------------------------------------------------------------------------
+r718 | zimmerma | 2000-08-16 13:33:49 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+IRIX make does not recognize $< (MISCFLAGS)
+
+------------------------------------------------------------------------
+r717 | zimmerma | 2000-08-16 13:00:20 +0000 (Wed, 16 Aug 2000) | 4 lines
+Changed paths:
+ M /trunk/configure.in
+
+do not define PACKAGE and VERSION in AM_INIT_AUTOMAKE,
+this avoids conflicts with GMP 3.1 config.h
+[thanks to Kevin Ryde]
+
+------------------------------------------------------------------------
+r716 | zimmerma | 2000-08-16 12:59:04 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+updated for GMP 3.1
+
+------------------------------------------------------------------------
+r715 | zimmerma | 2000-08-16 12:56:06 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+MP_BASE_AS_DOUBLE already defined in gmp-impl.h
+
+------------------------------------------------------------------------
+r714 | zimmerma | 2000-08-16 11:26:15 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+
+nb_terms[0] was not initialized
+
+------------------------------------------------------------------------
+r713 | zimmerma | 2000-08-16 10:55:11 +0000 (Wed, 16 Aug 2000) | 3 lines
+Changed paths:
+ M /trunk/log2.c
+
+fixed some FNH (free not in heap) problems for binary splitting method
+(prec >= 30000)
+
+------------------------------------------------------------------------
+r712 | zimmerma | 2000-08-16 09:53:54 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+gmp.info -> mpfr.info
+
+------------------------------------------------------------------------
+r711 | zimmerma | 2000-08-16 09:46:59 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+set_dfl_rnd.* -> set_rnd.* (to avoid conflict with set_dfl_prec.* on DOS 8.3)
+
+------------------------------------------------------------------------
+r710 | zimmerma | 2000-08-16 09:42:43 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ D /trunk/tests/Makefile
+
+now automatically generated by configure
+
+------------------------------------------------------------------------
+r709 | zimmerma | 2000-08-16 09:40:47 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+added if (__GNU_MP_VERSION < 3) for mpn_divrem_1-bug patch
+
+------------------------------------------------------------------------
+r708 | zimmerma | 2000-08-16 09:26:18 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+
+set_dfl_rnd -> set_rnd
+
+------------------------------------------------------------------------
+r707 | zimmerma | 2000-08-16 09:24:15 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ A /trunk/set_rnd.c
+
+new name of set_dfl_rnd.c (avoids clash with set_dfl_prec.c on DOS 8.3)
+
+------------------------------------------------------------------------
+r706 | zimmerma | 2000-08-16 09:23:43 +0000 (Wed, 16 Aug 2000) | 3 lines
+Changed paths:
+ D /trunk/set_dfl_rnd.c
+
+renamed to set_rnd.c (otherwise truncates like set_dfl_prec.c on
+a DOS 8.3 filesystem)
+
+------------------------------------------------------------------------
+r705 | zimmerma | 2000-08-16 09:20:29 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+setfilename: gmp.info -> mpfr.info
+
+------------------------------------------------------------------------
+r704 | zimmerma | 2000-08-16 09:19:17 +0000 (Wed, 16 Aug 2000) | 4 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+replaced path for libmpfr.a by $(top_builddir)
+test files are now in check_PROGRAMS instead of bin_PROGRAMS (they don't need
+ to be installed)
+
+------------------------------------------------------------------------
+r703 | zimmerma | 2000-08-16 09:14:44 +0000 (Wed, 16 Aug 2000) | 3 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tset_si.c
+
+replaced back BITS_PER_MP_LIMB by mp_bits_per_limb
+(not important in test files)
+
+------------------------------------------------------------------------
+r702 | zimmerma | 2000-08-16 09:09:03 +0000 (Wed, 16 Aug 2000) | 10 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+replaced macros for mpfr_init_set_si by "do { ... } while (0)" so
+they'll work in an if/else like
+
+ if (foo)
+ mpfr_init_set_si (f, -123, GMP_RNDN);
+ else
+ bar ();
+
+[thanks to Kevin Ryde]
+
+------------------------------------------------------------------------
+r701 | zimmerma | 2000-08-16 09:05:15 +0000 (Wed, 16 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div_ui.c
+ M /trunk/exp2.c
+ M /trunk/mpf2mpfr.h
+ M /trunk/mul.c
+ M /trunk/print_raw.c
+ M /trunk/set_si.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+ M /trunk/tests/Makefile
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tset_si.c
+
+replaced mp_bits_per_limb by BITS_PER_MP_LIMB (constant)
+
+------------------------------------------------------------------------
+r700 | zimmerma | 2000-08-14 14:25:50 +0000 (Mon, 14 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+added mpf2mpfr.h
+
+------------------------------------------------------------------------
+r699 | zimmerma | 2000-08-14 13:11:09 +0000 (Mon, 14 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+define check2 only with -DTEST
+
+------------------------------------------------------------------------
+r698 | zimmerma | 2000-08-14 12:39:38 +0000 (Mon, 14 Aug 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+updated for new configure from Emmanuel Jeandel, to GMP 3.xxx
+and removed errors with texinfo
+
+------------------------------------------------------------------------
+r697 | zimmerma | 2000-08-14 12:12:49 +0000 (Mon, 14 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+solaris --> __sparc__
+
+------------------------------------------------------------------------
+r696 | zimmerma | 2000-08-14 11:53:15 +0000 (Mon, 14 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+ A /trunk/tests/Makefile
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+ M /trunk/tests/tsub_ui.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+ifdef IRIX64 -> ifdef __mips
+
+------------------------------------------------------------------------
+r695 | zimmerma | 2000-08-14 11:31:36 +0000 (Mon, 14 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+
+IRIX/make does not understand $< : expanded to trunc.c
+
+------------------------------------------------------------------------
+r694 | zimmerma | 2000-08-14 11:20:29 +0000 (Mon, 14 Aug 2000) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+use standard macro for Alpha
+
+------------------------------------------------------------------------
+r693 | jeandel | 2000-07-13 12:40:25 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+autoconf options described
+
+------------------------------------------------------------------------
+r692 | jeandel | 2000-07-13 12:30:53 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+
+timestamp modified
+
+------------------------------------------------------------------------
+r691 | jeandel | 2000-07-13 12:28:31 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/configure
+
+timestamp changed
+
+------------------------------------------------------------------------
+r690 | jeandel | 2000-07-13 12:27:04 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.am
+
+nothing to say
+
+------------------------------------------------------------------------
+r689 | jeandel | 2000-07-13 12:24:13 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/acinclude.m4
+ M /trunk/aclocal.m4
+
+Timestamp
+
+------------------------------------------------------------------------
+r688 | jeandel | 2000-07-13 12:21:50 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.in
+
+Small bug fixed
+
+------------------------------------------------------------------------
+r687 | jeandel | 2000-07-13 12:15:36 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/configure
+ M /trunk/configure.in
+
+Timestamp modified ?
+
+------------------------------------------------------------------------
+r686 | jeandel | 2000-07-13 12:13:18 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.in
+
+Timestamp modified
+
+------------------------------------------------------------------------
+r685 | jeandel | 2000-07-13 11:54:18 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/configure
+ M /trunk/configure.in
+
+Nothing
+
+------------------------------------------------------------------------
+r684 | jeandel | 2000-07-13 11:43:45 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/Makefile.in
+
+New release
+
+------------------------------------------------------------------------
+r683 | jeandel | 2000-07-13 09:52:17 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/Makefile.in
+
+Bugs fixed
+
+------------------------------------------------------------------------
+r682 | jeandel | 2000-07-13 09:39:27 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+
+Bug fixed
+
+------------------------------------------------------------------------
+r681 | jeandel | 2000-07-13 09:21:09 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+sin_cos added
+
+------------------------------------------------------------------------
+r680 | jeandel | 2000-07-13 08:54:06 +0000 (Thu, 13 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+ M /trunk/pi.c
+
+New algorithm, new wrapper
+
+------------------------------------------------------------------------
+r679 | zimmerma | 2000-07-12 12:50:50 +0000 (Wed, 12 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tround.c
+
+replaced 0 by GMP_RNDN
+
+------------------------------------------------------------------------
+r678 | zimmerma | 2000-07-12 12:47:37 +0000 (Wed, 12 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+fixed (hopefully) bug for 1/1 in precision 32, 64, ...
+
+------------------------------------------------------------------------
+r677 | zimmerma | 2000-07-12 12:46:05 +0000 (Wed, 12 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added test for 1/1 in precision 32 or 64
+
+------------------------------------------------------------------------
+r676 | zimmerma | 2000-07-11 13:31:50 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+use mpfr_print_rnd_mode now
+
+------------------------------------------------------------------------
+r675 | jeandel | 2000-07-11 11:44:56 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+ M /trunk/Makefile.in
+ M /trunk/configure
+ M /trunk/configure.in
+
+Bug Fixed, and installation guide made
+
+------------------------------------------------------------------------
+r674 | jeandel | 2000-07-11 11:17:19 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/configure
+ M /trunk/configure.in
+
+Fixed bug
+
+------------------------------------------------------------------------
+r673 | jeandel | 2000-07-11 11:06:59 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.am
+ M /trunk/Makefile.in
+
+Bug Fixed with Solaris make
+
+------------------------------------------------------------------------
+r672 | jeandel | 2000-07-11 10:55:36 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/extract.c
+
+strings.h added
+
+------------------------------------------------------------------------
+r671 | jeandel | 2000-07-11 10:54:00 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Makefile.in
+ M /trunk/tests/Makefile.in
+
+Deps included
+
+------------------------------------------------------------------------
+r670 | jeandel | 2000-07-11 09:55:31 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+ M /trunk/tests/Makefile.in
+
+Bug Fixed
+
+------------------------------------------------------------------------
+r669 | jeandel | 2000-07-11 09:52:32 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.in
+
+Bug fixed
+
+------------------------------------------------------------------------
+r668 | jeandel | 2000-07-11 09:52:17 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile.am
+
+Bug Fixed
+
+------------------------------------------------------------------------
+r667 | jeandel | 2000-07-11 09:47:24 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ A /trunk/Makefile.am
+ A /trunk/Makefile.in
+ A /trunk/acinclude.m4
+ A /trunk/aclocal.m4
+ A /trunk/configure
+ A /trunk/configure.in
+ A /trunk/install-sh
+ A /trunk/missing
+ A /trunk/mkinstalldirs
+ A /trunk/tests/Makefile.am
+ A /trunk/tests/Makefile.in
+ A /trunk/texinfo.tex
+
+First Release
+
+------------------------------------------------------------------------
+r666 | jeandel | 2000-07-11 09:42:34 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ D /trunk/COPYING.LIB
+ A /trunk/NEWS
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r665 | jeandel | 2000-07-11 09:41:38 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ A /trunk/COPYING
+ A /trunk/ChangeLog
+ A /trunk/README
+
+First Release
+
+------------------------------------------------------------------------
+r664 | jeandel | 2000-07-11 09:40:32 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ A /trunk/AUTHORS
+
+First release
+
+------------------------------------------------------------------------
+r663 | jeandel | 2000-07-11 09:37:43 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Added sin_cos
+
+------------------------------------------------------------------------
+r662 | jeandel | 2000-07-11 09:33:53 +0000 (Tue, 11 Jul 2000) | 2 lines
+Changed paths:
+ A /trunk/generic.c
+ A /trunk/sin_cos.c
+
+First Release
+
+------------------------------------------------------------------------
+r661 | jeandel | 2000-06-29 14:35:36 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/extract.c
+
+Memory problems fixed
+
+------------------------------------------------------------------------
+r660 | jeandel | 2000-06-29 14:35:19 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/exp3.c
+
+Memory Leaks Fixed
+
+------------------------------------------------------------------------
+r659 | zimmerma | 2000-06-29 13:22:57 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_sub_ui
+
+------------------------------------------------------------------------
+r658 | zimmerma | 2000-06-29 13:22:34 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/init.c
+
+now use mpfr macros
+
+------------------------------------------------------------------------
+r657 | zimmerma | 2000-06-29 13:18:58 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+be careful not to call mpn_sub_n/mpn_sub_1 with a size 0
+
+------------------------------------------------------------------------
+r656 | zimmerma | 2000-06-29 13:16:45 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/clear.c
+
+fixed to free an entire number of limbs
+
+------------------------------------------------------------------------
+r655 | zimmerma | 2000-06-29 13:14:38 +0000 (Thu, 29 Jun 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tsub_ui.c
+
+test file for sub_ui
+
+------------------------------------------------------------------------
+r654 | jeandel | 2000-06-28 08:35:07 +0000 (Wed, 28 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+mpfr_exp3 and mpfr_extract added to Makefile
+
+------------------------------------------------------------------------
+r653 | jeandel | 2000-06-28 08:33:06 +0000 (Wed, 28 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/exp2.c
+ A /trunk/exp3.c
+ A /trunk/extract.c
+
+First Release
+
+------------------------------------------------------------------------
+r652 | zimmerma | 2000-06-21 15:56:25 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt_ui.c
+
+distinguish between mpfr failure and difference with sqrt()
+
+------------------------------------------------------------------------
+r651 | zimmerma | 2000-06-21 15:55:35 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+ensures random numbers given to sqrt() are positive
+
+------------------------------------------------------------------------
+r650 | zimmerma | 2000-06-21 15:52:43 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+adapted for freebsd
+
+------------------------------------------------------------------------
+r649 | zimmerma | 2000-06-21 15:52:05 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+modified drand to avoid false NaNs (makes SEGV under FreeBSD)
+
+------------------------------------------------------------------------
+r648 | zimmerma | 2000-06-21 15:51:17 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added entry for FreeBSD, removed -pedantic option
+
+------------------------------------------------------------------------
+r647 | zimmerma | 2000-06-21 14:54:08 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+added one test
+
+------------------------------------------------------------------------
+r646 | zimmerma | 2000-06-21 14:47:02 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new tests
+
+------------------------------------------------------------------------
+r645 | zimmerma | 2000-06-21 14:40:38 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_set_prec_raw
+
+------------------------------------------------------------------------
+r644 | zimmerma | 2000-06-21 14:40:17 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed work done
+
+------------------------------------------------------------------------
+r643 | zimmerma | 2000-06-21 13:54:05 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed several bugs
+
+------------------------------------------------------------------------
+r642 | zimmerma | 2000-06-21 13:52:24 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+merged different roundings in case diff_exp<PREC(a), dif<=PREC(c)
+
+------------------------------------------------------------------------
+r641 | zimmerma | 2000-06-21 09:58:17 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+removed printf for argc=1
+
+------------------------------------------------------------------------
+r640 | zimmerma | 2000-06-21 09:54:31 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tui_sub.c
+
+added one test
+
+------------------------------------------------------------------------
+r639 | zimmerma | 2000-06-21 09:52:32 +0000 (Wed, 21 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+make ceil.o,floor.o,trunc.o depend on trunc.c
+
+------------------------------------------------------------------------
+r638 | hanrot | 2000-06-20 08:50:47 +0000 (Tue, 20 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/teq.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/trandom.c
+ M /trunk/tests/ttrunc.c
+
+Various patches for leaks, UMR and (one) BUS.
+
+------------------------------------------------------------------------
+r637 | hanrot | 2000-06-19 16:20:54 +0000 (Mon, 19 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tset_str.c
+
+This patch suppresses a few mem leaks.
+
+------------------------------------------------------------------------
+r636 | hanrot | 2000-06-19 15:38:44 +0000 (Mon, 19 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tsqrt.c
+
+Suppressed memory leaks.
+
+------------------------------------------------------------------------
+r635 | hanrot | 2000-06-19 10:15:32 +0000 (Mon, 19 Jun 2000) | 3 lines
+Changed paths:
+ M /trunk/div.c
+ M /trunk/mul_ui.c
+ M /trunk/sqrt.c
+
+Patch for 1 << (BITS_PER_MP_LIMB - x) when x is 0 (produces inexact results
+on PPCs).
+
+------------------------------------------------------------------------
+r634 | zimmerma | 2000-06-16 15:23:35 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+arguments of gmp_randinit were in wrong order
+
+------------------------------------------------------------------------
+r633 | hanrot | 2000-06-16 15:13:13 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/eq.c
+
+Patch in the case when n_bits is a multiple of 32.
+
+------------------------------------------------------------------------
+r632 | zimmerma | 2000-06-16 15:05:34 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+
+added patch to get denorms on IRIX64
+
+------------------------------------------------------------------------
+r631 | zimmerma | 2000-06-16 15:02:04 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+put instruction to get denormalized numbers on IRIX64 out of #ifdef TEST
+
+------------------------------------------------------------------------
+r630 | zimmerma | 2000-06-16 14:37:23 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+fixed bug occurring on LinuxPPC (1 << 32)
+
+------------------------------------------------------------------------
+r629 | zimmerma | 2000-06-16 14:35:00 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added one test (bug on LinuxPPC)
+
+------------------------------------------------------------------------
+r628 | zimmerma | 2000-06-16 13:47:32 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added one test
+
+------------------------------------------------------------------------
+r627 | zimmerma | 2000-06-16 12:54:05 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+fixed several problems
+
+------------------------------------------------------------------------
+r626 | zimmerma | 2000-06-16 12:53:22 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/ttrunc.c
+
+added more tests
+
+------------------------------------------------------------------------
+r625 | hanrot | 2000-06-16 10:02:43 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Patches for the case where the precision is a multiple of the word size.
+
+------------------------------------------------------------------------
+r624 | zimmerma | 2000-06-16 08:28:40 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed another bug
+
+------------------------------------------------------------------------
+r623 | zimmerma | 2000-06-16 08:26:45 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tui_sub.c
+
+added one test
+
+------------------------------------------------------------------------
+r622 | zimmerma | 2000-06-16 08:22:28 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpz_set_fr
+
+------------------------------------------------------------------------
+r621 | zimmerma | 2000-06-16 08:21:53 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+improved choice of initial precision
+
+------------------------------------------------------------------------
+r620 | zimmerma | 2000-06-16 08:21:03 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+ A /trunk/mpz_set_fr.c
+
+added mpz_set_fr (conversion from mpfr to mpz)
+
+------------------------------------------------------------------------
+r619 | zimmerma | 2000-06-16 08:16:49 +0000 (Fri, 16 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tround.c
+
+added return type 'int' for main
+
+------------------------------------------------------------------------
+r618 | hanrot | 2000-06-15 17:42:09 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Added TESTFLAGS to the main Makefile. Added ttrunc.
+
+------------------------------------------------------------------------
+r617 | hanrot | 2000-06-15 17:26:03 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+Minor patch (put to 0 the nonsignificant bits).
+
+------------------------------------------------------------------------
+r616 | hanrot | 2000-06-15 17:16:02 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Added declaration of trunc, ceil, floor.
+
+------------------------------------------------------------------------
+r615 | hanrot | 2000-06-15 17:15:40 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/ttrunc.c
+
+Tests for trunc, ceil, floor.
+
+------------------------------------------------------------------------
+r614 | hanrot | 2000-06-15 16:43:40 +0000 (Thu, 15 Jun 2000) | 3 lines
+Changed paths:
+ M /trunk/Configure
+
+Added TESTFLAGS variable to the compile instruction, for use as
+make "TESTFLAGS=-DTEST"
+
+------------------------------------------------------------------------
+r613 | zimmerma | 2000-06-15 16:00:28 +0000 (Thu, 15 Jun 2000) | 3 lines
+Changed paths:
+ M /trunk/tests/teq.c
+
+1 -> (mp_limb_t) 1 [pb on 64-bit machines]
+reduced number of tests to 1000
+
+------------------------------------------------------------------------
+r612 | hanrot | 2000-06-15 10:32:04 +0000 (Thu, 15 Jun 2000) | 3 lines
+Changed paths:
+ M /trunk/tests/trandom.c
+
+Display of statistics is only toggled if a number of tests to be performed
+is given. Shameful hack, but is getopt really portable ?
+
+------------------------------------------------------------------------
+r611 | hanrot | 2000-06-15 10:25:51 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Added trandom, teq
+
+------------------------------------------------------------------------
+r610 | hanrot | 2000-06-15 10:25:20 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Added random2, urandomb
+
+------------------------------------------------------------------------
+r609 | hanrot | 2000-06-15 10:15:58 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+Added div_2exp to the (very rough) test.
+
+------------------------------------------------------------------------
+r608 | hanrot | 2000-06-15 10:13:37 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/trandom.c
+
+Very basic statistical tests for random, random2, urandomb.
+
+------------------------------------------------------------------------
+r607 | hanrot | 2000-06-15 10:13:19 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Patch for random (libc's random() is on 31 bits only)
+
+------------------------------------------------------------------------
+r606 | hanrot | 2000-06-15 08:12:10 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/teq.c
+
+Test for mpfr_eq.
+
+------------------------------------------------------------------------
+r605 | hanrot | 2000-06-15 08:11:54 +0000 (Thu, 15 Jun 2000) | 2 lines
+Changed paths:
+ M /trunk/eq.c
+
+Patch a few incoherences of eq.c wrt the manual + adapt to mpfr usual semantics
+
+------------------------------------------------------------------------
+r604 | zimmerma | 2000-06-07 09:50:41 +0000 (Wed, 07 Jun 2000) | 2 lines
+Changed paths:
+ A /trunk/cputime.h
+
+header file providing cputime() function
+
+------------------------------------------------------------------------
+r603 | zimmerma | 2000-06-07 09:45:23 +0000 (Wed, 07 Jun 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/texp2.c
+
+test file comparing mpfr_exp and mpfr_exp2
+
+------------------------------------------------------------------------
+r602 | zimmerma | 2000-06-07 09:44:40 +0000 (Wed, 07 Jun 2000) | 4 lines
+Changed paths:
+ A /trunk/exp2.c
+
+O(n^(1/3)*log(n)) algorithm using Brent's method
+and Brent-Kung's O(sqrt(t)) algorithm to evaluate
+a power series of order t [exact rounding not yet finished]
+
+------------------------------------------------------------------------
+r601 | zimmerma | 2000-05-29 15:37:53 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+fixed bug in mpfr_round (wrong sign)
+
+------------------------------------------------------------------------
+r600 | zimmerma | 2000-05-29 15:09:51 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+fixed bug in mpfr_round: did not check allocated space was large enough
+
+------------------------------------------------------------------------
+r599 | zimmerma | 2000-05-29 14:02:08 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+main -> int main
+
+------------------------------------------------------------------------
+r598 | zimmerma | 2000-05-29 13:54:39 +0000 (Mon, 29 May 2000) | 3 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+added #ifdef TEST: if not defined (default), then function
+mpfr_set_machine_rnd_mode is not defined
+
+------------------------------------------------------------------------
+r597 | zimmerma | 2000-05-29 13:53:43 +0000 (Mon, 29 May 2000) | 3 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+ M /trunk/tests/tadd_ui.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tset_q.c
+ M /trunk/tests/tui_div.c
+ M /trunk/tests/tui_sub.c
+
+added #ifdef TEST to disable comparison with machine arithmetic
+by default (i.e. calls to mpfr_set_machine_rnd_mode)
+
+------------------------------------------------------------------------
+r596 | zimmerma | 2000-05-29 13:46:24 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+removed longlong.h (not needed)
+
+------------------------------------------------------------------------
+r595 | zimmerma | 2000-05-29 13:45:51 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+now deals with NaN
+
+------------------------------------------------------------------------
+r594 | zimmerma | 2000-05-29 13:45:17 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+RND_MODE -> rnd_mode
+
+------------------------------------------------------------------------
+r593 | zimmerma | 2000-05-29 13:44:13 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+mpfr_init is now a function (no more a macro)
+
+------------------------------------------------------------------------
+r592 | zimmerma | 2000-05-29 13:43:39 +0000 (Mon, 29 May 2000) | 3 lines
+Changed paths:
+ M /trunk/init.c
+
+printf -> fprintf
+added mpfr_init as function
+
+------------------------------------------------------------------------
+r591 | zimmerma | 2000-05-29 13:42:10 +0000 (Mon, 29 May 2000) | 3 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+changed (x) -> x
+fixed several typos
+
+------------------------------------------------------------------------
+r590 | zimmerma | 2000-05-29 11:28:48 +0000 (Mon, 29 May 2000) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+removed printf
+
+------------------------------------------------------------------------
+r589 | zimmerma | 2000-05-26 16:38:44 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+added ifdef TEST
+
+------------------------------------------------------------------------
+r588 | zimmerma | 2000-05-26 16:28:09 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+removed debug line
+
+------------------------------------------------------------------------
+r587 | zimmerma | 2000-05-26 16:25:37 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+added one test
+
+------------------------------------------------------------------------
+r586 | zimmerma | 2000-05-26 16:25:13 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added 2 new tests
+
+------------------------------------------------------------------------
+r585 | zimmerma | 2000-05-26 16:24:25 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+little change
+
+------------------------------------------------------------------------
+r584 | zimmerma | 2000-05-26 16:20:49 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+more changes
+
+------------------------------------------------------------------------
+r583 | zimmerma | 2000-05-26 15:44:03 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tsqrt_ui.c
+
+added ifdef TEST
+
+------------------------------------------------------------------------
+r582 | zimmerma | 2000-05-26 15:43:31 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+does not use machine rounding mode any more
+
+------------------------------------------------------------------------
+r581 | zimmerma | 2000-05-26 15:24:40 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added 7 new tests
+
+------------------------------------------------------------------------
+r580 | zimmerma | 2000-05-26 15:24:16 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+fixed typo in printf format
+
+------------------------------------------------------------------------
+r579 | zimmerma | 2000-05-26 15:22:37 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/sub.c
+
+fixed several rounding problems
+
+------------------------------------------------------------------------
+r578 | zimmerma | 2000-05-26 12:52:45 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+rewritten case dif<=0 and PREC(b)>PREC(a) (merged all roundings)
+
+------------------------------------------------------------------------
+r577 | zimmerma | 2000-05-26 10:11:04 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+removed DEBUG, VERBOSE ifdef's
+
+------------------------------------------------------------------------
+r576 | zimmerma | 2000-05-26 10:07:43 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed (hopefully) the case dif<=0, PREC(b)>PREC(a), directed rounding
+
+------------------------------------------------------------------------
+r575 | zimmerma | 2000-05-26 08:59:28 +0000 (Fri, 26 May 2000) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+replaced (mp_limb_t)1 by macro ONE
+fixed bug for GMP_RNDN with overlap=1
+
+------------------------------------------------------------------------
+r574 | zimmerma | 2000-05-26 08:58:32 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+removed misplaced comment
+
+------------------------------------------------------------------------
+r573 | zimmerma | 2000-05-26 08:20:16 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added one test
+
+------------------------------------------------------------------------
+r572 | zimmerma | 2000-05-26 08:16:19 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+does not use rnd_mode.c by default
+
+------------------------------------------------------------------------
+r571 | zimmerma | 2000-05-26 07:41:46 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+removed unused label
+
+------------------------------------------------------------------------
+r570 | zimmerma | 2000-05-26 07:40:31 +0000 (Fri, 26 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed more tiny bugs
+
+------------------------------------------------------------------------
+r569 | zimmerma | 2000-05-25 17:00:04 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt_ui.c
+
+use mpfr_print_rnd_mode now
+
+------------------------------------------------------------------------
+r568 | zimmerma | 2000-05-25 16:59:43 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tui_sub.c
+
+added one test
+
+------------------------------------------------------------------------
+r567 | zimmerma | 2000-05-25 16:59:08 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tadd_ui.c
+
+added more tests
+
+------------------------------------------------------------------------
+r566 | zimmerma | 2000-05-25 16:55:19 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add_ui.c
+
+removed TMP_ALLOC stuff
+
+------------------------------------------------------------------------
+r565 | zimmerma | 2000-05-25 16:54:29 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed new bug when a <- b - c with tiny c
+
+------------------------------------------------------------------------
+r564 | zimmerma | 2000-05-25 16:30:10 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug in a <- b-c when c very small but does not overlap with a
+
+------------------------------------------------------------------------
+r563 | zimmerma | 2000-05-25 15:45:33 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/random2.c
+
+removed 'inline' (does not compile on Alpha with gcc 2.8.1)
+
+------------------------------------------------------------------------
+r562 | zimmerma | 2000-05-25 15:35:48 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tout_str.c
+
+added include file unistd.h
+
+------------------------------------------------------------------------
+r561 | zimmerma | 2000-05-25 15:35:08 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+fixed warning with long arguments
+
+------------------------------------------------------------------------
+r560 | zimmerma | 2000-05-25 15:28:50 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ A /trunk/inp_str.c
+ A /trunk/set_str.c
+
+initial version
+
+------------------------------------------------------------------------
+r559 | zimmerma | 2000-05-25 15:26:11 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added tests for mpfr_set_str
+
+------------------------------------------------------------------------
+r558 | zimmerma | 2000-05-25 15:25:13 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+now returns 0 if all works
+
+------------------------------------------------------------------------
+r557 | zimmerma | 2000-05-25 15:24:42 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+changed to return the error in ulps
+
+------------------------------------------------------------------------
+r556 | zimmerma | 2000-05-25 15:24:06 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added new functions mpfr_set_str and mpfr_inp_str
+
+------------------------------------------------------------------------
+r555 | zimmerma | 2000-05-25 14:58:04 +0000 (Thu, 25 May 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototypes for set_str, inp_str
+changed return value for mpfr*pow*
+
+------------------------------------------------------------------------
+r554 | zimmerma | 2000-05-25 14:56:51 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+separated functions with/without rounding argument
+
+------------------------------------------------------------------------
+r553 | zimmerma | 2000-05-25 14:56:19 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added tabs
+
+------------------------------------------------------------------------
+r552 | zimmerma | 2000-05-25 14:22:08 +0000 (Thu, 25 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added set_str.o and inp_str.o
+
+------------------------------------------------------------------------
+r551 | zimmerma | 2000-05-24 17:01:52 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ A /trunk/sub_ui.c
+
+initial version
+
+------------------------------------------------------------------------
+r550 | zimmerma | 2000-05-24 17:01:01 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added rule for sub_ui.o
+
+------------------------------------------------------------------------
+r549 | zimmerma | 2000-05-24 16:51:55 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+use only one file (trunc.c) for ceil, floor, trunc
+
+------------------------------------------------------------------------
+r548 | zimmerma | 2000-05-24 16:51:22 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ D /trunk/ceil.c
+ D /trunk/floor.c
+
+now use trunc.c for all 3 functions (ceil, floor, trunc)
+
+------------------------------------------------------------------------
+r547 | zimmerma | 2000-05-24 16:42:00 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/trunc.c
+
+added ifdef to avoid warning at compilation
+
+------------------------------------------------------------------------
+r546 | zimmerma | 2000-05-24 16:41:30 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/reldiff.c
+
+removed unused variable
+
+------------------------------------------------------------------------
+r545 | zimmerma | 2000-05-24 16:41:09 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+fixed output type for mpfr_ui_div
+
+------------------------------------------------------------------------
+r544 | zimmerma | 2000-05-24 16:37:13 +0000 (Wed, 24 May 2000) | 3 lines
+Changed paths:
+ M /trunk/urandomb.c
+
+removed 3rd argument (use PREC(rop) instead)
+added include longlong.h
+
+------------------------------------------------------------------------
+r543 | zimmerma | 2000-05-24 16:35:23 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/set_prc_raw.c
+
+stupid typo: ABSSIZE -> ABSSIZE(x)
+
+------------------------------------------------------------------------
+r542 | zimmerma | 2000-05-24 16:32:06 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+change due to new semantics of mpfr_init_set* macros
+
+------------------------------------------------------------------------
+r541 | zimmerma | 2000-05-24 16:31:18 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/set_prc_raw.c
+
+now makes an error when precision too large wrt allocated space
+
+------------------------------------------------------------------------
+r540 | zimmerma | 2000-05-24 16:28:41 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added new implemented functions
+
+------------------------------------------------------------------------
+r539 | zimmerma | 2000-05-24 16:26:30 +0000 (Wed, 24 May 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+- added macro for mpfr_sgn
+- removed argument 'p' in mpfr_init_set* macros for compatibility with mpf
+
+------------------------------------------------------------------------
+r538 | zimmerma | 2000-05-24 16:25:20 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpf2mpfr.h
+
+updated wrt new functions
+
+------------------------------------------------------------------------
+r537 | zimmerma | 2000-05-24 16:24:57 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added sub_ui
+
+------------------------------------------------------------------------
+r536 | zimmerma | 2000-05-24 15:29:24 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added new test files
+
+------------------------------------------------------------------------
+r535 | zimmerma | 2000-05-24 15:28:52 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tadd_ui.c
+ A /trunk/tests/tset_q.c
+ A /trunk/tests/tsqrt_ui.c
+ A /trunk/tests/tui_div.c
+ A /trunk/tests/tui_sub.c
+
+new test files
+
+------------------------------------------------------------------------
+r534 | zimmerma | 2000-05-24 15:24:28 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new tests
+
+------------------------------------------------------------------------
+r533 | zimmerma | 2000-05-24 15:23:54 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tabs.c
+
+improved tests
+
+------------------------------------------------------------------------
+r532 | zimmerma | 2000-05-24 15:22:08 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ A /trunk/add_ui.c
+ A /trunk/reldiff.c
+ A /trunk/sqrt_ui.c
+ A /trunk/ui_div.c
+ A /trunk/ui_sub.c
+
+new functions (compatibility with mpf)
+
+------------------------------------------------------------------------
+r531 | zimmerma | 2000-05-24 15:20:16 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+added 4th arg (was missing in non-stdc def)
+
+------------------------------------------------------------------------
+r530 | zimmerma | 2000-05-24 15:19:10 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added new functions (compatibility with mpf)
+
+------------------------------------------------------------------------
+r529 | zimmerma | 2000-05-24 15:18:37 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added several prototypes
+
+------------------------------------------------------------------------
+r528 | zimmerma | 2000-05-24 15:18:04 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed remaining bug (case overlap=5, dif>0)
+
+------------------------------------------------------------------------
+r527 | zimmerma | 2000-05-24 15:16:52 +0000 (Wed, 24 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added add_ui, sqrt_ui, ui_div, ui_sub, reldiff
+
+------------------------------------------------------------------------
+r526 | hanrot | 2000-05-21 16:47:02 +0000 (Sun, 21 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+ A /trunk/ceil.c
+ A /trunk/floor.c
+ A /trunk/trunc.c
+
+Compatibility mpf/mpfr, second part. Ceil, floor, trunc. Yet untested.
+
+------------------------------------------------------------------------
+r525 | hanrot | 2000-05-21 16:38:07 +0000 (Sun, 21 May 2000) | 2 lines
+Changed paths:
+ A /trunk/mpf2mpfr.h
+
+Include file for compatibility module mpf -> mpfr.
+
+------------------------------------------------------------------------
+r524 | hanrot | 2000-05-21 16:35:52 +0000 (Sun, 21 May 2000) | 3 lines
+Changed paths:
+ M /trunk/Configure
+ A /trunk/dump.c
+ A /trunk/eq.c
+ A /trunk/random2.c
+ A /trunk/set_prc_raw.c
+ A /trunk/urandomb.c
+
+Compatibility with mpf. WARNING: THESE FUNCTIONS ARE UNTESTED IN THEIR PRESENT
+FORM. THEY *DO* COMPILE HOWEVER.
+
+------------------------------------------------------------------------
+r523 | zimmerma | 2000-05-18 13:41:24 +0000 (Thu, 18 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+removed unused variables
+
+------------------------------------------------------------------------
+r522 | zimmerma | 2000-05-18 13:38:53 +0000 (Thu, 18 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+removed ';'
+
+------------------------------------------------------------------------
+r521 | zimmerma | 2000-05-18 13:29:55 +0000 (Thu, 18 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tround.c
+
+added return
+
+------------------------------------------------------------------------
+r520 | zimmerma | 2000-05-18 12:57:08 +0000 (Thu, 18 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+added calls to mpf[r]_clear, and rewrote to avoid memory leaks
+
+------------------------------------------------------------------------
+r519 | zimmerma | 2000-05-18 12:56:14 +0000 (Thu, 18 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added calls to free
+
+------------------------------------------------------------------------
+r518 | zimmerma | 2000-05-18 12:55:17 +0000 (Thu, 18 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+corrected comment about field mp_size
+
+------------------------------------------------------------------------
+r517 | zimmerma | 2000-05-12 08:07:56 +0000 (Fri, 12 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+added tests for negative numbers
+
+------------------------------------------------------------------------
+r516 | zimmerma | 2000-05-12 08:07:35 +0000 (Fri, 12 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added one test
+
+------------------------------------------------------------------------
+r515 | zimmerma | 2000-05-12 08:07:02 +0000 (Fri, 12 May 2000) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed pb with rounding of negative numbers
+
+------------------------------------------------------------------------
+r514 | zimmerma | 2000-05-11 15:39:48 +0000 (Thu, 11 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_abs
+
+------------------------------------------------------------------------
+r513 | zimmerma | 2000-05-11 15:38:12 +0000 (Thu, 11 May 2000) | 2 lines
+Changed paths:
+ A /trunk/tests/tabs.c
+
+test file for mpfr_abs
+
+------------------------------------------------------------------------
+r512 | zimmerma | 2000-05-11 15:37:48 +0000 (Thu, 11 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added mpfr_abs (macro using mpfr_set4)
+
+------------------------------------------------------------------------
+r511 | zimmerma | 2000-05-11 10:08:54 +0000 (Thu, 11 May 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated wrt done/new tasks
+
+------------------------------------------------------------------------
+r510 | zimmerma | 2000-05-05 13:59:56 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added two tests
+
+------------------------------------------------------------------------
+r509 | zimmerma | 2000-05-05 13:59:25 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+split mpfr_init2 into mpfr_init and mpfr_set_prec
+
+------------------------------------------------------------------------
+r508 | zimmerma | 2000-05-05 13:57:33 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+removed karadiv.o
+
+------------------------------------------------------------------------
+r507 | zimmerma | 2000-05-05 13:57:08 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ M /trunk/karasqrt.c
+
+replaced mpn_divrem_n by mpn_divrem (efficient in GMP 3.0)
+
+------------------------------------------------------------------------
+r506 | zimmerma | 2000-05-05 13:55:49 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ D /trunk/karadiv.c
+
+not needed any more with GMP 3.0
+
+------------------------------------------------------------------------
+r505 | zimmerma | 2000-05-05 13:49:02 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+removed mpn_divrem_n stuff, now that Burnikel/Ziegler algorithm is in GMP 3.0
+
+------------------------------------------------------------------------
+r504 | zimmerma | 2000-05-05 13:29:21 +0000 (Fri, 05 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tout_str.c
+
+added one test
+
+------------------------------------------------------------------------
+r503 | zimmerma | 2000-05-04 15:18:31 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+completely rewritten (changed semantics)
+
+------------------------------------------------------------------------
+r502 | zimmerma | 2000-05-04 15:17:07 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+initialized variable bh to avoid warning at compilation
+
+------------------------------------------------------------------------
+r501 | zimmerma | 2000-05-04 15:16:11 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_set_default_rounding_mode
+
+------------------------------------------------------------------------
+r500 | zimmerma | 2000-05-04 15:05:34 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+
+fixed pb in mpfr_cmp_ui_2exp for i=0
+
+------------------------------------------------------------------------
+r499 | zimmerma | 2000-05-04 13:40:09 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+updated according to meeting from May 4, 2000
+
+------------------------------------------------------------------------
+r498 | zimmerma | 2000-05-04 12:24:56 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+updated for AIX
+
+------------------------------------------------------------------------
+r497 | zimmerma | 2000-05-04 12:23:28 +0000 (Thu, 04 May 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+ M /trunk/rnd_mode.c
+
+updated for AIX (thanks to Gerardo Ballabio)
+
+------------------------------------------------------------------------
+r496 | zimmerma | 2000-05-02 16:38:27 +0000 (Tue, 02 May 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+added one test
+
+------------------------------------------------------------------------
+r495 | zimmerma | 2000-05-02 16:37:52 +0000 (Tue, 02 May 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed bug found by G. Ballabio for b=0 and 0<c<1
+
+------------------------------------------------------------------------
+r494 | zimmerma | 2000-05-02 16:37:01 +0000 (Tue, 02 May 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added info for GMP2 vs GMP3
+
+------------------------------------------------------------------------
+r493 | zimmerma | 2000-04-19 19:20:27 +0000 (Wed, 19 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added -ffloat-store for Alpha/OSF
+
+------------------------------------------------------------------------
+r492 | zimmerma | 2000-04-19 18:31:13 +0000 (Wed, 19 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+added cast to mp_limb_t (bug on Alpha in tadd with -O2)
+
+------------------------------------------------------------------------
+r491 | zimmerma | 2000-04-19 18:30:19 +0000 (Wed, 19 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added one test
+
+------------------------------------------------------------------------
+r490 | zimmerma | 2000-04-19 14:46:00 +0000 (Wed, 19 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/karasqrt.c
+
+removed #if 0
+
+------------------------------------------------------------------------
+r489 | zimmerma | 2000-04-19 14:45:27 +0000 (Wed, 19 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+swapped gmp-impl.h and longlong.h for GMP 3.0
+
+------------------------------------------------------------------------
+r488 | zimmerma | 2000-04-14 07:34:19 +0000 (Fri, 14 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+added more tests
+
+------------------------------------------------------------------------
+r487 | zimmerma | 2000-04-14 07:33:46 +0000 (Fri, 14 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+fixed pb when target precision is less than integer length
+
+------------------------------------------------------------------------
+r486 | zimmerma | 2000-04-14 07:32:36 +0000 (Fri, 14 Apr 2000) | 3 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed problem not solved so far, i.e. when adding round bit
+produces a change of exponent
+
+------------------------------------------------------------------------
+r485 | zimmerma | 2000-04-13 17:05:48 +0000 (Thu, 13 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+fixed computation of ulps
+
+------------------------------------------------------------------------
+r484 | zimmerma | 2000-04-13 17:03:32 +0000 (Thu, 13 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+removed variable xrw in mpfr_round_raw (not used)
+
+------------------------------------------------------------------------
+r483 | zimmerma | 2000-04-13 17:02:20 +0000 (Thu, 13 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+replaced 1st my by my+sh in mpfr_round_raw call
+
+------------------------------------------------------------------------
+r482 | zimmerma | 2000-04-13 17:00:16 +0000 (Thu, 13 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added 2 more tests
+
+------------------------------------------------------------------------
+r481 | hanrot | 2000-04-13 16:49:33 +0000 (Thu, 13 Apr 2000) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Correction d'un bug quand le carry contient tous les bits significatifs.
+
+------------------------------------------------------------------------
+r480 | zimmerma | 2000-02-11 17:24:38 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+improved indentation
+mpfr_pi -> mpfr_const_pi
+
+------------------------------------------------------------------------
+r479 | zimmerma | 2000-02-11 17:23:36 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_z.c
+
+added one test
+
+------------------------------------------------------------------------
+r478 | zimmerma | 2000-02-11 17:23:09 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+ M /trunk/tests/tpi.c
+
+mpfr_pi -> mpfr_const_pi
+
+------------------------------------------------------------------------
+r477 | zimmerma | 2000-02-11 17:22:34 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+use mpfr_cmp_ui instead of SIGN
+
+------------------------------------------------------------------------
+r476 | zimmerma | 2000-02-11 17:22:03 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog2.c
+
+mpfr_log2 -> mpfr_const_log2
+
+------------------------------------------------------------------------
+r475 | zimmerma | 2000-02-11 17:20:57 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/Configure
+
+added -O2 compilation flag
+added set_q
+
+------------------------------------------------------------------------
+r474 | zimmerma | 2000-02-11 17:20:19 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ A /trunk/set_q.c
+
+convert rational (mpz_q) to floating-point (mpfr_t)
+
+------------------------------------------------------------------------
+r473 | zimmerma | 2000-02-11 17:19:15 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+removed things which were done
+
+------------------------------------------------------------------------
+r472 | zimmerma | 2000-02-11 17:18:40 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/agm.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/get_str.c
+ M /trunk/log.c
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+
+unsigned char -> mp_rnd_t
+SIGN -> MPFR_SIGN
+
+------------------------------------------------------------------------
+r471 | zimmerma | 2000-02-11 17:17:47 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/clear.c
+
+use PREC() macro instead of _mp_prec, and corrected size to free
+
+------------------------------------------------------------------------
+r470 | zimmerma | 2000-02-11 17:16:36 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+
+SIGN -> MPFR_SIGN
+
+------------------------------------------------------------------------
+r469 | zimmerma | 2000-02-11 17:15:35 +0000 (Fri, 11 Feb 2000) | 4 lines
+Changed paths:
+ M /trunk/div.c
+
+unsigned char -> mp_rnd_t
+SIGN -> MPFR_SIGN
+added non standard C header
+
+------------------------------------------------------------------------
+r468 | zimmerma | 2000-02-11 17:13:54 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/div_2exp.c
+
+unsigned char -> mp_rnd_t
+
+------------------------------------------------------------------------
+r467 | zimmerma | 2000-02-11 17:11:45 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/init.c
+
+unsigned long int -> mp_prec_t
+
+------------------------------------------------------------------------
+r466 | zimmerma | 2000-02-11 17:11:01 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/log2.c
+
+renamed to mpfr_const_log2
+unsigned char -> mp_rnd_t
+
+------------------------------------------------------------------------
+r465 | zimmerma | 2000-02-11 17:10:24 +0000 (Fri, 11 Feb 2000) | 4 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+unsigned char -> mp_rnd_t
+SIGN -> MPFR_SIGN
+unsigned long int -> mp_prec_t
+
+------------------------------------------------------------------------
+r464 | zimmerma | 2000-02-11 17:10:04 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+unsigned char -> mp_rnd_t
+unsigned long int -> mp_prec_t
+
+------------------------------------------------------------------------
+r463 | zimmerma | 2000-02-11 17:08:37 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/mul_2exp.c
+ M /trunk/out_str.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/rnd_mode.c
+
+unsigned char -> mp_rnd_t
+
+------------------------------------------------------------------------
+r462 | zimmerma | 2000-02-11 17:06:41 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/pi.c
+
+renamed to mpfr_const_pi
+unsigned char -> mp_rnd_t
+
+------------------------------------------------------------------------
+r461 | zimmerma | 2000-02-11 17:06:06 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/pow.c
+
+unsigned char -> mp_rnd_t
+added non standard C header
+
+------------------------------------------------------------------------
+r460 | zimmerma | 2000-02-11 17:04:40 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+
+SIGN -> MPFR_SIGN
+
+------------------------------------------------------------------------
+r459 | zimmerma | 2000-02-11 17:03:46 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+added non standard C header
+
+------------------------------------------------------------------------
+r458 | zimmerma | 2000-02-11 17:01:46 +0000 (Fri, 11 Feb 2000) | 4 lines
+Changed paths:
+ M /trunk/round.c
+
+unsigned char -> mp_rnd_t
+SIGN -> MPFR_SIGN
+unsigned long int -> mp_prec_t
+
+------------------------------------------------------------------------
+r457 | zimmerma | 2000-02-11 17:01:15 +0000 (Fri, 11 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_si.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+
+unsigned char -> mp_rnd_t
+SIGN -> MPFR_SIGN
+
+------------------------------------------------------------------------
+r456 | zimmerma | 2000-02-11 17:00:21 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_prec.c
+
+unsigned long int -> mp_prec_t
+
+------------------------------------------------------------------------
+r455 | zimmerma | 2000-02-11 16:59:45 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/set_dfl_rnd.c
+
+har -> mp_rnd_t
+
+------------------------------------------------------------------------
+r454 | zimmerma | 2000-02-11 16:55:07 +0000 (Fri, 11 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+changed rounding mode to mp_rnd_t
+
+------------------------------------------------------------------------
+r453 | zimmerma | 2000-02-04 17:04:06 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+now distinguish between true mpfr errors and possible errors from libm.a
+
+------------------------------------------------------------------------
+r452 | zimmerma | 2000-02-04 17:03:21 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+now use print_rnd_mode
+
+------------------------------------------------------------------------
+r451 | zimmerma | 2000-02-04 17:02:42 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion from JP Merlet
+
+------------------------------------------------------------------------
+r450 | zimmerma | 2000-02-04 17:02:15 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added print_rnd_mode.c
+
+------------------------------------------------------------------------
+r449 | zimmerma | 2000-02-04 14:55:01 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+added more tests
+
+------------------------------------------------------------------------
+r448 | zimmerma | 2000-02-04 14:54:37 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/set_f.c
+
+fixed bug(s) found by Jean-Pierre Merlet
+
+------------------------------------------------------------------------
+r447 | zimmerma | 2000-02-04 14:45:43 +0000 (Fri, 04 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed prototype of mpfr_set_f (takes now only 3 arguments)
+
+------------------------------------------------------------------------
+r446 | zimmerma | 2000-02-03 08:59:19 +0000 (Thu, 03 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added karasqrt.o
+
+------------------------------------------------------------------------
+r445 | zimmerma | 2000-02-03 08:58:49 +0000 (Thu, 03 Feb 2000) | 4 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for kara_sqrtrem
+added redefinition of KARATSUBA_MUL_THRESHOLD (if not defined)
+removed definition of LOG_MP_BITS_PER_LIMB (was not used)
+
+------------------------------------------------------------------------
+r444 | zimmerma | 2000-02-03 08:57:40 +0000 (Thu, 03 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/karasqrt.c
+
+changed return type to mp_size_t and included mpfr.h
+
+------------------------------------------------------------------------
+r443 | zimmerma | 2000-02-03 08:56:58 +0000 (Thu, 03 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/karadiv.c
+
+moved definition of KARATSUBA_MUL_THRESHOLD (if not defined) to mpfr.h
+
+------------------------------------------------------------------------
+r442 | zimmerma | 2000-02-03 08:48:45 +0000 (Thu, 03 Feb 2000) | 2 lines
+Changed paths:
+ A /trunk/karasqrt.c
+
+implements Katatsuba square root
+
+------------------------------------------------------------------------
+r441 | zimmerma | 2000-02-03 08:45:55 +0000 (Thu, 03 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+now use kara_sqrtrem instead of mpn_sqrtrem
+
+------------------------------------------------------------------------
+r440 | zimmerma | 2000-02-03 08:41:35 +0000 (Thu, 03 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+fixed bug when high limb of quotient is zero
+
+------------------------------------------------------------------------
+r439 | zimmerma | 2000-02-02 18:17:30 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added one test [did fail on alpha]
+
+------------------------------------------------------------------------
+r438 | zimmerma | 2000-02-02 18:01:29 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+added cast to mp_limb_t in front of 1<<sh
+
+------------------------------------------------------------------------
+r437 | zimmerma | 2000-02-02 17:57:24 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/karadiv.c
+
+modified to be compatible with gmp-2.0.2
+
+------------------------------------------------------------------------
+r436 | zimmerma | 2000-02-02 17:54:04 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added further sqrt pb on alpha
+
+------------------------------------------------------------------------
+r435 | zimmerma | 2000-02-02 17:53:12 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+swapped longlong.h and gmp-impl.h (pb on alpha)
+
+------------------------------------------------------------------------
+r434 | zimmerma | 2000-02-02 16:02:47 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added test for bug in sub.c found by JP Merlet on Solaris
+
+------------------------------------------------------------------------
+r433 | zimmerma | 2000-02-02 15:52:54 +0000 (Wed, 02 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed mpn_rshift which could have 0 as shift argument
+(caused bug in exp on Solaris found by JP Merlet)
+
+------------------------------------------------------------------------
+r432 | zimmerma | 2000-02-02 15:49:49 +0000 (Wed, 02 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+moved debug messages to stdout
+
+------------------------------------------------------------------------
+r431 | zimmerma | 2000-02-01 16:31:42 +0000 (Tue, 01 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpn_divrem_n (Burnikel-Ziegler algorithm)
+
+------------------------------------------------------------------------
+r430 | zimmerma | 2000-02-01 16:31:05 +0000 (Tue, 01 Feb 2000) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+use mpn_divrem_n (Burnikel-Ziegler algorithm) instead of mpn_divrem
+when rsize=rrsize
+
+------------------------------------------------------------------------
+r429 | zimmerma | 2000-02-01 16:30:17 +0000 (Tue, 01 Feb 2000) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added karadiv.c (to be removed when incorporated in GMP)
+
+------------------------------------------------------------------------
+r428 | zimmerma | 2000-02-01 16:29:32 +0000 (Tue, 01 Feb 2000) | 2 lines
+Changed paths:
+ A /trunk/karadiv.c
+
+Burnikel-Ziegler division
+
+------------------------------------------------------------------------
+r427 | zimmerma | 2000-01-31 13:09:12 +0000 (Mon, 31 Jan 2000) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added further examples from V. Lefe`vre
+
+------------------------------------------------------------------------
+r426 | zimmerma | 1999-12-16 13:14:21 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added macri VERSION for target dist
+
+------------------------------------------------------------------------
+r425 | zimmerma | 1999-12-16 11:00:44 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added new tests from V. Lefe`vre
+
+------------------------------------------------------------------------
+r424 | zimmerma | 1999-12-16 11:00:14 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+improved interface: tdiv N for doing N random tests
+
+------------------------------------------------------------------------
+r423 | zimmerma | 1999-12-16 10:59:26 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+added one test
+
+------------------------------------------------------------------------
+r422 | zimmerma | 1999-12-16 10:58:50 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+DEBUG2 -> DEBUG
+
+------------------------------------------------------------------------
+r421 | zimmerma | 1999-12-16 10:58:21 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+added debug instructions
+
+------------------------------------------------------------------------
+r420 | zimmerma | 1999-12-16 10:57:44 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+fixed nasty bug in mpfr_cmp2 (case cc=1)
+
+------------------------------------------------------------------------
+r419 | zimmerma | 1999-12-16 10:54:57 +0000 (Thu, 16 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+replaced printf by fprintf for error
+
+------------------------------------------------------------------------
+r418 | zimmerma | 1999-12-10 20:32:36 +0000 (Fri, 10 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added new tests for large input
+
+------------------------------------------------------------------------
+r417 | zimmerma | 1999-12-10 20:32:07 +0000 (Fri, 10 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+fixed bug for large input
+
+------------------------------------------------------------------------
+r416 | zimmerma | 1999-12-10 13:29:54 +0000 (Fri, 10 Dec 1999) | 4 lines
+Changed paths:
+ M /trunk/log.c
+
+rewritten the error analysis:
+- now analyzes the cancellation a posteriori
+- takes into account errors from rounding and initial approximation
+
+------------------------------------------------------------------------
+r415 | zimmerma | 1999-12-10 13:27:42 +0000 (Fri, 10 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added tests from Vincent Lefe`vre
+
+------------------------------------------------------------------------
+r414 | zimmerma | 1999-12-10 13:04:09 +0000 (Fri, 10 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+no warning any more for negative exponent (thanks to V. Lefe`vre)
+
+------------------------------------------------------------------------
+r413 | zimmerma | 1999-12-08 12:12:07 +0000 (Wed, 08 Dec 1999) | 3 lines
+Changed paths:
+ M /trunk/exp.c
+
+fixed bug found by V. Lefe`vre (when n<0, we have to compute
+an upper bound of log(2) instead of a lower bound)
+
+------------------------------------------------------------------------
+r412 | zimmerma | 1999-12-08 12:10:29 +0000 (Wed, 08 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added new test (bug found by V. Lefe`vre)
+
+------------------------------------------------------------------------
+r411 | zimmerma | 1999-12-07 16:01:25 +0000 (Tue, 07 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added suggestion from V. Lefe`vre
+
+------------------------------------------------------------------------
+r410 | zimmerma | 1999-12-07 10:31:45 +0000 (Tue, 07 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/TODO
+
+added several remarks from Vincent Lefe`vre
+
+------------------------------------------------------------------------
+r409 | zimmerma | 1999-12-07 10:27:05 +0000 (Tue, 07 Dec 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+corrected many typos found by Vincent Lefe`vre
+
+------------------------------------------------------------------------
+r408 | zimmerma | 1999-11-27 08:10:56 +0000 (Sat, 27 Nov 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+
+removed executable rights
+
+------------------------------------------------------------------------
+r407 | zimmerma | 1999-11-27 08:09:46 +0000 (Sat, 27 Nov 1999) | 3 lines
+Changed paths:
+ M /trunk/INSTALL
+
+improved GMP link (thanks to Vincent Lefe`vre)
+added pointer to Alpha-Linux f-p problems
+
+------------------------------------------------------------------------
+r406 | zimmerma | 1999-11-27 08:08:35 +0000 (Sat, 27 Nov 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+removed executable right on file
+
+------------------------------------------------------------------------
+r405 | zimmerma | 1999-10-20 14:17:01 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+put back test for x=y
+
+------------------------------------------------------------------------
+r404 | zimmerma | 1999-10-20 14:11:34 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+modified to avoid y=-0.0
+
+------------------------------------------------------------------------
+r403 | zimmerma | 1999-10-20 13:31:20 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+modified test procedure to return 53 when x=y
+
+------------------------------------------------------------------------
+r402 | zimmerma | 1999-10-20 13:25:13 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+mpfr_cmp2(b,c) now returns PREC(b) if b=c, even if c=0
+
+------------------------------------------------------------------------
+r401 | zimmerma | 1999-10-20 13:06:11 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one test
+
+------------------------------------------------------------------------
+r400 | zimmerma | 1999-10-20 13:05:43 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added test under Cygwin
+
+------------------------------------------------------------------------
+r399 | zimmerma | 1999-10-20 11:16:09 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+$make -> $MAKE
+
+------------------------------------------------------------------------
+r398 | zimmerma | 1999-10-20 10:21:22 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_z.c
+
+removed *rand48 prototypes (pb under Cygwin)
+
+------------------------------------------------------------------------
+r397 | zimmerma | 1999-10-20 10:20:37 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+removed *rand48 prototypes
+
+------------------------------------------------------------------------
+r396 | zimmerma | 1999-10-20 10:20:12 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+removed lrand48 prototype (pb under Cygwin)
+
+------------------------------------------------------------------------
+r395 | zimmerma | 1999-10-20 10:19:30 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+added rounding instructions for Cygnus compiler under Windows
+
+------------------------------------------------------------------------
+r394 | zimmerma | 1999-10-20 10:18:14 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added dummy *rand48 functions for CYGWIN
+
+------------------------------------------------------------------------
+r393 | zimmerma | 1999-10-20 10:17:38 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added info about gmp-mparam.h
+
+------------------------------------------------------------------------
+r392 | zimmerma | 1999-10-20 10:16:28 +0000 (Wed, 20 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+incorporated data for CYGWIN
+
+------------------------------------------------------------------------
+r391 | zimmerma | 1999-10-15 09:51:16 +0000 (Fri, 15 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one test
+
+------------------------------------------------------------------------
+r390 | zimmerma | 1999-10-15 09:41:12 +0000 (Fri, 15 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tsqrt.c
+
+added boundary cases from paper from Michael Parks
+
+------------------------------------------------------------------------
+r389 | zimmerma | 1999-10-14 13:32:09 +0000 (Thu, 14 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+now set sign correctly
+
+------------------------------------------------------------------------
+r388 | zimmerma | 1999-10-14 13:31:45 +0000 (Thu, 14 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added test to check sign is correctly set
+
+------------------------------------------------------------------------
+r387 | zimmerma | 1999-10-14 13:31:15 +0000 (Thu, 14 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added worst case for arg. reduction
+
+------------------------------------------------------------------------
+r386 | zimmerma | 1999-10-14 13:26:40 +0000 (Thu, 14 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+fixed bug when initial approx. floor(x/log(2)) is too large
+
+------------------------------------------------------------------------
+r385 | zimmerma | 1999-10-08 15:25:42 +0000 (Fri, 08 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+now use macros for Linux case, and added ifdef for _ISOC9X_SOURCE
+
+------------------------------------------------------------------------
+r384 | zimmerma | 1999-10-08 10:03:45 +0000 (Fri, 08 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+changed target dist to create archive in a directory
+
+------------------------------------------------------------------------
+r383 | zimmerma | 1999-10-07 15:12:09 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added targets doc and dist
+
+------------------------------------------------------------------------
+r382 | zimmerma | 1999-10-07 15:11:43 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/INSTALL
+
+added documentation and contact for problems
+
+------------------------------------------------------------------------
+r381 | zimmerma | 1999-10-07 14:54:54 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ A /trunk/INSTALL
+
+file for installation of mpfr
+
+------------------------------------------------------------------------
+r380 | zimmerma | 1999-10-07 14:09:58 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tout_str.c
+
+added more tests
+
+------------------------------------------------------------------------
+r379 | zimmerma | 1999-10-07 14:06:17 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+now deal with 0 and fixed bug on 64-bit machine
+
+------------------------------------------------------------------------
+r378 | zimmerma | 1999-10-07 08:15:21 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ D /trunk/sqrt3.c
+
+moved to sqrt.c
+
+------------------------------------------------------------------------
+r377 | zimmerma | 1999-10-07 08:14:56 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+now use directly mpn_sqrtrem (previously sqrt3.c)
+
+------------------------------------------------------------------------
+r376 | zimmerma | 1999-10-07 08:14:13 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+updated prototypes of mpfr_div/mpfr_sqrt
+
+------------------------------------------------------------------------
+r375 | zimmerma | 1999-10-07 08:11:25 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+ M /trunk/mpfr.h
+
+removed div3 and sqrt3
+
+------------------------------------------------------------------------
+r374 | zimmerma | 1999-10-07 08:10:06 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+div3 -> div
+
+------------------------------------------------------------------------
+r373 | zimmerma | 1999-10-07 08:09:41 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ D /trunk/div3.c
+
+moved to div.c
+
+------------------------------------------------------------------------
+r372 | zimmerma | 1999-10-07 08:08:48 +0000 (Thu, 07 Oct 1999) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+replaced implementation using Goldschmidt's algorithm
+by that using directly mpn_divrem (previously div3.c)
+
+------------------------------------------------------------------------
+r371 | zimmerma | 1999-10-07 08:07:46 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+sqrt3 -> sqrt
+
+------------------------------------------------------------------------
+r370 | zimmerma | 1999-10-07 08:05:54 +0000 (Thu, 07 Oct 1999) | 2 lines
+Changed paths:
+ A /trunk/COPYING.LIB
+
+GNU Library Public License
+
+------------------------------------------------------------------------
+r369 | zimmerma | 1999-08-31 08:56:55 +0000 (Tue, 31 Aug 1999) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+removed printf statement
+
+------------------------------------------------------------------------
+r368 | zimmerma | 1999-08-31 08:46:21 +0000 (Tue, 31 Aug 1999) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+added ABS for SIZ(z) when z<0
+
+------------------------------------------------------------------------
+r367 | zimmerma | 1999-08-31 08:45:45 +0000 (Tue, 31 Aug 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+removed special 'exact' stuff for n=0
+
+------------------------------------------------------------------------
+r366 | zimmerma | 1999-08-31 08:18:25 +0000 (Tue, 31 Aug 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+fixed prototype of random
+
+------------------------------------------------------------------------
+r365 | zimmerma | 1999-07-30 16:48:33 +0000 (Fri, 30 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+replaced GNU MPFR by MPFR (not yet the GNU label)
+
+------------------------------------------------------------------------
+r364 | zimmerma | 1999-07-30 16:47:40 +0000 (Fri, 30 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/clear.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div3.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/get_str.c
+ M /trunk/init.c
+ M /trunk/init_set.h
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpfr-impl.h
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/rnd_mode.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_dfl_prec.c
+ M /trunk/set_dfl_rnd.c
+ M /trunk/set_f.c
+ M /trunk/set_prec.c
+ M /trunk/set_si.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sqrt3.c
+ M /trunk/sub.c
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tcan_round.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tcmp2.c
+ M /trunk/tests/tcmp_ui.c
+ M /trunk/tests/tdiv.c
+ M /trunk/tests/tdiv_ui.c
+ M /trunk/tests/texp.c
+ M /trunk/tests/tget_str.c
+ M /trunk/tests/tlog.c
+ M /trunk/tests/tlog2.c
+ M /trunk/tests/tmul.c
+ M /trunk/tests/tmul_2exp.c
+ M /trunk/tests/tmul_ui.c
+ M /trunk/tests/tout_str.c
+ M /trunk/tests/tpi.c
+ M /trunk/tests/tround.c
+ M /trunk/tests/tset_d.c
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+ M /trunk/tests/tset_z.c
+ M /trunk/tests/tsqrt.c
+ M /trunk/tests/tzeta.c
+ M /trunk/zeta.c
+
+added copyright notice
+
+------------------------------------------------------------------------
+r363 | zimmerma | 1999-07-09 18:02:58 +0000 (Fri, 09 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_z.c
+
+added one test with prec=160
+
+------------------------------------------------------------------------
+r362 | zimmerma | 1999-07-09 18:02:08 +0000 (Fri, 09 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/pi.c
+
+error term is N+1 and not N
+
+------------------------------------------------------------------------
+r361 | zimmerma | 1999-07-09 18:00:39 +0000 (Fri, 09 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set_z.c
+
+fixed bug in case sh=0
+
+------------------------------------------------------------------------
+r360 | zimmerma | 1999-07-08 16:28:56 +0000 (Thu, 08 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/round.c
+
+completely rewritten mpfr_can_round_raw, which costs now O(1)
+--- or more probably O(log n) --- instead of O(n)
+
+------------------------------------------------------------------------
+r359 | zimmerma | 1999-07-07 16:47:31 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+changed mpfr_init2 to mpfr_set_prec
+
+------------------------------------------------------------------------
+r358 | zimmerma | 1999-07-07 16:44:53 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added one test
+
+------------------------------------------------------------------------
+r357 | zimmerma | 1999-07-07 16:08:19 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+added prototype for mpfr_add1
+
+------------------------------------------------------------------------
+r356 | zimmerma | 1999-07-07 16:04:13 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcan_round.c
+
+added mpfr_clear
+
+------------------------------------------------------------------------
+r355 | hanrot | 1999-07-07 15:53:23 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt3.c
+
+sqrt3 now returns an exact / inexact flag.
+
+------------------------------------------------------------------------
+r354 | hanrot | 1999-07-07 15:52:58 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+sqrt3 now returns an exact/inexact flag.
+
+------------------------------------------------------------------------
+r353 | zimmerma | 1999-07-07 15:49:50 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+fix UMR (missing 0 terminating string)
+
+------------------------------------------------------------------------
+r352 | zimmerma | 1999-07-07 15:26:07 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/init.c
+
+put initialization of exponent back (avoids some UMRs)
+
+------------------------------------------------------------------------
+r351 | zimmerma | 1999-07-07 15:11:20 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed array bound write bug
+
+------------------------------------------------------------------------
+r350 | zimmerma | 1999-07-07 13:12:18 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one test
+
+------------------------------------------------------------------------
+r349 | zimmerma | 1999-07-07 13:10:57 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+added several tests, and does not print on stdout when no argument
+
+------------------------------------------------------------------------
+r348 | zimmerma | 1999-07-07 13:09:37 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+fixed several bugs
+
+------------------------------------------------------------------------
+r347 | hanrot | 1999-07-07 11:37:10 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+Added an example which causes an ABW in mpz_get_str.
+
+------------------------------------------------------------------------
+r346 | zimmerma | 1999-07-07 11:35:17 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+moved drand to mpfr-impl.h and added test in large precision
+
+------------------------------------------------------------------------
+r345 | zimmerma | 1999-07-07 11:24:34 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added tout_str
+
+------------------------------------------------------------------------
+r344 | hanrot | 1999-07-07 10:12:23 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt3.c
+
+Problem with the exponents in the destructive case.
+
+------------------------------------------------------------------------
+r343 | zimmerma | 1999-07-07 10:04:22 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+
+more changes from G. Hanrot
+
+------------------------------------------------------------------------
+r342 | zimmerma | 1999-07-07 10:00:45 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+use now drand48 instead of drand
+
+------------------------------------------------------------------------
+r341 | zimmerma | 1999-07-07 09:49:04 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+simply set to zero the non-significant bits, don't call mpfr_round_raw
+
+------------------------------------------------------------------------
+r340 | zimmerma | 1999-07-07 09:44:15 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+
+upgrade from bug fixes from Guillaume Hanrot
+
+------------------------------------------------------------------------
+r339 | zimmerma | 1999-07-07 09:38:44 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/pi.c
+
+stores now last computed value together with its rounding mode
+
+------------------------------------------------------------------------
+r338 | zimmerma | 1999-07-07 09:23:24 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+checks now destructive version
+
+------------------------------------------------------------------------
+r337 | boldo | 1999-07-07 08:07:16 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+ M /trunk/tests/tlog.c
+
+changes on random
+
+------------------------------------------------------------------------
+r336 | boldo | 1999-07-07 08:00:29 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+using div3
+
+------------------------------------------------------------------------
+r335 | boldo | 1999-07-07 08:00:09 +0000 (Wed, 07 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+using sqrt3
+
+------------------------------------------------------------------------
+r334 | hanrot | 1999-07-06 16:56:56 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+HPUX support, 2nd try.
+
+------------------------------------------------------------------------
+r333 | hanrot | 1999-07-06 15:24:27 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+ M /trunk/sqrt3.c
+
+Patch for the (very seldom encountered) case of even rounding.
+
+------------------------------------------------------------------------
+r332 | zimmerma | 1999-07-06 15:09:07 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+ M /trunk/tests/tset_si.c
+ M /trunk/tests/tset_str.c
+
+added def. for random/srandom, which do not exist under HPUX
+
+------------------------------------------------------------------------
+r331 | zimmerma | 1999-07-06 15:06:16 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/pi.c
+
+store now computed values
+
+------------------------------------------------------------------------
+r330 | zimmerma | 1999-07-06 15:05:42 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+
+_mpfr_log2_* -> __mpfr_log2_*
+
+------------------------------------------------------------------------
+r329 | zimmerma | 1999-07-06 14:48:33 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+merged machine rounding instructions for Sun and HP
+
+------------------------------------------------------------------------
+r328 | zimmerma | 1999-07-06 14:46:38 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+patch for HPUX (no random function)
+
+------------------------------------------------------------------------
+r327 | zimmerma | 1999-07-06 14:44:30 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added print_rnd_mode
+
+------------------------------------------------------------------------
+r326 | zimmerma | 1999-07-06 14:41:38 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+fixed prototype of mpfr_print_rnd_mode
+
+------------------------------------------------------------------------
+r325 | zimmerma | 1999-07-06 14:40:54 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+improved ulp to deal with case a=0.0
+
+------------------------------------------------------------------------
+r324 | zimmerma | 1999-07-06 14:40:13 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added return 0 to main
+
+------------------------------------------------------------------------
+r323 | hanrot | 1999-07-06 14:00:29 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+
+Forgotten casts.
+
+------------------------------------------------------------------------
+r322 | hanrot | 1999-07-06 12:55:14 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Added sqrt3 + tentative support for Alpha linux.
+
+------------------------------------------------------------------------
+r321 | hanrot | 1999-07-06 12:40:17 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt3.c
+
+The word added when the exponent is odd was sometimes unitialized.
+
+------------------------------------------------------------------------
+r320 | hanrot | 1999-07-06 09:39:42 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ A /trunk/sqrt3.c
+
+Initial version.
+
+------------------------------------------------------------------------
+r319 | hanrot | 1999-07-06 09:39:20 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Added mpfr_sqrt3.
+
+------------------------------------------------------------------------
+r318 | zimmerma | 1999-07-06 09:23:25 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added several functions, and updated others
+
+------------------------------------------------------------------------
+r317 | zimmerma | 1999-07-06 09:19:09 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed prototype of mpfr_log
+
+------------------------------------------------------------------------
+r316 | zimmerma | 1999-07-06 09:17:28 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+returns now an int instead of void
+
+------------------------------------------------------------------------
+r315 | zimmerma | 1999-07-06 09:16:41 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/init.c
+
+removed initialization of exponent
+
+------------------------------------------------------------------------
+r314 | zimmerma | 1999-07-06 09:16:03 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+
+special case for exp(0)
+
+------------------------------------------------------------------------
+r313 | zimmerma | 1999-07-06 09:15:40 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added test for exp(0)
+
+------------------------------------------------------------------------
+r312 | hanrot | 1999-07-06 08:31:45 +0000 (Tue, 06 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+config.in -> ./config.in
+
+------------------------------------------------------------------------
+r311 | boldo | 1999-07-05 18:55:08 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+new, quick & clean
+
+------------------------------------------------------------------------
+r310 | zimmerma | 1999-07-05 16:35:27 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added two tests and converted to double's
+
+------------------------------------------------------------------------
+r309 | boldo | 1999-07-05 16:27:31 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+more checking ways
+
+------------------------------------------------------------------------
+r308 | zimmerma | 1999-07-05 15:24:16 +0000 (Mon, 05 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+distinguishes now between true errors and differences with libm.a
+(which may fail too)
+
+------------------------------------------------------------------------
+r307 | zimmerma | 1999-07-05 14:55:12 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+removed mpf stuff in check
+
+------------------------------------------------------------------------
+r306 | zimmerma | 1999-07-05 14:49:59 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+added some mpfr_clear's
+
+------------------------------------------------------------------------
+r305 | zimmerma | 1999-07-05 14:45:58 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+changed defs of random/srandom to work on Alpha
+
+------------------------------------------------------------------------
+r304 | zimmerma | 1999-07-05 14:45:12 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+mpfr_init2 -> mpfr_set_prec in check64
+
+------------------------------------------------------------------------
+r303 | zimmerma | 1999-07-05 14:30:48 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+added function dbl
+
+------------------------------------------------------------------------
+r302 | zimmerma | 1999-07-05 14:30:19 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototypes for mpfr_cmp3 and mpfr_set4
+
+------------------------------------------------------------------------
+r301 | zimmerma | 1999-07-05 14:06:18 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/neg.c
+
+use mpfr_set4 now (no modification of const parameters any more)
+
+------------------------------------------------------------------------
+r300 | zimmerma | 1999-07-05 14:05:33 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+return 0 in mpfr_can_round_raw
+
+------------------------------------------------------------------------
+r299 | zimmerma | 1999-07-05 14:04:38 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+introduced auxiliary function mpfr_set4
+
+------------------------------------------------------------------------
+r298 | zimmerma | 1999-07-05 14:01:07 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+fixed possible bug (testing sign of unsigned long) in mpfr_mul_ui
+
+------------------------------------------------------------------------
+r297 | zimmerma | 1999-07-05 14:00:11 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+
+replaced PREC(r) by prec (which was defined but not used)
+
+------------------------------------------------------------------------
+r296 | zimmerma | 1999-07-05 13:59:08 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+moved drand and ulp to mpfr-impl
+
+------------------------------------------------------------------------
+r295 | zimmerma | 1999-07-05 13:55:23 +0000 (Mon, 05 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+moved ulp to mpfr-impl.h
+and used input routine 'dbl' in some tests
+
+------------------------------------------------------------------------
+r294 | zimmerma | 1999-07-05 13:32:55 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+modified one test to avoid rounding from double input routines
+
+------------------------------------------------------------------------
+r293 | zimmerma | 1999-07-05 13:18:06 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+introduced auxiliary function mpfr_cmp3(x,y,sign) to compare x and sign*y
+
+------------------------------------------------------------------------
+r292 | zimmerma | 1999-07-05 13:16:55 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+moved drand and ulp to mpfr-impl.h
+
+------------------------------------------------------------------------
+r291 | zimmerma | 1999-07-05 13:15:48 +0000 (Mon, 05 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+mpfr_sub now calls directly mpfr_add1/mpfr_sub1 (no modification of
+const parameters any more)
+
+------------------------------------------------------------------------
+r290 | zimmerma | 1999-07-05 13:14:13 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp.c
+
+moved drand to mpfr-implh.h
+
+------------------------------------------------------------------------
+r289 | zimmerma | 1999-07-05 13:12:55 +0000 (Mon, 05 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/add.c
+
+use mpfr_cmp3 instead of mpfr_cmp (avoids warning due to modification of
+const parameters)
+
+------------------------------------------------------------------------
+r288 | zimmerma | 1999-07-05 13:11:42 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+moved drand to mpfr-impl.h and removed warnings
+
+------------------------------------------------------------------------
+r287 | zimmerma | 1999-07-05 12:34:27 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/zeta.c
+
+use the result of mpfr_can_round
+
+------------------------------------------------------------------------
+r286 | zimmerma | 1999-07-05 11:05:32 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+moved drand and ulp to mpfr-impl.h
+
+------------------------------------------------------------------------
+r285 | zimmerma | 1999-07-05 11:03:46 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+moved drand to mpfr-impl.h
+
+------------------------------------------------------------------------
+r284 | zimmerma | 1999-07-05 10:56:30 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+moved drand to mpfr-impl and removed warnings
+
+------------------------------------------------------------------------
+r283 | zimmerma | 1999-07-05 10:55:30 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr-impl.h
+
+added include of math.h
+
+------------------------------------------------------------------------
+r282 | zimmerma | 1999-07-05 10:52:07 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+moved drand and ulp to mpfr-impl.h
+
+------------------------------------------------------------------------
+r281 | zimmerma | 1999-07-05 10:51:37 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ A /trunk/mpfr-impl.h
+
+include file for mpfr developers only
+
+------------------------------------------------------------------------
+r280 | zimmerma | 1999-07-05 10:45:52 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+long -> int in drand
+
+------------------------------------------------------------------------
+r279 | zimmerma | 1999-07-05 10:43:11 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+adapted drand to sizeof(long)=64
+
+------------------------------------------------------------------------
+r278 | zimmerma | 1999-07-05 10:12:44 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+config.in -> ./config.in (otherwise don't work under IRIX)
+
+------------------------------------------------------------------------
+r277 | zimmerma | 1999-07-05 09:42:53 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv_ui.c
+
+removed warnings
+
+------------------------------------------------------------------------
+r276 | zimmerma | 1999-07-05 09:42:20 +0000 (Mon, 05 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+patch for GMP bug when UDIV_NEEDS_NORMALIZATION=1
+
+------------------------------------------------------------------------
+r275 | hanrot | 1999-07-02 17:51:54 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+
+Correction of a typo.
+
+------------------------------------------------------------------------
+r274 | zimmerma | 1999-07-02 16:13:14 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div_ui.c
+
+fixed horrible hack yp[-1]
+
+------------------------------------------------------------------------
+r273 | hanrot | 1999-07-02 15:47:18 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Support of IRIX64 (n32/64 modes) plus cosmetic modifications.
+
+------------------------------------------------------------------------
+r272 | zimmerma | 1999-07-02 12:29:31 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added one test, and adapted to ANSI C
+
+------------------------------------------------------------------------
+r271 | hanrot | 1999-07-02 12:28:06 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Yet Another Backslash Forgotten...
+
+------------------------------------------------------------------------
+r270 | hanrot | 1999-07-02 12:26:33 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div3.c
+
+Bug le plus stupide de tous les temps corrige. Ca marchait sous Solaris...
+
+------------------------------------------------------------------------
+r269 | zimmerma | 1999-07-02 12:25:39 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+added one test and removed warnings
+
+------------------------------------------------------------------------
+r268 | hanrot | 1999-07-02 12:22:02 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Added mpfr_div3.
+
+------------------------------------------------------------------------
+r267 | hanrot | 1999-07-02 12:21:42 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Added div3.c
+
+------------------------------------------------------------------------
+r266 | zimmerma | 1999-07-02 12:19:59 +0000 (Fri, 02 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/add.c
+
+fixed bug when sizeof(long) <> sizeof(mp_limb_t)
+and removed DEBUG2 stuff
+
+------------------------------------------------------------------------
+r265 | zimmerma | 1999-07-02 12:19:03 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added one test, and removed warnings
+
+------------------------------------------------------------------------
+r264 | hanrot | 1999-07-02 12:18:47 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ A /trunk/div3.c
+
+Added div3.c, initial release.
+
+------------------------------------------------------------------------
+r263 | hanrot | 1999-07-02 11:45:22 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Patch of the patch :)
+
+------------------------------------------------------------------------
+r262 | hanrot | 1999-07-02 11:27:38 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Pattern matching rules in tests Makefile for non-GNU make (eg Solaris)
+
+------------------------------------------------------------------------
+r261 | zimmerma | 1999-07-02 11:24:09 +0000 (Fri, 02 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+adapted to enable denormalized numbers on IRIX64, added one test and
+removed warnings
+
+------------------------------------------------------------------------
+r260 | zimmerma | 1999-07-02 11:21:42 +0000 (Fri, 02 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/round.c
+
+changed type of 3rd arg. 'neg' of mpfr_can_round_raw from char to int
+(pb with signed char's on some machines, e.g. IRIX64)
+
+------------------------------------------------------------------------
+r259 | zimmerma | 1999-07-02 10:09:00 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+adapted to IRIX64 (enable denorm. numbers) and removed warnings
+
+------------------------------------------------------------------------
+r258 | zimmerma | 1999-07-02 10:06:05 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+adapted to IRIX64 (enable denormalized numbers) and removed warnings
+
+------------------------------------------------------------------------
+r257 | zimmerma | 1999-07-02 10:03:28 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+adapted to IRIX64 (no denormalized by default) and removed warnings
+
+------------------------------------------------------------------------
+r256 | zimmerma | 1999-07-02 09:55:41 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+unsigned long -> mp_limb_t
+
+------------------------------------------------------------------------
+r255 | boldo | 1999-07-02 09:51:06 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+unused variables
+
+------------------------------------------------------------------------
+r254 | boldo | 1999-07-02 09:50:16 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+unused variable
+
+------------------------------------------------------------------------
+r253 | zimmerma | 1999-07-02 09:43:38 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+added ifdef to avoid warning "unused variable" on 64-bit machine
+
+------------------------------------------------------------------------
+r252 | zimmerma | 1999-07-02 09:42:58 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/rnd_mode.c
+
+added def. of swapRM to avoid warning on IRIX64
+
+------------------------------------------------------------------------
+r251 | zimmerma | 1999-07-02 09:36:03 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+ M /trunk/round.c
+
+1UL -> ((mp_limb_t) 1)
+
+------------------------------------------------------------------------
+r250 | zimmerma | 1999-07-02 09:32:47 +0000 (Fri, 02 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+changed type of mask to mp_limb_t in mpfr_round_raw2
+
+------------------------------------------------------------------------
+r249 | zimmerma | 1999-07-02 09:26:13 +0000 (Fri, 02 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_d.c
+
+adapted for denormalized on IRIX64
+now test NaNs too
+
+------------------------------------------------------------------------
+r248 | hanrot | 1999-07-01 17:20:43 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+Due to the representation of 0 it might have happened that 0 != 0.
+
+------------------------------------------------------------------------
+r247 | hanrot | 1999-07-01 17:09:00 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+Patch mpfr_set -> MPN_COPY
+
+------------------------------------------------------------------------
+r246 | hanrot | 1999-07-01 17:08:12 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Patch when prec < 32.
+
+------------------------------------------------------------------------
+r245 | zimmerma | 1999-07-01 17:00:58 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+fixed bugs for 64-bit machines
+
+------------------------------------------------------------------------
+r244 | zimmerma | 1999-07-01 16:59:36 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+added casts to mp_limb_t
+
+------------------------------------------------------------------------
+r243 | zimmerma | 1999-07-01 16:54:40 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+added cast to mp_limb_t for shifts
+
+------------------------------------------------------------------------
+r242 | boldo | 1999-07-01 14:35:42 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+prints nothing is everything is allright
+
+------------------------------------------------------------------------
+r241 | boldo | 1999-07-01 14:20:32 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+memory gestion
+
+------------------------------------------------------------------------
+r240 | boldo | 1999-07-01 14:19:36 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+one single bug
+
+------------------------------------------------------------------------
+r239 | boldo | 1999-07-01 14:19:12 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+more bad cases
+
+------------------------------------------------------------------------
+r238 | zimmerma | 1999-07-01 14:08:04 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added some certified tests
+
+------------------------------------------------------------------------
+r237 | zimmerma | 1999-07-01 12:47:55 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added one test to check that 1*y = y
+
+------------------------------------------------------------------------
+r236 | hanrot | 1999-07-01 12:19:09 +0000 (Thu, 01 Jul 1999) | 3 lines
+Changed paths:
+ M /trunk/div.c
+
+Patch of an MLK due to multiple initialization of the same variables without
+freeing them in-between.
+
+------------------------------------------------------------------------
+r235 | hanrot | 1999-07-01 12:09:49 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+Same as in sqrt (allocation problem).
+
+------------------------------------------------------------------------
+r234 | zimmerma | 1999-07-01 11:58:48 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+fixed bug due to shift=0 in mpn_rshift
+
+------------------------------------------------------------------------
+r233 | hanrot | 1999-07-01 10:43:19 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+(Temporary) patch for memory gestion in sqrt.c
+
+------------------------------------------------------------------------
+r232 | zimmerma | 1999-07-01 09:40:55 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+mpfr_init -> mpfr_init2
+
+------------------------------------------------------------------------
+r231 | zimmerma | 1999-07-01 09:39:56 +0000 (Thu, 01 Jul 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+initialize temporary variables with current precision
+
+------------------------------------------------------------------------
+r230 | hanrot | 1999-06-30 15:47:13 +0000 (Wed, 30 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/clear.c
+
+Unbelievably stupid bug fixed.
+
+------------------------------------------------------------------------
+r229 | hanrot | 1999-06-30 15:14:47 +0000 (Wed, 30 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/round.c
+
+Two patches : one for an UMR which actually had no effect, one for an FNH in
+old code..
+
+------------------------------------------------------------------------
+r228 | boldo | 1999-06-30 14:55:48 +0000 (Wed, 30 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+new bug
+
+------------------------------------------------------------------------
+r227 | boldo | 1999-06-30 13:30:46 +0000 (Wed, 30 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+there were some conflicts
+
+------------------------------------------------------------------------
+r226 | boldo | 1999-06-30 13:30:25 +0000 (Wed, 30 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+there were some conflicts
+
+------------------------------------------------------------------------
+r225 | boldo | 1999-06-30 13:29:47 +0000 (Wed, 30 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/log.c
+
+memory gestion
+
+------------------------------------------------------------------------
+r224 | zimmerma | 1999-06-29 17:53:45 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tzeta.c
+
+replaced outputs by direct comparison when no argument
+
+------------------------------------------------------------------------
+r223 | zimmerma | 1999-06-29 17:46:38 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+modified to do only certified test when no argument
+
+------------------------------------------------------------------------
+r222 | zimmerma | 1999-06-29 17:27:34 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+modified to do only tests with precomputed values when no argument
+
+------------------------------------------------------------------------
+r221 | zimmerma | 1999-06-29 16:13:33 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+does exact rounding only for n=0
+
+------------------------------------------------------------------------
+r220 | remy | 1999-06-29 15:59:22 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added zeta/tzeta
+
+------------------------------------------------------------------------
+r219 | remy | 1999-06-29 15:58:51 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototypes for mpfr_exp and mpfr_zeta
+
+------------------------------------------------------------------------
+r218 | remy | 1999-06-29 15:58:05 +0000 (Tue, 29 Jun 1999) | 3 lines
+Changed paths:
+ A /trunk/zeta.c
+
+computes Riemann function Zeta(s)
+first version: only works for s=2 with PREC(result)=53 and rnd_mode=nearest
+
+------------------------------------------------------------------------
+r217 | remy | 1999-06-29 15:57:01 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tzeta.c
+
+test file for mpfr_zeta
+
+------------------------------------------------------------------------
+r216 | remy | 1999-06-29 15:49:15 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added prototype for mpfr_set_default_prec
+
+------------------------------------------------------------------------
+r215 | remy | 1999-06-29 15:40:28 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/zeta2.c
+
+file renamed zeta.c
+
+------------------------------------------------------------------------
+r214 | remy | 1999-06-29 15:26:33 +0000 (Tue, 29 Jun 1999) | 3 lines
+Changed paths:
+ A /trunk/zeta2.c
+
+first version: computes Zeta(2) with fixed precision 53 bits and round
+to nearest
+
+------------------------------------------------------------------------
+r213 | hanrot | 1999-06-29 14:48:29 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Patch in the case when the number of bits is a multiple of the word size.
+
+------------------------------------------------------------------------
+r212 | hanrot | 1999-06-29 14:47:58 +0000 (Tue, 29 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+Patch in the case when the low words of the product are zero.
+
+------------------------------------------------------------------------
+r211 | zimmerma | 1999-06-28 13:51:15 +0000 (Mon, 28 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+changed arguments of mpfr_round_raw (continued)
+
+------------------------------------------------------------------------
+r210 | zimmerma | 1999-06-28 13:48:44 +0000 (Mon, 28 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+ M /trunk/mpfr.texi
+ M /trunk/mul.c
+ M /trunk/mul_ui.c
+ M /trunk/random.c
+ M /trunk/round.c
+ M /trunk/set.c
+
+changed arguments of mpfr_round_raw (now uses precision instead of size)
+
+------------------------------------------------------------------------
+r209 | zimmerma | 1999-06-28 11:50:04 +0000 (Mon, 28 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tpi.c
+
+modified wrt warnings at compilation
+
+------------------------------------------------------------------------
+r208 | zimmerma | 1999-06-28 11:49:08 +0000 (Mon, 28 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+modified description of mpfr_get_str for n_digits=0
+
+------------------------------------------------------------------------
+r207 | zimmerma | 1999-06-28 11:48:15 +0000 (Mon, 28 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+now performs an exact output when n_digits=0
+
+------------------------------------------------------------------------
+r206 | hanrot | 1999-06-28 07:37:06 +0000 (Mon, 28 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+Yet another corrected prototype.
+
+------------------------------------------------------------------------
+r205 | hanrot | 1999-06-25 17:36:57 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/add_ulp.c
+ M /trunk/agm.c
+ M /trunk/cmp.c
+ M /trunk/cmp_ui.c
+ M /trunk/div.c
+ M /trunk/div_2exp.c
+ M /trunk/div_ui.c
+ M /trunk/exp.c
+ M /trunk/get_str.c
+ M /trunk/log.c
+ M /trunk/log2.c
+ M /trunk/mpfr.h
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/out_str.c
+ M /trunk/pi.c
+ M /trunk/pow.c
+ M /trunk/print_raw.c
+ M /trunk/print_rnd_mode.c
+ M /trunk/random.c
+ M /trunk/rnd_mode.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_d.c
+ M /trunk/set_f.c
+ M /trunk/set_si.c
+ M /trunk/set_str_raw.c
+ M /trunk/set_z.c
+ M /trunk/sqrt.c
+ M /trunk/sub.c
+
+Prototypes et quelques causes de warnings corriges.
+
+------------------------------------------------------------------------
+r204 | hanrot | 1999-06-25 17:20:06 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Modifs cosmetiques.
+
+------------------------------------------------------------------------
+r203 | hanrot | 1999-06-25 17:19:55 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/set_str.c
+
+Fichier vide.
+
+------------------------------------------------------------------------
+r202 | zimmerma | 1999-06-25 16:30:07 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog2.c
+
+do not print anything when no argument
+
+------------------------------------------------------------------------
+r201 | zimmerma | 1999-06-25 16:20:11 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/out_str.c
+
+use GMP allocate/free functions instead of malloc/free
+
+------------------------------------------------------------------------
+r200 | zimmerma | 1999-06-25 16:08:32 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcan_round.c
+
+do not print anything on stdout
+
+------------------------------------------------------------------------
+r199 | zimmerma | 1999-06-25 16:07:34 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+put correctly sign with macro CHANGE_SIGN
+
+------------------------------------------------------------------------
+r198 | hanrot | 1999-06-25 16:00:38 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Ajoute la dépendance de libmpfr.a pour le Makefile des tests.
+
+------------------------------------------------------------------------
+r197 | zimmerma | 1999-06-25 15:54:04 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+correctly handle case sizer=1 in mpfr_set_d
+
+------------------------------------------------------------------------
+r196 | zimmerma | 1999-06-25 15:53:19 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+corrected allocated size in mpfr_round
+
+------------------------------------------------------------------------
+r195 | zimmerma | 1999-06-25 15:51:49 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+make clean does not remove config.in any more
+
+------------------------------------------------------------------------
+r194 | hanrot | 1999-06-25 15:16:10 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+Correction d'un UMR en inversant le while (sans incidence tres probablement).
+
+------------------------------------------------------------------------
+r193 | zimmerma | 1999-06-25 15:12:04 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added four tests
+
+------------------------------------------------------------------------
+r192 | zimmerma | 1999-06-25 15:07:31 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+adapted mpfr_set_d to case where allocated limbs > significant limbs
+
+------------------------------------------------------------------------
+r191 | zimmerma | 1999-06-25 15:05:10 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug for b=2^n and c very small
+
+------------------------------------------------------------------------
+r190 | hanrot | 1999-06-25 14:36:27 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Some limbs of the result where not set to zero as they should.
+
+------------------------------------------------------------------------
+r189 | zimmerma | 1999-06-25 13:32:39 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+added prototypes, and errors to stderr
+
+------------------------------------------------------------------------
+r188 | zimmerma | 1999-06-25 13:17:23 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/tests/tset_i
+
+binary file -> remove it
+
+------------------------------------------------------------------------
+r187 | zimmerma | 1999-06-25 13:16:04 +0000 (Fri, 25 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+use PREC(x) instead of ABSSIZE(x) to get number of significant limbs
+adapted to different numbers of significant limbs for x and y
+
+------------------------------------------------------------------------
+r186 | zimmerma | 1999-06-25 13:05:45 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+fixed pbs with ABSSIZE(x) wrt PREC(x) in mpfr_round
+
+------------------------------------------------------------------------
+r185 | zimmerma | 1999-06-25 13:01:20 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+added pointer to exponent, removed test with sprintf
+
+------------------------------------------------------------------------
+r184 | zimmerma | 1999-06-25 13:00:05 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+removed DEBUG stuff
+
+------------------------------------------------------------------------
+r183 | zimmerma | 1999-06-25 12:57:10 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+use PREC(x) instead of ABSSIZE(x) to get the number of significant limbs
+
+------------------------------------------------------------------------
+r182 | zimmerma | 1999-06-25 12:56:22 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_si.c
+
+do 10^6 tests if no argument
+
+------------------------------------------------------------------------
+r181 | hanrot | 1999-06-25 12:30:43 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+J'avais oublie -g...
+
+------------------------------------------------------------------------
+r180 | hanrot | 1999-06-25 12:23:51 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Ajoute des flags de paranoiaque schizophrene.
+
+------------------------------------------------------------------------
+r179 | zimmerma | 1999-06-25 11:43:25 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+now prints nothing with no argument
+
+------------------------------------------------------------------------
+r178 | zimmerma | 1999-06-25 11:22:28 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added texp and tdiv_ui
+
+------------------------------------------------------------------------
+r177 | zimmerma | 1999-06-25 11:21:30 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tdiv_ui.c
+
+test file for div_ui, initial revision
+
+------------------------------------------------------------------------
+r176 | zimmerma | 1999-06-25 10:19:42 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+commented out "avant arrondi..."
+
+------------------------------------------------------------------------
+r175 | zimmerma | 1999-06-25 10:17:40 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+clear res1/res2
+
+------------------------------------------------------------------------
+r174 | hanrot | 1999-06-25 10:17:26 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Patches an ABR.
+
+------------------------------------------------------------------------
+r173 | hanrot | 1999-06-25 10:15:54 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+Patch of an ABR.
+
+------------------------------------------------------------------------
+r172 | hanrot | 1999-06-25 10:15:21 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/pow.c
+
+Patch in the case n = 0.
+
+------------------------------------------------------------------------
+r171 | hanrot | 1999-06-25 10:14:45 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+Patch for a memory leak.
+
+------------------------------------------------------------------------
+r170 | zimmerma | 1999-06-25 10:13:14 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added two tests for exact roots
+
+------------------------------------------------------------------------
+r169 | zimmerma | 1999-06-25 10:12:11 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+removed DEBUG stuff and fixed pb with exact root and GMP_RNDZ
+
+------------------------------------------------------------------------
+r168 | hanrot | 1999-06-25 09:42:53 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+Correction d'un ABR.
+
+------------------------------------------------------------------------
+r167 | zimmerma | 1999-06-25 09:38:52 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tpi.c
+
+added test for prec=53 bits, removed output for argc==1
+
+------------------------------------------------------------------------
+r166 | hanrot | 1999-06-25 09:28:43 +0000 (Fri, 25 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tcan_round.c
+
+Initial revision.
+
+------------------------------------------------------------------------
+r165 | hanrot | 1999-06-24 12:22:57 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/sub.c
+
+Patched an Array Bound Read.
+
+------------------------------------------------------------------------
+r164 | hanrot | 1999-06-24 12:10:00 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Corrected an Array Bound Read when all the bits are significative.
+
+------------------------------------------------------------------------
+r163 | zimmerma | 1999-06-24 12:00:31 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp_ui.c
+
+i -> s in tests on mpfr_cmp_si
+
+------------------------------------------------------------------------
+r162 | zimmerma | 1999-06-24 11:59:05 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+
+fixed pb in mpfr_cmp_si_2exp (case b=0 or i=0)
+
+------------------------------------------------------------------------
+r161 | zimmerma | 1999-06-24 11:55:25 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+& -> &&
+
+------------------------------------------------------------------------
+r160 | zimmerma | 1999-06-24 11:40:48 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tcmp.c
+ M /trunk/tests/tset_str.c
+
+removed 3rd arg. of mpfr_set_prec
+
+------------------------------------------------------------------------
+r159 | zimmerma | 1999-06-24 11:37:54 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+treats case b=c in mpfr_sub(a,b,c)
+
+------------------------------------------------------------------------
+r158 | zimmerma | 1999-06-24 11:36:43 +0000 (Thu, 24 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+removed 3rd argument in mpfr_set_prec
+reallocates only when more limbs are needed
+
+------------------------------------------------------------------------
+r157 | zimmerma | 1999-06-24 11:34:22 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/exp.c
+ M /trunk/log2.c
+
+removed 3rd arg. of mpfr_set_prec
+
+------------------------------------------------------------------------
+r156 | zimmerma | 1999-06-24 11:32:11 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+added some mpfr_clear's that were missing
+
+------------------------------------------------------------------------
+r155 | zimmerma | 1999-06-24 10:16:54 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+removed 3rd argument from mpfr_set_prec
+
+------------------------------------------------------------------------
+r154 | zimmerma | 1999-06-24 10:12:43 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+ M /trunk/sqrt.c
+
+removed 3rd argument of mpfr_set_prec
+
+------------------------------------------------------------------------
+r153 | zimmerma | 1999-06-24 10:09:40 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed prototype of mpfr_set_prec (no rounding mode needed any more)
+
+------------------------------------------------------------------------
+r152 | zimmerma | 1999-06-24 07:57:30 +0000 (Thu, 24 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+added test for case of missing exponent
+and if one argument, print it as a double
+
+------------------------------------------------------------------------
+r151 | zimmerma | 1999-06-24 07:56:19 +0000 (Thu, 24 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+fixed bug when exponent was missing (wrong result when part before
+binary point is not zero)
+
+------------------------------------------------------------------------
+r150 | zimmerma | 1999-06-24 07:47:59 +0000 (Thu, 24 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added tests from JM Muller and V Lefevre
+
+------------------------------------------------------------------------
+r149 | zimmerma | 1999-06-23 16:37:03 +0000 (Wed, 23 Jun 1999) | 4 lines
+Changed paths:
+ M /trunk/round.c
+
+corrected bad case in mpfr_can_round_raw where rnd1=GMP_RNDN
+and err is a multiple of BITS_PER_MP_LIMB (was modifying an
+extra limb perhaps not allocated)
+
+------------------------------------------------------------------------
+r148 | boldo | 1999-06-23 16:02:24 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+qq bugs d'arrondis
+
+------------------------------------------------------------------------
+r147 | zimmerma | 1999-06-23 15:57:14 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added exp and div_ui
+
+------------------------------------------------------------------------
+r146 | zimmerma | 1999-06-23 15:56:35 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/texp.c
+
+added test of exp(Pi*sqrt(163)/3)-640320 [texp 0.0 prec]
+
+------------------------------------------------------------------------
+r145 | zimmerma | 1999-06-23 15:44:33 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/texp.c
+
+test file for mpfr_exp, initial revision
+
+------------------------------------------------------------------------
+r144 | zimmerma | 1999-06-23 13:02:11 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+added two tests
+
+------------------------------------------------------------------------
+r143 | zimmerma | 1999-06-23 12:57:56 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_str.c
+
+removed printf's and added one test for leading '+'
+
+------------------------------------------------------------------------
+r142 | zimmerma | 1999-06-23 12:56:26 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_str_raw.c
+
+now allows leading '+'
+
+------------------------------------------------------------------------
+r141 | boldo | 1999-06-23 11:34:03 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+nettoye
+
+------------------------------------------------------------------------
+r140 | zimmerma | 1999-06-23 10:00:37 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tset_f.c
+
+removed printf
+
+------------------------------------------------------------------------
+r139 | zimmerma | 1999-06-23 10:00:05 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+ M /trunk/tests/tmul_ui.c
+
+removed printf's
+
+------------------------------------------------------------------------
+r138 | zimmerma | 1999-06-23 09:59:31 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+added tests for large precision (tlog x prec rnd)
+
+------------------------------------------------------------------------
+r137 | zimmerma | 1999-06-23 09:58:29 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added test for exact division
+
+------------------------------------------------------------------------
+r136 | zimmerma | 1999-06-23 09:57:57 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tcmp2.c
+
+mpfr_cmp -> mpfr_cmp2
+
+------------------------------------------------------------------------
+r135 | zimmerma | 1999-06-23 09:57:23 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+removed printf, added exit on error
+
+------------------------------------------------------------------------
+r134 | zimmerma | 1999-06-23 09:55:43 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/exp.c
+
+initial revision
+
+------------------------------------------------------------------------
+r133 | zimmerma | 1999-06-23 09:50:41 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+cleaned local variables
+
+------------------------------------------------------------------------
+r132 | zimmerma | 1999-06-23 09:49:07 +0000 (Wed, 23 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed prototype of mpfr_div (now returns int)
+
+------------------------------------------------------------------------
+r131 | zimmerma | 1999-06-23 09:47:12 +0000 (Wed, 23 Jun 1999) | 4 lines
+Changed paths:
+ M /trunk/div.c
+
+now deals correctly with exact division
+removed DEBUG stuff
+returns 0/1 according to exact division
+
+------------------------------------------------------------------------
+r130 | zimmerma | 1999-06-22 17:12:20 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+fixed bug found by F. Rouillier: x * Z(2/x) -> 0 [carry from mpfr_round_raw]
+
+------------------------------------------------------------------------
+r129 | hanrot | 1999-06-22 13:33:35 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+Fill with 0 the part added in case of a larger reallocation.
+
+------------------------------------------------------------------------
+r128 | hanrot | 1999-06-22 12:39:01 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+Rajoute le bug report de Fabrice.
+
+------------------------------------------------------------------------
+r127 | zimmerma | 1999-06-22 12:18:25 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+fixed bug in mpfr_can_round when prec or err are multiples of BITS_PER_MP_LIMB
+
+------------------------------------------------------------------------
+r126 | zimmerma | 1999-06-22 12:16:28 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul.c
+
+added test to check sign of result
+
+------------------------------------------------------------------------
+r125 | zimmerma | 1999-06-22 12:14:44 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+fixed bug: wrong sign when SIGN(a)<0 at beginning
+
+------------------------------------------------------------------------
+r124 | boldo | 1999-06-22 09:51:16 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+avec plein de cas d'erreurs
+
+------------------------------------------------------------------------
+r123 | boldo | 1999-06-22 09:47:20 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/log.c
+
+marche bien
+
+------------------------------------------------------------------------
+r122 | boldo | 1999-06-22 09:47:04 +0000 (Tue, 22 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+Marche bien
+
+------------------------------------------------------------------------
+r121 | hanrot | 1999-06-21 16:00:30 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Corrected prototype of mpfr_can_round_raw.
+
+------------------------------------------------------------------------
+r120 | hanrot | 1999-06-21 16:00:11 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Various patches.
+
+------------------------------------------------------------------------
+r119 | hanrot | 1999-06-21 15:39:24 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Added prototype for mpfr_can_round_raw
+
+------------------------------------------------------------------------
+r118 | hanrot | 1999-06-21 15:34:57 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Added mpfr_can_round_raw ; mpfr_can_round just calls it.
+
+------------------------------------------------------------------------
+r117 | hanrot | 1999-06-21 15:26:56 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Declaration mpfr_print_rnd_mode.c
+
+------------------------------------------------------------------------
+r116 | hanrot | 1999-06-21 15:26:39 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/print_rnd_mode.c
+
+print_rnd_mode.c -> mpfr_print_rnd_mode.c
+
+------------------------------------------------------------------------
+r115 | hanrot | 1999-06-21 15:07:36 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/print_rnd_mode.c
+
+Print the rounding mode.
+
+------------------------------------------------------------------------
+r114 | hanrot | 1999-06-21 13:45:56 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_prec.c
+
+Changement de semantique (plus d'arrondi) et alloc + free -> realloc.
+
+------------------------------------------------------------------------
+r113 | zimmerma | 1999-06-21 11:28:36 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/div_ui.c
+
+initial revision
+
+------------------------------------------------------------------------
+r112 | zimmerma | 1999-06-21 11:27:29 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_ui.c
+
+added one test
+
+------------------------------------------------------------------------
+r111 | zimmerma | 1999-06-21 11:24:33 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set.c
+
+now deal with carry from mpfr_round_raw
+
+------------------------------------------------------------------------
+r110 | zimmerma | 1999-06-21 11:17:13 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+fixed problem with count_leading_zeros undefined for 0
+
+------------------------------------------------------------------------
+r109 | zimmerma | 1999-06-21 11:16:02 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+
+store computed value and try to reuse it for next calls
+
+------------------------------------------------------------------------
+r108 | zimmerma | 1999-06-21 11:14:46 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+added test cn>= in mpfr_cmp2
+
+------------------------------------------------------------------------
+r107 | zimmerma | 1999-06-21 11:12:33 +0000 (Mon, 21 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add_ulp.c
+
+added mpfr_sub_one_ulp
+
+------------------------------------------------------------------------
+r106 | boldo | 1999-06-18 11:53:03 +0000 (Fri, 18 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tagm.c
+
+tests par rapport aux doubles
+
+------------------------------------------------------------------------
+r105 | boldo | 1999-06-18 11:52:31 +0000 (Fri, 18 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tlog.c
+
+pour decouvrir les erreurs
+
+------------------------------------------------------------------------
+r104 | boldo | 1999-06-18 11:51:52 +0000 (Fri, 18 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/log.c
+
+version qui marche
+
+------------------------------------------------------------------------
+r103 | zimmerma | 1999-06-18 10:15:11 +0000 (Fri, 18 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul.c
+
+special cases NaN and 0
+
+------------------------------------------------------------------------
+r102 | zimmerma | 1999-06-18 09:56:15 +0000 (Fri, 18 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+fixed a few errors
+
+------------------------------------------------------------------------
+r101 | zimmerma | 1999-06-17 14:26:21 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+added tests for n=0 and d=0
+
+------------------------------------------------------------------------
+r100 | zimmerma | 1999-06-17 14:25:49 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added test for 0.0/1.0
+
+------------------------------------------------------------------------
+r99 | zimmerma | 1999-06-17 12:48:38 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+SET_NAN(q) -> SET_NAN(Q)
+
+------------------------------------------------------------------------
+r98 | zimmerma | 1999-06-17 12:48:05 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one exact root with rounding towards zero
+
+------------------------------------------------------------------------
+r97 | zimmerma | 1999-06-17 12:45:54 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tout_str.c
+
+added one test
+
+------------------------------------------------------------------------
+r96 | zimmerma | 1999-06-17 12:45:00 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added two tests
+
+------------------------------------------------------------------------
+r95 | zimmerma | 1999-06-17 12:36:52 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+patch to detect exact roots (otherwise problem with rounding to zero)
+
+------------------------------------------------------------------------
+r94 | zimmerma | 1999-06-17 10:14:11 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed way zero is represented : most sign. limb is zero
+
+------------------------------------------------------------------------
+r93 | zimmerma | 1999-06-17 09:56:49 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_si.c
+
+added special case for zero
+
+------------------------------------------------------------------------
+r92 | zimmerma | 1999-06-17 09:56:06 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+
+special case for zero
+
+------------------------------------------------------------------------
+r91 | zimmerma | 1999-06-17 09:55:24 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/out_str.c
+
+special cases for NaN and zero
+
+------------------------------------------------------------------------
+r90 | zimmerma | 1999-06-17 09:54:47 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+special case when one of the arguments is zero
+
+------------------------------------------------------------------------
+r89 | zimmerma | 1999-06-17 09:25:41 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added bug found by S. Boldo and fixed (pb in mpfr_round_raw2)
+
+------------------------------------------------------------------------
+r88 | zimmerma | 1999-06-17 09:24:51 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+fixed bug in mpfr_round_raw2 which was returning other values than 0 or 1
+
+------------------------------------------------------------------------
+r87 | hanrot | 1999-06-17 09:07:25 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+
+Corrected a potential problem in add(a, a, a);
+
+------------------------------------------------------------------------
+r86 | hanrot | 1999-06-17 09:06:26 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+Corrected a potential problem in sub(a, a, a);
+
+------------------------------------------------------------------------
+r85 | zimmerma | 1999-06-17 08:56:14 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+SET_NAN(x) -> SET_NAN(X)
+
+------------------------------------------------------------------------
+r84 | hanrot | 1999-06-17 08:49:43 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp.c
+
+Patch in cmp2 for some dirty cases (2^a + 2^b <-> 2^a + z, z << 2^a, b << a)
+
+------------------------------------------------------------------------
+r83 | zimmerma | 1999-06-17 08:23:06 +0000 (Thu, 17 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added test to check bug found by JL Remy
+
+------------------------------------------------------------------------
+r82 | zimmerma | 1999-06-17 08:22:11 +0000 (Thu, 17 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/sub.c
+
+added TMP_DECL/TMP_MARK/TMP_FREE in mpfr_sub1 to deal with case
+where destination=source
+
+------------------------------------------------------------------------
+r81 | hanrot | 1999-06-16 18:07:21 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+Bug dans set_d(0) ; la mantisse n'est pas initialisee a 0 correctement.
+
+------------------------------------------------------------------------
+r80 | hanrot | 1999-06-16 14:05:13 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/mul.c
+
+Gere differemment les problemes d'egalite entre destinations et arguments.
+
+------------------------------------------------------------------------
+r79 | hanrot | 1999-06-16 11:42:18 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Rajoute log.o et tlog
+
+------------------------------------------------------------------------
+r78 | hanrot | 1999-06-16 11:06:37 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/tests/mon_fichier
+
+Vire fichier inutile.
+
+------------------------------------------------------------------------
+r77 | zimmerma | 1999-06-16 10:56:24 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added new tests
+
+------------------------------------------------------------------------
+r76 | zimmerma | 1999-06-16 10:55:39 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+fixed bug for overlap=k*mp_bits_per_limb, k>=1
+
+------------------------------------------------------------------------
+r75 | hanrot | 1999-06-16 09:54:52 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/tests/Makefile
+
+Vire Makefile de CVS.
+
+------------------------------------------------------------------------
+r74 | hanrot | 1999-06-16 09:54:15 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/Makefile
+ D /trunk/Makefile.exp
+ D /trunk/Makefile.msb
+
+Vire les Makefile de CVS.
+
+------------------------------------------------------------------------
+r73 | zimmerma | 1999-06-16 09:48:59 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+added one test and random init.
+
+------------------------------------------------------------------------
+r72 | zimmerma | 1999-06-16 09:48:17 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tdiv.c
+
+added one test
+
+------------------------------------------------------------------------
+r71 | zimmerma | 1999-06-16 09:47:18 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tadd.c
+
+added tests for cases where destination = source
+
+------------------------------------------------------------------------
+r70 | zimmerma | 1999-06-16 09:46:10 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/sub.c
+
+cases NaN and destination=source
+
+------------------------------------------------------------------------
+r69 | zimmerma | 1999-06-16 09:45:22 +0000 (Wed, 16 Jun 1999) | 3 lines
+Changed paths:
+ M /trunk/sqrt.c
+
+now iterates if one cannot round after 1st try,
+and deals with case destination = source
+
+------------------------------------------------------------------------
+r68 | zimmerma | 1999-06-16 09:43:32 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+mpfr_can_round again and again
+
+------------------------------------------------------------------------
+r67 | zimmerma | 1999-06-16 09:42:45 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/print_raw.c
+
+added case of NaN
+
+------------------------------------------------------------------------
+r66 | zimmerma | 1999-06-16 09:41:54 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added macro SET_ZERO
+
+------------------------------------------------------------------------
+r65 | zimmerma | 1999-06-16 09:40:52 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/div.c
+
+now allows destination = source
+
+------------------------------------------------------------------------
+r64 | hanrot | 1999-06-16 08:05:44 +0000 (Wed, 16 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/tests/tget_str
+ D /trunk/tests/tmul
+ D /trunk/tests/tmul_2exp
+ D /trunk/tests/tmul_ui
+ D /trunk/tests/tround
+ D /trunk/tests/tset_d
+ D /trunk/tests/tset_f
+ D /trunk/tests/tset_str
+ D /trunk/tests/tsqrt
+
+Vire les tests de cvs.
+
+------------------------------------------------------------------------
+r63 | zimmerma | 1999-06-15 16:44:19 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/div.c
+
+printf -> fprintf
+
+------------------------------------------------------------------------
+r62 | zimmerma | 1999-06-15 16:32:41 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/add.c
+ M /trunk/div.c
+
+error message when destination equals source (case not yet treated)
+
+------------------------------------------------------------------------
+r61 | zimmerma | 1999-06-15 16:27:26 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+now uses the given rounding mode internally instead of always GMP_RNDZ
+
+------------------------------------------------------------------------
+r60 | zimmerma | 1999-06-15 16:26:06 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/pi.c
+
+now rounding to nearest should be correct
+
+------------------------------------------------------------------------
+r59 | hanrot | 1999-06-15 16:19:56 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Encore et toujours mpfr_can_round...
+
+------------------------------------------------------------------------
+r58 | hanrot | 1999-06-15 15:38:51 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ D /trunk/o.solaris
+ D /trunk/tests/tadd
+ D /trunk/tests/tagm
+ D /trunk/tests/tcmp
+ D /trunk/tests/tcmp2
+ D /trunk/tests/tcmp_ui
+ D /trunk/tests/tdiv
+
+Nettoyage.
+
+------------------------------------------------------------------------
+r57 | hanrot | 1999-06-15 14:43:14 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Patch pour mpfr_can_round.
+
+------------------------------------------------------------------------
+r56 | boldo | 1999-06-15 14:40:51 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+sans instructions de debuggage
+
+------------------------------------------------------------------------
+r55 | boldo | 1999-06-15 13:53:11 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Makefile
+
+rajout de log.o et tlog
+
+------------------------------------------------------------------------
+r54 | boldo | 1999-06-15 13:52:43 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile
+
+rajout de tlog
+
+------------------------------------------------------------------------
+r53 | boldo | 1999-06-15 13:41:24 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+ajout du log
+
+------------------------------------------------------------------------
+r52 | boldo | 1999-06-15 13:24:51 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tlog.c
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r51 | boldo | 1999-06-15 13:22:09 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/log.c
+
+premiere version du log
+
+------------------------------------------------------------------------
+r50 | zimmerma | 1999-06-15 13:11:10 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/div.c
+
+now recognizes division by exact power of 2
+
+------------------------------------------------------------------------
+r49 | zimmerma | 1999-06-15 13:10:21 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/cmp_ui.c
+
+added mpfr_cmp_[us]i_2exp
+
+------------------------------------------------------------------------
+r48 | zimmerma | 1999-06-15 12:53:07 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added mpfr_[us]i_2exp
+
+------------------------------------------------------------------------
+r47 | zimmerma | 1999-06-15 12:52:33 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added mpfr_cmp_[us]i_2exp
+
+------------------------------------------------------------------------
+r46 | hanrot | 1999-06-15 12:06:32 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/random.c
+
+Correction de bug (pas msb normalise).
+
+------------------------------------------------------------------------
+r45 | zimmerma | 1999-06-15 10:04:12 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/pi.c
+
+fixed mistake in error analysis (does not change code)
+
+------------------------------------------------------------------------
+r44 | hanrot | 1999-06-15 09:26:56 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+Ajout de random.o dans les objets.
+
+------------------------------------------------------------------------
+r43 | hanrot | 1999-06-15 09:26:26 +0000 (Tue, 15 Jun 1999) | 3 lines
+Changed paths:
+ A /trunk/random.c
+
+random.c : engendre un mpfr_t dans [0, 1[. GH, 15/06
+TODO : un random qui engendre un mpfr_t avec exposant gaussien centre.
+
+------------------------------------------------------------------------
+r42 | remy | 1999-06-15 09:17:44 +0000 (Tue, 15 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/log2.c
+ M /trunk/pi.c
+
+changed return value to void
+
+------------------------------------------------------------------------
+r41 | hanrot | 1999-06-14 16:35:25 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/round.c
+
+Ajoute les modes d'arrondi RNDN et RNDD.
+
+------------------------------------------------------------------------
+r40 | hanrot | 1999-06-14 13:14:43 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mul_ui.c
+
+Correction du prototype de mpfr_mul_ui
+
+------------------------------------------------------------------------
+r39 | hanrot | 1999-06-14 11:11:55 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+Correction du prototype de mpfr_mul_ui
+
+------------------------------------------------------------------------
+r38 | boldo | 1999-06-14 10:18:01 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r37 | zimmerma | 1999-06-14 07:51:59 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Configure
+
+added several files
+
+------------------------------------------------------------------------
+r36 | zimmerma | 1999-06-14 07:51:28 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added several prototypes
+
+------------------------------------------------------------------------
+r35 | zimmerma | 1999-06-14 07:50:36 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.texi
+
+added set_z, add_one_ulp
+
+------------------------------------------------------------------------
+r34 | zimmerma | 1999-06-14 07:49:06 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/set_d.c
+
+added mpfr_get_d2 which only considers the mantissa
+
+------------------------------------------------------------------------
+r33 | zimmerma | 1999-06-14 07:48:10 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+now uses mpfr_get_d2 (no side effect on arguments)
+
+------------------------------------------------------------------------
+r32 | zimmerma | 1999-06-14 07:46:10 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tlog2.c
+
+test file for mpfr_log2
+
+------------------------------------------------------------------------
+r31 | zimmerma | 1999-06-14 07:45:27 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tset_z.c
+
+test file for mpfr_set_z
+
+------------------------------------------------------------------------
+r30 | zimmerma | 1999-06-14 07:44:42 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tpi.c
+
+test file for mpfr_pi
+
+------------------------------------------------------------------------
+r29 | zimmerma | 1999-06-14 07:43:57 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/log2.c
+
+computes log(2)
+
+------------------------------------------------------------------------
+r28 | zimmerma | 1999-06-14 07:43:22 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/add_ulp.c
+
+add one ulp
+
+------------------------------------------------------------------------
+r27 | zimmerma | 1999-06-14 07:42:12 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/set_z.c
+
+set a mpfr from an integer
+
+------------------------------------------------------------------------
+r26 | zimmerma | 1999-06-14 07:41:33 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/pi.c
+
+computes Pi to n bits
+
+------------------------------------------------------------------------
+r25 | boldo | 1999-06-14 07:41:29 +0000 (Mon, 14 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r24 | zimmerma | 1999-06-11 08:08:35 +0000 (Fri, 11 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/mpfr.texi
+
+Initial revision of mpfr documentation
+
+------------------------------------------------------------------------
+r23 | hanrot | 1999-06-10 18:47:44 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tsqrt.c
+
+Patch d'un mpfr_set_d dans tsqrt.c ; GH, 100699
+
+------------------------------------------------------------------------
+r22 | hanrot | 1999-06-10 18:47:09 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tget_str.c
+
+Patch d'un mpfr_set_d dans get_str.c ; GH, 100699
+
+------------------------------------------------------------------------
+r21 | hanrot | 1999-06-10 18:46:03 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/Configure
+
+Tentative de configuration automatique, v. initiale. GH, 100699
+
+------------------------------------------------------------------------
+r20 | boldo | 1999-06-10 16:36:13 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/agm.c
+ M /trunk/tests/tagm.c
+
+*** empty log message ***
+
+------------------------------------------------------------------------
+r19 | zimmerma | 1999-06-10 09:20:04 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Makefile
+
+added tout_str
+
+------------------------------------------------------------------------
+r18 | zimmerma | 1999-06-10 09:19:38 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/tests/tout_str.c
+
+Initial revision.
+
+------------------------------------------------------------------------
+r17 | zimmerma | 1999-06-10 09:13:55 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/Makefile
+
+added out_str.c and pow.c
+
+------------------------------------------------------------------------
+r16 | zimmerma | 1999-06-10 09:13:26 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added proto for mpfr_pow_ui and mpfr_ui_pow_ui
+
+------------------------------------------------------------------------
+r15 | zimmerma | 1999-06-10 09:09:09 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/pow.c
+
+Initial revision.
+
+------------------------------------------------------------------------
+r14 | zimmerma | 1999-06-10 09:05:05 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/clear.c
+ M /trunk/div_2exp.c
+ M /trunk/mul.c
+ M /trunk/mul_2exp.c
+ M /trunk/mul_ui.c
+ M /trunk/neg.c
+ M /trunk/round.c
+ M /trunk/set.c
+ M /trunk/set_f.c
+ M /trunk/set_si.c
+
+added include <stdio.h> (needed for FILE in mpfr.h)
+
+------------------------------------------------------------------------
+r13 | zimmerma | 1999-06-10 08:59:38 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+added proto for mpfr_out_str
+
+------------------------------------------------------------------------
+r12 | zimmerma | 1999-06-10 08:58:23 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/out_str.c
+
+function to print a mpfr to a stream. Initial revision.
+
+------------------------------------------------------------------------
+r11 | zimmerma | 1999-06-10 08:56:27 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mpfr.h
+
+changed proto of mpfr_get_str: 2nd arg is mp_exp_t*, not char*
+
+------------------------------------------------------------------------
+r10 | zimmerma | 1999-06-10 08:53:22 +0000 (Thu, 10 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/get_str.c
+
+now conforms to the specification
+
+------------------------------------------------------------------------
+r9 | hanrot | 1999-06-09 18:37:25 +0000 (Wed, 09 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/Makefile
+
+tset_i -> tset_si dans le Makefile de tests.
+
+------------------------------------------------------------------------
+r8 | hanrot | 1999-06-09 18:36:50 +0000 (Wed, 09 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/mmpfr
+
+Version corrigee de mmpfr.
+
+------------------------------------------------------------------------
+r7 | hanrot | 1999-06-09 18:36:28 +0000 (Wed, 09 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/Makefile
+
+Makefile qui devrait fonctionner pour tous.
+
+------------------------------------------------------------------------
+r6 | hanrot | 1999-06-09 18:33:34 +0000 (Wed, 09 Jun 1999) | 2 lines
+Changed paths:
+ M /trunk/tests/tmul_2exp.c
+
+Correction de warnings dans tmul_2exp.c
+
+------------------------------------------------------------------------
+r2 | hanrot | 1999-06-09 18:03:33 +0000 (Wed, 09 Jun 1999) | 2 lines
+Changed paths:
+ A /trunk/.pure
+ A /trunk/BUGS
+ A /trunk/Makefile.exp
+ A /trunk/Makefile.msb
+ A /trunk/TODO
+ A /trunk/add.c
+ A /trunk/agm.c
+ A /trunk/clear.c
+ A /trunk/cmp.c
+ A /trunk/cmp_ui.c
+ A /trunk/div.c
+ A /trunk/div_2exp.c
+ A /trunk/from_Torbjorn
+ A /trunk/get_str.c
+ A /trunk/init.c
+ A /trunk/init_set.h
+ A /trunk/mmpfr
+ A /trunk/mpfr.h
+ A /trunk/mul.c
+ A /trunk/mul_2exp.c
+ A /trunk/mul_ui.c
+ A /trunk/neg.c
+ A /trunk/o.solaris
+ A /trunk/o.solaris/.pure
+ A /trunk/print_raw.c
+ A /trunk/rnd_mode.c
+ A /trunk/round.c
+ A /trunk/set.c
+ A /trunk/set_d.c
+ A /trunk/set_dfl_prec.c
+ A /trunk/set_dfl_rnd.c
+ A /trunk/set_f.c
+ A /trunk/set_prec.c
+ A /trunk/set_si.c
+ A /trunk/set_str.c
+ A /trunk/set_str_raw.c
+ A /trunk/sqrt.c
+ A /trunk/sub.c
+ A /trunk/tests
+ A /trunk/tests/Makefile
+ A /trunk/tests/mon_fichier
+ A /trunk/tests/tadd
+ A /trunk/tests/tadd.c
+ A /trunk/tests/tagm
+ A /trunk/tests/tagm.c
+ A /trunk/tests/tcmp
+ A /trunk/tests/tcmp.c
+ A /trunk/tests/tcmp2
+ A /trunk/tests/tcmp2.c
+ A /trunk/tests/tcmp_ui
+ A /trunk/tests/tcmp_ui.c
+ A /trunk/tests/tdiv
+ A /trunk/tests/tdiv.c
+ A /trunk/tests/tget_str
+ A /trunk/tests/tget_str.c
+ A /trunk/tests/tmul
+ A /trunk/tests/tmul.c
+ A /trunk/tests/tmul_2exp
+ A /trunk/tests/tmul_2exp.c
+ A /trunk/tests/tmul_ui
+ A /trunk/tests/tmul_ui.c
+ A /trunk/tests/tround
+ A /trunk/tests/tround.c
+ A /trunk/tests/tset_d
+ A /trunk/tests/tset_d.c
+ A /trunk/tests/tset_f
+ A /trunk/tests/tset_f.c
+ A /trunk/tests/tset_i
+ A /trunk/tests/tset_si.c
+ A /trunk/tests/tset_str
+ A /trunk/tests/tset_str.c
+ A /trunk/tests/tsqrt
+ A /trunk/tests/tsqrt.c
+
+Initial revision
+
+------------------------------------------------------------------------
+r1 | (no author) | 1999-06-09 18:03:33 +0000 (Wed, 09 Jun 1999) | 1 line
+Changed paths:
+ A /branches
+ A /tags
+ A /trunk
+
+New repository initialized by cvs2svn.
+------------------------------------------------------------------------
diff --git a/Build/source/libs/mpfr/mpfr-src/INSTALL b/Build/source/libs/mpfr/mpfr-src/INSTALL
new file mode 100644
index 00000000000..442ff3f9436
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/INSTALL
@@ -0,0 +1,660 @@
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+
+ Installing GNU MPFR
+ ===================
+
+Note: In case of problem, please read this INSTALL file carefully before
+reporting a bug, in particular Section "In case of problem" below. Some
+problems are due to bad configuration on the user side (not specific to
+MPFR).
+
+0. You first need to install GMP. See <http://www.gnu.org/software/gmp/>.
+ MPFR requires GMP version 4.1 or later.
+
+1. Extract the files from the archive.
+
+2. It is strongly advised to apply the latest patches if this has
+ not been done yet and if patches are available. You can check
+ on the release page:
+
+ http://www.mpfr.org/mpfr-3.1.3/
+
+ which may have additional information. The patches can be applied
+ with commands like:
+
+ wget http://www.mpfr.org/mpfr-3.1.3/allpatches
+ patch -N -Z -p1 < allpatches
+
+ or
+
+ curl http://www.mpfr.org/mpfr-3.1.3/allpatches | patch -N -Z -p1
+
+ (Those instructions are for the GNU patch command, for example
+ /usr/bin/gpatch on Solaris.)
+
+3. In the MPFR directory, to detect your system, type:
+ ./configure
+ possibly with options (see below, in particular if this step or
+ one of the following fails). You should also check whether WARNING
+ lines have been output (such a problem may cause a failure in one
+ of the following steps).
+ Note: paths provided in configure options must always be absolute
+ (relative paths are not supported).
+
+4. To build the library, type:
+ make
+
+ [optional] if you want to tune MPFR for your specific architecture, see
+ the section "Tuning MPFR" below. Note that for most common architectures,
+ MPFR includes some default tuning parameters which should be near from
+ optimal.
+
+5. To check the built library (runs the test files), type:
+ make check
+
+ Note: If any test fails, information about this failure can be found in
+ the tests/test-suite.log file; you should provide this file in your bug
+ reports (in addition to other useful information, as mentioned later).
+ If you want the contents of this file to be automatically output in case
+ of failure, you can set the VERBOSE environment variable to 1 before
+ running "make check", for instance by typing:
+ VERBOSE=1 make check
+
+6. To install it (default "/usr/local" | see "--prefix" option), type:
+ make install
+
+If you installed MPFR (header and library) in directories that are
+not searched by default by the compiler and/or linking tools, then,
+like with other libraries, you may need to set up some environment
+variables such as C_INCLUDE_PATH (to find the header mpfr.h),
+LIBRARY_PATH (to find the library), and if the shared library has
+been installed, LD_LIBRARY_PATH (before execution) or LD_RUN_PATH
+(before linking); this list is not exhaustive and some environment
+variables may be specific to your system. "make install" gives some
+instructions; please read them. You can also find more information
+in the manuals of your compiler and linker. The MPFR FAQ may also
+give some information.
+
+Remember that if you have several MPFR (or GMP) versions installed
+(e.g., one with the system, and one, newer, by you), you will not
+necessarily get a compilation/linking error if a wrong library is
+used (e.g., because LD_LIBRARY_PATH has not been set correctly).
+But unexpected results may occur.
+
+Under Mac OS X, if the shared library was not installed and you use
+Apple's linker (this is the default), you will also need to provide
+the -search_paths_first linker flag ("-Wl,-search_paths_first" when
+you link via gcc) to make sure that the right library is selected,
+as by default, Apple's linker selects a shared library preferably,
+even when it is farther in the library paths. We recall that if a
+wrong library is selected due to this behavior, unexpected results
+may occur.
+
+
+Building the documentation
+==========================
+
+To build the documentation in various formats, you may first need to
+install recent versions of some utilities such as texinfo.
+
+* Type "make info" to produce the documentation in the info format.
+
+* Type "make pdf" to produce the documentation in the PDF format.
+
+* Type "make dvi" to produce the documentation in the DVI format.
+
+* Type "make ps" to produce the documentation in the Postscript format.
+
+* Type "make html" to produce the documentation in the HTML format
+ (in several pages); if you want only one output HTML file, then
+ type "makeinfo --html --no-split mpfr.texi" from the doc directory
+ instead.
+
+
+Building MPFR with internal GMP header files
+============================================
+
+MPFR built with internal GMP header files is a bit faster, so you may want
+to build it with them. Just do this in step 1:
+
+ ./configure --with-gmp-build=GMPBUILD
+
+where GMPBUILD is the GMP build directory. The needed header files are:
+gmp-impl.h, longlong.h and all the necessary headers to use them, which
+may be located either in the GMP source directory or in the GMP build
+directory, in case they are different (MPFR takes care of that, as of
+MPFR 3.1.0).
+
+Warning: the library obtained in this way may use some internal GMP
+symbols, and thus dynamically linking your software with a different
+version of GMP might fail, even though it is declared as compatible
+by Libtool's versioning system.
+
+
+Tuning MPFR
+===========
+
+For this, you need to build MPFR with a GMP build directory (see above).
+In the GMP build directory, you also need to go into the "tune" subdirectory
+and type "make speed". This will build the GMP speed library, which is used
+by the MPFR tuning mechanism.
+
+Then go back to the MPFR build directory, go into the "tune" subdirectory and
+type "make tune". This will build an optimized file "mparam.h" for your
+specific architecture.
+
+
+./configure options
+===================
+
+--prefix=DIR installs MPFR headers and library in DIR/include and
+ DIR/lib respectively (the default is "/usr/local").
+
+--with-gmp-include=DIR assumes that DIR contains gmp.h
+--with-gmp-lib=DIR assumes that DIR contains the GMP library
+--with-gmp=DIR assumes that DIR is where you have installed GMP.
+ same as --with-gmp-lib=DIR/lib
+ and --with-gmp-include=DIR/include
+ (use either --with-gmp alone or one or both of
+ --with-gmp-lib/--with-gmp-include)
+ Warning! Do not use these options if you have
+ CPPFLAGS and/or LDFLAGS containing a -I or -L
+ option with a directory that contains a GMP
+ header or library file, as these options just
+ add -I and -L options to CPPFLAGS and LDFLAGS
+ *after* the ones that are currently declared,
+ so that DIR will have a lower precedence. Also,
+ this may not work if DIR is a system directory
+ (typically /usr or /usr/local); see below.
+
+--with-gmp-build=DIR assumes that DIR contains the GMP build directory,
+ and enables the use of GMP internals (see above).
+ Warning! This option and the group of options
+ --with-gmp are mutually exclusive.
+
+--enable-assert build MPFR with assertions.
+
+--enable-thread-safe build MPFR as thread safe, using compiler-level
+ Thread Local Storage (TLS). Note: TLS support is
+ roughly tested by configure. If configure detects
+ that TLS does not work (because of the compiler,
+ linker or system libraries), it will output an
+ error message, telling you to build MPFR without
+ thread safe. For instance, though Mac OS X uses
+ GCC, it may not currently support GCC's __thread
+ storage class.
+
+--disable-thread-safe build MPFR without TLS. By default, TLS support
+ is detected automatically, and MPFR is built as
+ thread safe if supported. However this detection
+ is only a heuristic: TLS can be detected as
+ supported while its support is incomplete or
+ buggy (MPFR tests may fail). In such a case,
+ this option is useful.
+
+--enable-gmp-internals allows the MPFR build to use GMP's undocumented
+ functions (not from the public API). Note that
+ library versioning is not guaranteed to work if
+ this option is used. Thus it must not be used in
+ binary distributions.
+
+Note: By default, the configure script tries to set CC/CFLAGS to GMP's
+ones (this feature needs GMP 4.3.0 or later, or the --with-gmp-build
+option). However this is not guaranteed to work as the configure script
+does some compiler tests earlier, and the change may be too late. Also,
+the values obtained from GMP may be incorrect if GMP has been built
+on a different machine. In such a case, the user may need to specify
+CC/CFLAGS as explained below.
+
+Run "./configure --help" to see the other options (autoconf default options).
+
+
+If 'gmp.h' and 'libgmp' do not match
+====================================
+
+Under some circumstances, the configure script may output a message
+saying:
+
+ 'gmp.h' and 'libgmp' seem to have different versions or
+ we cannot run a program linked with GMP (if you cannot
+ see the version numbers above). [...]
+
+Even though the configure script does not fail in such a case, this
+message most often indicates a real error, which needs to be avoided.
+Possible causes are:
+
+* The wanted GMP library does not have the same ABI as the one chosen
+ to build MPFR. The consequences may be:
+
+ - A different GMP library (with the correct ABI) has been found,
+ but does not have the same version as 'gmp.h'.
+
+ - No other GMP libraries have been found (in this case, no version
+ numbers should be printed above the warning message).
+
+ This is incorrect and one of the following steps (make, make check)
+ will probably fail. GMP (actually gmp.h) now provides CC and CFLAGS
+ information to select the correct ABI, so that this problem should
+ no longer occur; but if GMP was provided by a binary package, such
+ information may not be valid. See the
+
+ checking for CC and CFLAGS in gmp.h...
+
+ line in the configure output (about the 11th line) and the following
+ few ones for more information. You may need to reinstall GMP or to
+ provide your own CC and/or CFLAGS. See also the remaining of this
+ INSTALL file.
+
+* A configure option like --with-gmp or --with-gmp-include was used
+ with a system include directory, e.g. one of the following:
+
+ --with-gmp=/usr
+ --with-gmp=/usr/local
+ --with-gmp-include=/usr/include
+ --with-gmp-include=/usr/local/include
+
+ GCC (and possibly other compilers) will ignore such a directive for
+ include directories (but this rule is not applied for the library
+ itself!). This means that the library search paths will be reordered
+ as declared, but the specified include directory will still be near
+ the end of the include search paths (thus with a low precedence).
+ This is not a problem if only one GMP version is installed, but
+ otherwise, a wrong gmp.h may be chosen, so that the versions of
+ gmp.h and libgmp may not match. The suggestions are the following:
+
+ - If you want to use the GMP version under /usr, then you should
+ uninstall all the other GMP versions (header and library files)
+ that may be seen in the search paths, in particular those under
+ /usr/local.
+
+ - If you want to use the GMP version under /usr/local, then you
+ should uninstall all the other GMP versions (header and library
+ files) that may be seen in the search paths, but *NOT* the one
+ under /usr (the version under /usr is provided by the OS vendor,
+ and changing/removing anything related to it may break your
+ system, and /usr should have a lower precedence than /usr/local
+ anyway).
+
+ To find where GMP versions have been installed:
+
+ $ locate libgmp (if you have a locate database)
+
+ and if the compiler is GCC:
+
+ $ gcc -print-file-name=libgmp.so (under most systems)
+ $ gcc -print-file-name=libgmp.dylib (under Mac OS X)
+
+ and if this does not work, you may try:
+
+ $ gcc -print-search-dirs
+
+* An official GCC version was used under Debian GNU/Linux. Problems
+ may come from the fact that Debian chose a different convention
+ for library search paths concerning 32-bit and 64-bit libraries.
+ A possible problem can be, for instance:
+
+ [Debian's GCC, correct library path]
+ $ gcc -print-file-name=libgmp.so
+ /home/vlefevre/gmp/athlon64/lib/../lib/libgmp.so
+
+ [Official GCC, incorrect library path]
+ $ gcc-4.3.1 -print-file-name=libgmp.so
+ /usr/lib/../lib64/libgmp.so
+
+ The solution: use a GCC provided by Debian or add symbolic links
+ such as lib64 -> lib (on 64-bit machines) for your library paths.
+
+* The problem may also be temporary and only due to the fact that
+ libtool could not be used at this time. This is unlikely, though.
+
+
+In case of problem
+==================
+
+First, look for any warning message in the configure output.
+
+Several documents may help you to solve the problem:
+ * this INSTALL file, in particular information given below;
+ * the FAQ (either the FAQ.html file distributed with MPFR, or the
+ on-line version <http://www.mpfr.org/faq.html>, which may be more
+ up-to-date);
+ * the MPFR web page for this version <http://www.mpfr.org/mpfr-3.1.3/>,
+ which lists bugs found in this version and provides some patches.
+
+If the "configure" fails, please check that the C compiler and its
+options are the same as those for the GMP build (specially the ABI).
+You can see the latter with the following command:
+
+ grep "^CC\|^CFLAGS" GMPBUILD/Makefile
+
+if the GMP build directory is available. Then type:
+
+ ./configure <configure options> CC=<C compiler> CFLAGS="<compiler options>"
+
+(quotes are needed when there are spaces or other special characters
+in the CC/CFLAGS value) and continue the install. On some platforms,
+you should provide further options to match those used by GMP, or set
+some environment variables. For instance, see the "Notes on AIX/PowerPC"
+section below.
+
+Warning! Do NOT use optimization options that can change the semantics
+of math operations, such as GCC's -ffast-math or Sun CC's -fast.
+Otherwise conversions from/to double's may be incorrect on infinities,
+NaN's and signed zeros. Since native FP arithmetic is used in a few
+places only, such options would not make MPFR faster anyway.
+
+If some "make check" tests fail, you can try the --disable-thread-safe
+configure option (see the configure options above): it has been reported
+that some platforms have buggy TLS support. Before trying this option,
+you may want to check in the configure output whether MPFR was built
+with TLS support; if yes, you will have a line:
+ checking for TLS support... yes
+Alternatively "grep MPFR_USE_THREAD_SAFE config.log" will show that
+MPFR_USE_THREAD_SAFE is defined to 1. If it is "no" (or the variable
+is not defined), the --disable-thread-safe option would be useless.
+
+Some tests failure may be due to other compiler bugs, in particular
+in optimization code. You can try to build MPFR without compiler
+optimizations by giving -O0 (letter O, digit 0) in CFLAGS. If the
+MPFR tests no longer fail, this was probably due to a compiler bug,
+though we cannot exclude a bug in MPFR. You may want to contact us
+(see below), possibly after looking at:
+ http://www.loria.fr/~zimmerma/software/compilerbugs.html
+
+On some platforms, try with "gmake" (GNU make) instead of "make".
+Problems have been reported with the Tru64 make.
+
+If the configure script reports that gmp.h version and libgmp version
+are different, or if the build was OK, but the tests failed to link
+with GMP or gave an error like
+
+ undefined reference to `__gmp_get_memory_functions'
+
+meaning that the GMP library was not found or a wrong GMP library was
+selected by the linker, then your library search paths are probably
+not correctly set (some paths are missing or they are specified in an
+incorrect order).
+
+Such problems commonly occur under some GNU/Linux machines, where the
+default header and library search paths may be inconsistent: GCC is
+configured to search /usr/local/include and /usr/local/lib by default,
+while the dynamic linker ignores /usr/local/lib. If you have a GMP
+version installed in /usr (provided by the OS vendor) and a new one
+installed in /usr/local, then the header of the new GMP version and
+the library of the old GMP version will be used! The best solution
+is to make sure that the dynamic linker configuration is consistent
+with GCC's behavior, for instance by having /usr/local/lib in
+/etc/ld.so.conf or in some file from /etc/ld.so.conf.d (as Debian
+did: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395177). See
+also https://gcc.gnu.org/ml/gcc-help/2010-01/msg00171.html for more
+information. Alternatively you can use:
+ * environment variables. This may sometimes be necessary. If DIR
+ is the installation directory of GMP, add DIR/include to your
+ CPATH or C_INCLUDE_PATH (for compilers other than GCC, please
+ check the manual of your compiler), and add DIR/lib to your
+ LIBRARY_PATH and LD_LIBRARY_PATH (and/or LD_RUN_PATH);
+ * --with-gmp* configure options (described above), e.g.
+ --with-gmp=/opt/local (to use /opt/local/include for headers and
+ /opt/local/lib for libraries), but other software that uses GMP
+ and/or MPFR will need correct paths too, and environment variables
+ allow one to set such search paths in a global way.
+ Note about "--with-gmp=/usr/local". This option may appear to
+ solve the above inconsistency problem, but does not work as you
+ expect. Indeed it affects the library search path, in particular,
+ the one used by the dynamic linker (thus adding the missing
+ /usr/local/lib directory as wanted), but since /usr/local/include
+ is a "standard system include directory" for GCC, the include
+ search patch is not changed; this is often not a problem in this
+ particular case because usually, /usr/local/include is already
+ last in the include search patch, but this may fail under some
+ occasions and may trigger obscure errors.
+
+For instance, under Unix, where paths are separated by a colon:
+
+ * With POSIX sh-compatible shells (e.g. sh, ksh, bash, zsh):
+ export C_INCLUDE_PATH="/usr/local/include:/other/path/include"
+ export LIBRARY_PATH="/usr/local/lib:/other/path/lib"
+ export LD_LIBRARY_PATH="$LIBRARY_PATH"
+
+ * With csh or tcsh:
+ setenv C_INCLUDE_PATH "/usr/local/include:/other/path/include"
+ setenv LIBRARY_PATH "/usr/local/lib:/other/path/lib"
+ setenv LD_LIBRARY_PATH "$LIBRARY_PATH"
+
+If you can't solve your problem, you should contact us via the MPFR
+mailing-list <mpfr@inria.fr>, indicating the machine and operating system
+used (uname -a), the compiler and version used (gcc -v if you use gcc),
+the configure options used if any (including variables such as CC and
+CFLAGS), the version of GMP and MPFR used, and a description of the
+problem encountered, in particular the tests/test-suite.log file if
+"make check" failed. Please send us also the log of the "configure"
+(config.log).
+
+Note that even if you can build MPFR with a C++ compiler, you can't run
+the test suite: C and C++ are not the same language! You should use a C
+compiler instead.
+
+
+Notes about ABI
+===============
+
+On 64-bit computers, it may happen that the default ABI (Application Binary
+Interface) chosen by MPFR does not correspond to the default one chosen by
+the compiler.
+
+In particular, this kind of message may indicate the problem:
+/usr/bin/ld: skipping incompatible mpfr/src/.libs/libmpfr.a when searching for -lmpfr
+
+In fact, since MPFR relies on GMP, it uses the same ABI as GMP.
+To be sure that your program compiles and links correctly, use the same
+compiler flags as MPFR does (look for CFLAGS in config.log).
+
+You might also recompile GMP with a different ABI, with for example
+./configure ABI=32.
+
+
+Notes on Mac OS X
+=================
+
+If you get an error of the form
+
+ ld: pointer in read-only segment not allowed in slidable image...
+
+this can mean that the link is done against a static (GMP) library.
+In such a case, you should configure MPFR with --disable-shared to
+disable the build of the shared library.
+
+
+Notes on FreeBSD 4.3
+====================
+
+FreeBSD 4.3 is provided with an incorrect <float.h> header file, and
+MPFR tests related to long double's may fail. If you cannot upgrade
+the system, you can still use MPFR with FreeBSD 4.3, but you should
+not use conversions with the long double type.
+
+
+Notes on AIX/PowerPC
+====================
+
+The following has been tested on AIX 5.3 (powerpc-ibm-aix5.3.0.0) with
+gcc 3.3.2 and GMP 4.2.1.
+
+If GMP was built with the 64-bit ABI, before building and testing MPFR,
+you should set the OBJECT_MODE environment variable to 64, e.g., with:
+
+ export OBJECT_MODE=64
+
+(in a sh-compatible shell). But you should also provide a correct CFLAGS
+value to the "configure" script: using --with-gmp-build is not sufficient
+due to the early compiler tests, as gcc will not compile any program if
+OBJECT_MODE is 64 and the -maix64 option is not provided.
+
+
+MPFR for use with 32-bit Windows Applications (win32)
+=====================================================
+
+There are several ways of building MPFR on Windows, the most appropriate
+approach depending on how you intend to use the resulting libraries.
+
+a. Using MinGW
+==============
+
+1 - We advise to use MinGW (http://www.mingw.org/), which is simpler and
+ less demanding than Cygwin. Contrary to Cygwin, it also provides native
+ Windows code.
+
+2 - If you just want to make a binary with gcc, there is nothing to do:
+ GMP, MPFR and the program compile exactly as under Linux.
+ But if you want to generate a library for MinGW from a Cygwin
+ environment, you may need the -mno-cygwin gcc option (otherwise
+ a typical error is _P_WAIT being undeclared).
+
+3 - If you want to make libraries work under another Windows compiler
+ like Visual C / C++, since the unix-like *.a library files are compatible
+ with Windows *.lib files, you can simply rename all *.a libraries to *.lib.
+
+ With gmp-4.1.3, the only remaining problem seems to be the "alloca" calls
+ in GMP. Configuring GMP and MPFR with --enable-alloca=malloc-reentrant
+ should work (if you build MPFR with GMP internal files).
+
+ Or you could add the library
+ "$MINGWIN$/lib/gcc-lib/mingw32/$VERSION$/libgcc.a"
+ to your project: it contains all the extra-functions needed by a program
+ compiled by gcc (division of 64-bit integer, bcopy, alloca...).
+ Of course, include it if and only if your compiler is not gcc.
+
+4 - On Windows32 / MinGW, if all the tests fail, try to run the test suite
+ with "make check EXEEXT=".
+
+5 - To avoid using the Microsoft runtime (which might not be conform to ISO C),
+ you can use the MinGW runtime package (which is an integral part of MinGW).
+ For example, with MinGW versions 3.15 and later you can get an
+ ISO-compliant printf() if you compile your application with either
+ '-ansi', '-posix' or '-D__USE_MINGW_ANSI_STDIO'. For example, you can
+ compile and test MPFR with CC="gcc -D__USE_MINGW_ANSI_STDIO".
+
+ For example under Win32, the following problem has been experienced with
+ MPFR 2.4.0 RC1 and the MSVC runtime (msvcrt.dll):
+
+ Error in mpfr_vsprintf (s, "%.*Zi, %R*e, %Lf%n", ...);
+ expected: "00000010610209857723, -1.2345678875e+07, 0.032258"
+ got: "00000010610209857723, -1.2345678875e+07, -0.000000"
+ FAIL: tsprintf.exe
+
+ This error is due to the MSVC runtime not supporting the L length modifier
+ for formatted output (e.g. printf with %Lf). You can check this with the
+ following program:
+
+ #include <stdio.h>
+ int main (void)
+ {
+ long double d = 1. / 31.;
+ printf ("%Lf\n", d);
+ return 0;
+ }
+
+ The expected output is 0.032258.
+
+ Note: The L modifier has been standard for a long time (it was added
+ in ISO C89).
+
+ Note 2: this now works correctly with Visual C++ 2008 and 2010
+ (tested on Microsoft (R) 32-bit C/C++ Optimizing Compiler Version
+ 15.00.21022.08 for 80x86, Microsoft (R) C/C++ Optimizing Compiler
+ Version 15.00.21022.08 for x64, Microsoft (R) 32-bit C/C++ Optimizing
+ Compiler Version 16.00.30319.01 for 80x86, Microsoft (R) C/C++ Optimizing
+ Compiler Version 16.00.30319.01 for x64).
+
+b. Using Cygwin
+===============
+
+This build should be similar to that for MinGW except that the resulting
+library depends on the Cygwin DLL and cannot therefore be used with
+Visual Studio as with MinGW. Indeed, the binaries compiled with Cygwin
+require a dynamic library (cygwin.dll) to work; there is a Cygwin option
+-mno-cygwin to build native code, but it may require some non-portable tricks.
+
+In case of failure, you may need to pass LDFLAGS='-shared-libgcc' at the
+end of the configure line due to a bug in GCC. Otherwise, if threading
+support is not needed, you can configure MPFR with --disable-thread-safe.
+
+c. Using Visual C++ 2008/2010
+=============================
+
+Win32 versions of the MPFR library can be built using Microsoft Visual
+C++ 2008 or 2010 using the build projects available here:
+
+http://gladman.plushost.co.uk/oldsite/computing/gmp4win.php
+
+These build projects contain both win32 and x64 builds but the latter
+will give errors if your version of Visual C++ lacks the 64-bit
+compiler and tools. The 32-bit build projects should however work
+on Visual C++ 2008, Visual C++ Express 2008 (SP1), Visual C++ 2010
+and Visual C++ Express 2010.
+
+MPFR for use with 64-bit Windows Applications (x64)
+===================================================
+
+There are two ways of building MPFR for use with 64-bit Windows
+applications.
+
+a. Using MinGW64
+================
+
+The MinGW64 version of the GCC compiler is now available here:
+
+https://sourceforge.net/projects/mingw-w64/
+
+It can build both GMP and MPFR for 64-bit Windows applications.
+
+b. Using Visual C++ 2008/2010
+=============================
+
+x64 versions of the MPFR library can be built using Microsoft Visual
+C++ 2008 or 2010 using the build projects available here:
+
+http://gladman.plushost.co.uk/oldsite/computing/gmp4win.php
+
+These build projects contain both win32 and x64 builds but the latter
+can only be built if your version of Visual C++ contains the 64-bit
+compiler and tools. On Visual C++ 2008, the 64-bit tools are an
+option during installation so if you don't have them you will need
+to start the Visual Studio installer and add them to your IDE
+configuration. On Visual C++ 2010 they are installed by default.
+
+As delivered, Visual C++ Express 2008 SP1 cannot build x64 projects
+but the Windows SDK can be added to it to allow this. The IDE then
+needs to be configured as described here:
+
+http://msdn.microsoft.com/en-us/library/9yb4317s(VS.80).aspx
+
+to allow x64 builds.
+
+Visual C++ Express 2010 requires the Windows 7 SDK to be installed
+in order to build x64 projects. This SDK is available here:
+
+http://tinyurl.com/25zz8r6
+
+In this case, once this SDK has been installed, Visual C++ Express 2010
+will build x64 projects without further changes.
diff --git a/Build/source/libs/mpfr/mpfr-src/Makefile.am b/Build/source/libs/mpfr/mpfr-src/Makefile.am
new file mode 100644
index 00000000000..349121ba816
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/Makefile.am
@@ -0,0 +1,38 @@
+# Copyright 2000-2015 Free Software Foundation, Inc.
+# This Makefile.am is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+AUTOMAKE_OPTIONS = gnu
+
+# ACLOCAL_AMFLAGS will be fully deprecated in Automake 2.0;
+# AC_CONFIG_MACRO_DIRS (introduced in Automake 1.13) is now used instead,
+# but we still set ACLOCAL_AMFLAGS to avoid a warning message from
+# libtoolize and in case some developer needs to switch back to an
+# old Automake version.
+ACLOCAL_AMFLAGS = -I m4
+
+SUBDIRS = doc src tests tune
+
+nobase_dist_doc_DATA = AUTHORS BUGS COPYING COPYING.LESSER NEWS TODO \
+ examples/ReadMe examples/divworst.c examples/rndo-add.c examples/sample.c \
+ examples/version.c
+
+EXTRA_DIST = PATCHES VERSION \
+ tools/ck-copyright-notice tools/ck-version-info tools/get_patches.sh \
+ $(DATAFILES)
+
+# Various checks for "make dist".
+# * Check consistency concerning -version-info. Moreover if the VERSION
+# file doesn't end with "-dev", check that the -version-info value is
+# up-to-date. Note: this is a heuristic, to detect some mistakes.
+# * Check that copyright notices exist and appear to be correct.
+dist-hook:
+ cd $(srcdir) && tools/ck-version-info
+ cd $(srcdir) && tools/ck-copyright-notice
diff --git a/Build/source/libs/mpfr/mpfr-src/NEWS b/Build/source/libs/mpfr/mpfr-src/NEWS
new file mode 100644
index 00000000000..e5844075672
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/NEWS
@@ -0,0 +1,319 @@
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+##############################################################################
+
+Changes from version 3.1.2 to version 3.1.3:
+- Better support for Automake 1.13+ (now used to generate the tarball).
+- Improved MPFR manual.
+- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.2/#fixed> and ChangeLog file).
+
+Changes from version 3.1.1 to version 3.1.2:
+- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.1/#fixed> or ChangeLog file).
+- Updated examples to the MPFR 3.x API.
+- Note: The official tarballs for MPFR up to 3.1.1 were affected by a
+ vulnerability for "make distcheck" due to a bug in old GNU Automake
+ versions: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-3386
+
+Changes from version 3.1.0 to version 3.1.1:
+- Improved MPFR manual.
+- Test coverage: 96.5% lines of code.
+- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.0/#fixed> or ChangeLog file).
+
+Changes from versions 3.0.* to version 3.1.0:
+- The "canard à l'orange" release.
+- The MPFR source has been reorganized.
+- Dropped ansi2knr support.
+- TLS support is now detected automatically. If TLS is supported, MPFR is
+ built as thread safe by default. To disable TLS explicitly, configure
+ MPFR with --disable-thread-safe.
+- New --enable-gmp-internals configure option to use GMP's undocumented
+ functions (not from the public API). Note that library versioning is
+ not guaranteed to work if this option is used.
+- The mpfr_urandom and mpfr_urandomb functions now return identical values
+ on processors with different word size (assuming the same random seed, and
+ since the GMP random generator does not depend itself on the word size,
+ cf http://gmplib.org/list-archives/gmp-devel/2010-September/001642.html).
+- The mpfr_add_one_ulp and mpfr_sub_one_ulp macros (which are obsolete and
+ no more documented) will be removed in a future release.
+- Speed improvement for the mpfr_sqr and mpfr_div functions using Mulders'
+ algorithm. As a consequence, other functions using those routines are
+ also faster.
+- Much faster formatted output (mpfr_printf, etc.) with %Rg and similar.
+- The --with-gmp-build configure option can now be used when the GMP
+ source directory and the GMP build directory are different (without
+ having to copy header files manually as before).
+- New functions mpfr_buildopt_gmpinternals_p, mpfr_buildopt_tune_case,
+ mpfr_frexp, mpfr_grandom and mpfr_z_sub.
+- New divide-by-zero exception (flag) and associated functions.
+- The mpfr.h header can be included several times, while still supporting
+ optional functions (see Section "Headers and Libraries" in the manual).
+- Updated tuning parameters.
+- Improved MPFR manual.
+- MPFR tests: libtool no longer generates wrapper scripts with "make check"
+ (so that running the tests under valgrind or gdb is easier).
+- Internal change: the logging mechanism has been improved.
+- Test coverage: 95.2% lines of code.
+- Bug fixes, in particular a huge inefficiency in mpfr_exp (when the
+ target precision is less than MPFR_EXP_THRESHOLD) on hard-to-round
+ cases, which can take several minutes.
+ Note: The mpfr_subnormalize implementation up to MPFR 3.0.0 did not change
+ the flags. In particular, it did not follow the generic rule concerning
+ the inexact flag (and no special behavior was specified). The case of the
+ underflow flag was more a lack of specification.
+
+Changes from versions 2.4.* to version 3.0.0:
+- The "boudin aux pommes" release.
+- MPFR 3.0.0 is binary incompatible with previous versions but (almost)
+ API compatible. More precisely the obsolete functions mpfr_random
+ and mpfr_random2 have been removed, the meaning of the return type
+ of the function mpfr_get_f has changed, and the return type of the
+ function mpfr_get_z is now int instead of void. In practice, this
+ should not break any existing code.
+- MPFR is now distributed under the GNU Lesser General Public License
+ version 3 or later (LGPL v3+).
+- Rounding modes GMP_RNDx are now MPFR_RNDx (GMP_RNDx kept for
+ compatibility).
+- A new rounding mode (MPFR_RNDA) is available to round away from zero.
+- The rounding mode type is now mpfr_rnd_t (as in previous versions,
+ both mpfr_rnd_t and mp_rnd_t are accepted, but mp_rnd_t may be
+ removed in the future).
+- The precision type is now mpfr_prec_t (as in previous versions, both
+ mpfr_prec_t and mp_prec_t are accepted, but mp_prec_t may be removed
+ in the future) and it is now signed (it was unsigned in MPFR 2.*, but
+ this was not documented). In practice, this change should not affect
+ existing code that assumed nothing on the precision type.
+- MPFR now has its own exponent type mpfr_exp_t, which is currently
+ the same as GMP's mp_exp_t.
+- Functions mpfr_random and mpfr_random2 have been removed.
+- mpfr_get_f and mpfr_get_z now return a ternary value.
+- mpfr_strtofr now accepts bases from 37 to 62.
+- mpfr_custom_get_mantissa was renamed to mpfr_custom_get_significand
+ (mpfr_custom_get_mantissa is still available via a #define).
+- Functions mpfr_get_si, mpfr_get_ui, mpfr_get_sj, mpfr_get_uj,
+ mpfr_get_z and mpfr_get_z_2exp no longer have cases with undefined
+ behavior; in these cases, the behavior is now specified, and in
+ particular, the erange flag is set.
+- New functions mpfr_buildopt_tls_p and mpfr_buildopt_decimal_p giving
+ information about options used at MPFR build time.
+- New function mpfr_regular_p.
+- New function mpfr_set_zero.
+- New function mpfr_digamma.
+- New function mpfr_ai (incomplete, experimental).
+- New functions mpfr_set_flt and mpfr_get_flt to convert from/to the
+ float type.
+- New function mpfr_urandom.
+- New function mpfr_set_z_2exp (companion to mpfr_get_z_2exp, which
+ was renamed from mpfr_get_z_exp in previous versions).
+- New function mpfr_min_prec.
+- Speed improvement for large precisions in the trigonometric functions
+ (mpfr_sin, mpfr_cos, mpfr_tan, mpfr_sin_cos): speedup of about 2.5
+ for 10^5 digits, of about 5 for 10^6 digits.
+- Speed improvement for large precisions of the inverse trigonometric
+ functions (arcsin, arccos, arctan): about 2 for 10^3 digits, up to
+ 2.7 for 10^6 digits.
+- Some documentation files are installed in $docdir.
+- The detection of a GMP build directory (more precisely, the internal
+ header files of GMP) was previously done separately from the use of
+ the --with-gmp-build configure option. This was not consistent with
+ the documentation and with other parts of the configure script. So,
+ as of MPFR 3.0.0, the internal header files of GMP are now used if
+ and only if the --with-gmp-build configure option is given.
+- The configure script recognizes some extra "long double" formats
+ (double big endian, double little endian, double-double big endian).
+- MPFR manual: added "API Compatibility" section.
+- Test coverage: 97.1% lines of code.
+- Bug fixes.
+
+Changes from versions 2.3.* to version 2.4.0:
+- The "andouillette sauce moutarde" release.
+- MPFR is now a GNU package.
+- Changes in the behavior of mpfr_strtofr and in its documentation
+ concerning particular cases where the code and the documentation
+ did not match; this change is also present in MPFR 2.3.1.
+- Behavior of mpfr_check_range changed: if the value is an inexact
+ infinity, the overflow flag is set (in case it was lost); this
+ change is also present in MPFR 2.3.2.
+- Function mpfr_init_gmp_rand (only defined when building MPFR without
+ the --with-gmp-build configure option) is no longer defined at all.
+ This function was private and not documented, and was used only in
+ the MPFR test suite. User code that calls it is regarded as broken
+ and may fail as a consequence. Running the old test suite against
+ MPFR 2.4.0 may also fail.
+- New functions:
+ * between a MPFR number and a double: mpfr_add_d, mpfr_sub_d,
+ mpfr_d_sub, mpfr_mul_d, mpfr_div_d, mpfr_d_div,
+ * formatted input/output:
+ mpfr_printf, mpfr_fprintf, mpfr_vprintf, mpfr_vfprintf,
+ mpfr_sprintf, mpfr_snprintf, mpfr_vsprintf, mpfr_vsnprintf,
+ mpfr_asprintf, mpfr_vasprintf.
+ * mpfr_sinh_cosh, mpfr_li2, mpfr_modf, mpfr_fmod, mpfr_rec_sqrt.
+- Configure test for TLS support.
+- Get default $CC and $CFLAGS from gmp.h (__GMP_CC / __GMP_CFLAGS,
+ which are available as of GMP 4.2.3).
+- Documented the fact that mpfr_random and mpfr_random2 will be
+ suppressed in the next release, and that the specification of
+ mpfr_eq may change in the next release (for compatibility with
+ the mpf layer of GMP).
+- Test coverage: 96.7% lines of code.
+- Bug fixes.
+
+Changes from versions 2.2.* to version 2.3.0:
+- The mpfr.info file is now installed in the share subdirectory
+ (as required by the Filesystem Hierarchy Standard); see output
+ of "./configure --help".
+- The shared library is now enabled by default. If the MPFR build
+ fails on your platform, try the --disable-shared configure option
+ to disable the shared library.
+- Thread-safe support with Microsoft Visual compiler.
+- New functions mpfr_j0, mpfr_j1, mpfr_jn, mpfr_y0, mpfr_y1, mpfr_yn,
+ mpfr_lgamma, mpfr_remainder, mpfr_remquo, mpfr_fms, mpfr_signbit,
+ mpfr_setsign, mpfr_copysign, mpfr_get_patches.
+- Functions mpfr_sin, mpfr_cos and mpfr_sin_cos improved (argument
+ reduction).
+- More detailed MPFR manual.
+- Improved tests (make check).
+- Bug fixes.
+
+Changes from versions 2.1.* to version 2.2.0:
+- Bug fixes.
+- new functions mpfr_set_overflow, mpfr_set_underflow, mpfr_set_inexflag,
+ mpfr_set_erangeflag, mpfr_set_nanflag, mpfr_erfc, mpfr_atan2, mpfr_pow_z,
+ mpfr_subnormalize, mpfr_const_catalan, mpfr_sec, mpfr_csc, mpfr_cot,
+ mpfr_root, mpfr_eint, mpfr_get_f, mpfr_sech, mpfr_csch, mpfr_coth,
+ mpfr_lngamma.
+- new macro: MPFR_VERSION_STRING
+- Remove the exported MPFR variables from mpfr.h to mpfr-impl.h.
+ (They were undocumented, so programs which respect the API still work).
+- Grep CC and CFLAGS from GMP Makefile if possible.
+- Math functions are faster (both average and worst cases).
+- Better support for long double.
+- Shared library of MPFR.
+- Binary compatible with previous versions if you do not use undocumented
+ features.
+- Thread safe (if built with --enable-thread-safe).
+- Logging facility.
+- Change in the semantics of mpfr_out_str/mpfr_get_str when n_digits=0.
+- Better locale support.
+
+Changes from version 2.1.0 to version 2.1.1:
+- Better way to detect the GMP library.
+- Bug fixes.
+
+Changes from version 2.0.3 to version 2.1.0:
+- Bug fixes.
+- new functions mpfr_strtofr, mpfr_set_uj, mpfr_set_sj, mpfr_set_ui_2exp,
+ mpfr_set_si_2exp, mpfr_set_sj_2exp, mpfr_set_uj_2exp, mpfr_get_uj,
+ mpfr_get_sj, mpfr_get_z, mpfr_free_str, mpfr_si_sub, mpfr_sub_si,
+ mpfr_mul_si, mpfr_si_div, mpfr_div_si, mpfr_sqr, mpfr_cmp_z, mpfr_cmp_q,
+ mpfr_zero_p, mpfr_free_cache, mpfr_sum, mpfr_get_version,
+ mpfr_get_default_rounding_mode, mpfr_get_emin_min, mpfr_get_emin_max,
+ mpfr_get_emax_min, mpfr_get_emax_max, mpfr_inits, mpfr_inits2, mpfr_clears,
+ mpfr_fits_intmax_p, mpfr_fits_uintmax_p, mpfr_clear_erangeflag,
+ mpfr_erangeflag_p, mpfr_rint_round, mpfr_rint_trunc, mpfr_rint_ceil,
+ mpfr_rint_floor.
+- new macros MPFR_DECL_INIT, MPFR_VERSION, MPFR_VERSION_NUM,
+ MPFR_VERSION_MAJOR, MPFR_VERSION_MINOR, MPFR_VERSION_PATCHLEVEL.
+- improved documentation.
+- improved configure.
+- improved portability (library and test suite).
+- It handles correctly non IEEE-754 double.
+- GMP internal files are not needed to install MPFR.
+- It is faster with low-precision floating point.
+- New global flag: ERANGE_FLAG.
+- Binary incompatible with previous versions, but API compatible.
+- mpfr_set_str doesn't allow anymore "@NAN@garbagechar" and "@INF@garbagechar",
+ allows base 0 (detection of the base), prefix (0x, 0b), leading whitespace.
+
+Changes from version 2.0.2 to version 2.0.3:
+- Bug fixes.
+- Support GMP as a shared library (not fully tested).
+
+Changes from version 2.0.1 to version 2.0.2:
+- many bug fixes and other improvements.
+- new functions mpfr_prec_round (replaces mpfr_round_prec), mpfr_get_exp,
+ mpfr_set_exp, mpfr_get_ld, mpfr_set_ld, mpfr_get_d_2exp, mpfr_get_si,
+ mpfr_get_ui, mpfr_nextabove, mpfr_nextbelow, mpfr_nexttoward, mpfr_frac,
+ mpfr_fits_*, mpfr_cmp_d, mpfr_cmpabs, mpfr_erf, mpfr_gamma, mpfr_zeta,
+ mpfr_greater_p, mpfr_greaterequal_p, mpfr_less_p, mpfr_lessequal_p,
+ mpfr_lessgreater_p, mpfr_equal_p, mpfr_unordered_p.
+- removed functions: mpfr_print_binary, mpfr_round_prec (replaced by
+ mpfr_prec_round), mpfr_set_str_raw, mpfr_set_machine_rnd_mode.
+- function mpfr_isinteger renamed mpfr_integer_p.
+- return type of some functions changed from void to int, for consistency.
+- return type of mpfr_set_prec changed from int to void.
+- new values for exponent range.
+- rename internal variables.
+
+Changes from version 2001 to version 2.0.1:
+- new mathematical functions: acos, acosh, asin, asinh, atan, atanh, cosh,
+ base-2 exponential and logarithm, base-10 logarithm, expm1, factorial,
+ pow, pow_si, pow_ui, sinh, tan, tanh, ui_pow, ui_pow_ui
+- other new functions: mpfr_const_euler, mpfr_dim, mpfr_fma, mpfr_hypot,
+ mpfr_min, mpfr_max, mpfr_rint, mpfr_set_inf, mpfr_set_nan
+- new operations with MPZ or MPQ: mpfr_{add,sub,mul,div}_[zq]
+- new predicates: mpfr_inf_p, mpfr_nan_p, mpfr_number_p, mpfr_isinteger,
+- add mechanism to set/check exponent range (overflow, underflow), partially
+ implemented in the mpfr functions.
+- efficiency: mpfr_div is now faster when the divisor has a few limbs
+- rounding: now mpfr_pow implements exact rounding, and most functions return a
+ ternary value indicating the position of the returned value wrt the exact one
+ (thus the return value is now 'int' instead of 'void')
+- complete rewrite of the configuration files
+- mpfr_get_d, mpfr_{add,sub}_one_ulp now get a rounding mode as 2nd argument
+- some function names did change: mpz_set_fr is now mpfr_get_z_exp,
+ mpfr_print_raw is now mpfr_print_binary.
+
+Changes from version 1.0 to version 2001:
+- the default installation does not provide any more access to machine
+ rounding mode, and as a consequence does not compare MPFR results with
+ precision=53 to machine results. Add option -DTEST if you want to have
+ access to machine rounding mode, and to check MPFR results against.
+- the MPFR files do not need <math.h> any more
+- the header file <mpfr.h> was split into <mpfr.h> for exported functions
+ and <mpfr-impl.h> for internal functions. The user should not use functions
+ or macros from <mpfr-impl.h>, since those may change in further releases.
+- <mpfr.h> was modified in order to make easy a C++ interface
+- MPFR now deals with infinities (+infinity and -infinity) and NaN
+- the missing function mpfr_swap is now available
+- mpfr_zeta was removed (was incomplete)
+- mpfr_init and mpfr_init2 now initialize the corresponding variable to 0
+ (like in other initialization functions from GNU MP)
+- in case memory allocation fails, an error message is output
+- several bugs of version 1.0 were fixed
+
+Changes from version 0.4 to version 1.0:
+
+- Version 1.0 now uses a standard configure/make installation.
+- Version 1.0 implements all functions that are available in the MPF class
+ from GMP 3.1 (except mpf_swap) and a header file mpf2mpfr.h is included in
+ the distribution for easy change from MPF to MPFR.
+- Version 1.0 implements new elementary functions: mpfr_sincos
+- Some functions and macros have been renamed: mpfr_log2 is now
+ mpfr_const_log2, mpfr_pi is now mpfr_const_pi, SIGN is now MPFR_SIGN.
+- Version 1.0 uses faster algorithms for mpfr_exp, mpfr_const_pi,
+ mpfr_const_log2. Compare the timings from version 1.0 and version 0.4.
+- Version 1.0 corrects some bugs of version 0.4.
+- The precision of MPFR variables is now named mpfr_prec, which makes it
+ easier to change it, to say unsigned long long. Same for the rounding mode
+ which is called mp_rnd_t.
+
+You'll find other news concerning the GNU MPFR library on the web
+page <http://www.mpfr.org/>.
diff --git a/Build/source/libs/mpfr/mpfr-src/PATCHES b/Build/source/libs/mpfr/mpfr-src/PATCHES
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/PATCHES
diff --git a/Build/source/libs/mpfr/mpfr-src/README b/Build/source/libs/mpfr/mpfr-src/README
new file mode 100644
index 00000000000..2f55a8cce90
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/README
@@ -0,0 +1,89 @@
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+##############################################################################
+
+The GNU MPFR distribution contains the following files:
+(This does not apply to code retrieved by Subversion.)
+
+AUTHORS - the authors of the library
+BUGS - bugs in MPFR - please read this file!
+COPYING - the GNU General Public License, version 3
+COPYING.LESSER - the GNU Lesser General Public License, version 3
+ChangeLog - the log of changes
+INSTALL - how to install MPFR (see also mpfr.texi)
+Makefile* - files for building the library
+NEWS - new features with respect to previous versions
+PATCHES - empty file (until patches are applied)
+README - this file
+TODO - what remains to do (any help is welcome!)
+VERSION - version of MPFR (next release version if taken by Subversion)
+ac*.m4 - automatic configuration files
+ar-lib - auxiliary installation file
+compile - auxiliary installation file
+config.* - auxiliary installation files
+configure* - configuration files
+depcomp - auxiliary installation file
+doc/ - directory containing the documentation (manual, FAQ)
+examples/ - directory containing examples
+install-sh - installation file
+ltmain.sh - auxiliary installation file
+m4/ - directory containing additional configuration files
+missing - auxiliary installation file
+src/ - directory containing the MPFR source
+test-driver - auxiliary installation file
+tests/ - directory containing the testsuite (for "make check")
+tools/ - directory containing various tools
+tune/ - directory containing files for tuning MPFR
+
+According to the special exception to the GNU General Public License,
+the autotools files compile, config.sub, config.guess, ltmain.sh,
+m4/libtool.m4 and missing are distributed under the same licence of
+GNU MPFR.
+
+For any copyright year range specified as YYYY-ZZZZ in this package,
+note that the range specifies every single year in that closed interval.
+
+
+You can get the latest source code by Subversion at InriaForge:
+
+ svn checkout svn://scm.gforge.inria.fr/svn/mpfr/trunk mpfr
+
+or
+
+ svn checkout https://scm.gforge.inria.fr/svn/mpfr/trunk mpfr
+
+(the last argument can be any directory name). You can use
+
+ svn ls svn://scm.gforge.inria.fr/svn/mpfr/branches
+ svn ls svn://scm.gforge.inria.fr/svn/mpfr/tags
+
+to get the list of branches or tags (releases), then checkout a
+particular branch or tag instead of the trunk. Alternatively, you
+can now use the "https:" scheme (a.k.a. DAV) instead of "svn:".
+For more information about Subversion, please see:
+
+ * http://svnbook.red-bean.com/ (the official Subversion book);
+ * https://gcc.gnu.org/wiki/SvnHelp (written for GCC developers,
+ but interesting general information can be found there);
+ * http://subversion.apache.org/faq.html (the Subversion FAQ).
+
+Subversion users should read the file "doc/README.dev" (provided via
+SVN only).
diff --git a/Build/source/libs/mpfr/mpfr-src/TODO b/Build/source/libs/mpfr/mpfr-src/TODO
new file mode 100644
index 00000000000..67305f9a6d0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/TODO
@@ -0,0 +1,434 @@
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Table of contents:
+1. Documentation
+2. Installation
+3. Changes in existing functions
+4. New functions to implement
+5. Efficiency
+6. Miscellaneous
+7. Portability
+
+##############################################################################
+1. Documentation
+##############################################################################
+
+- add a description of the algorithms used + proof of correctness
+
+##############################################################################
+2. Installation
+##############################################################################
+
+- if we want to distinguish GMP and MPIR, we can check at configure time
+ the following symbols which are only defined in MPIR:
+
+ #define __MPIR_VERSION 0
+ #define __MPIR_VERSION_MINOR 9
+ #define __MPIR_VERSION_PATCHLEVEL 0
+
+ There is also a library symbol mpir_version, which should match VERSION, set
+ by configure, for example 0.9.0.
+
+##############################################################################
+3. Changes in existing functions
+##############################################################################
+
+- export mpfr_overflow and mpfr_underflow as public functions
+
+- many functions currently taking into account the precision of the *input*
+ variable to set the initial working precison (acosh, asinh, cosh, ...).
+ This is nonsense since the "average" working precision should only depend
+ on the precision of the *output* variable (and maybe on the *value* of
+ the input in case of cancellation).
+ -> remove those dependencies from the input precision.
+
+- mpfr_can_round:
+ change the meaning of the 2nd argument (err). Currently the error is
+ at most 2^(MPFR_EXP(b)-err), i.e. err is the relative shift wrt the
+ most significant bit of the approximation. I propose that the error
+ is now at most 2^err ulps of the approximation, i.e.
+ 2^(MPFR_EXP(b)-MPFR_PREC(b)+err).
+
+- mpfr_set_q first tries to convert the numerator and the denominator
+ to mpfr_t. But this conversion may fail even if the correctly rounded
+ result is representable. New way to implement:
+ Function q = a/b. nq = PREC(q) na = PREC(a) nb = PREC(b)
+ If na < nb
+ a <- a*2^(nb-na)
+ n <- na-nb+ (HIGH(a,nb) >= b)
+ if (n >= nq)
+ bb <- b*2^(n-nq)
+ a = q*bb+r --> q has exactly n bits.
+ else
+ aa <- a*2^(nq-n)
+ aa = q*b+r --> q has exactly n bits.
+ If RNDN, takes nq+1 bits. (See also the new division function).
+
+
+##############################################################################
+4. New functions to implement
+##############################################################################
+
+- implement mpfr_q_sub, mpfr_z_div, mpfr_q_div?
+- implement functions for random distributions, see for example
+ https://sympa.inria.fr/sympa/arc/mpfr/2010-01/msg00034.html
+ (suggested by Charles Karney <ckarney@Sarnoff.com>, 18 Jan 2010):
+ * a Bernoulli distribution with prob p/q (exact)
+ * a general discrete distribution (i with prob w[i]/sum(w[i]) (Walker
+ algorithm, but make it exact)
+ * a uniform distribution in (a,b)
+ * exponential distribution (mean lambda) (von Neumann's method?)
+ * normal distribution (mean m, s.d. sigma) (ratio method?)
+- wanted for Magma [John Cannon <john@maths.usyd.edu.au>, Tue, 19 Apr 2005]:
+ HypergeometricU(a,b,s) = 1/gamma(a)*int(exp(-su)*u^(a-1)*(1+u)^(b-a-1),
+ u=0..infinity)
+ JacobiThetaNullK
+ PolylogP, PolylogD, PolylogDold: see http://arxiv.org/abs/math.CA/0702243
+ and the references herein.
+ JBessel(n, x) = BesselJ(n+1/2, x)
+ IncompleteGamma [also wanted by <keith.briggs@bt.com> 4 Feb 2008: Gamma(a,x),
+ gamma(a,x), P(a,x), Q(a,x); see A&S 6.5, ref. [Smith01] in algorithms.bib]
+ KBessel, KBessel2 [2nd kind]
+ JacobiTheta
+ LogIntegral
+ ExponentialIntegralE1
+ E1(z) = int(exp(-t)/t, t=z..infinity), |arg z| < Pi
+ mpfr_eint1: implement E1(x) for x > 0, and Ei(-x) for x < 0
+ E1(NaN) = NaN
+ E1(+Inf) = +0
+ E1(-Inf) = -Inf
+ E1(+0) = +Inf
+ E1(-0) = -Inf
+ DawsonIntegral
+ GammaD(x) = Gamma(x+1/2)
+- functions defined in the LIA-2 standard
+ + minimum and maximum (5.2.2): max, min, max_seq, min_seq, mmax_seq
+ and mmin_seq (mpfr_min and mpfr_max correspond to mmin and mmax);
+ + rounding_rest, floor_rest, ceiling_rest (5.2.4);
+ + remr (5.2.5): x - round(x/y) y;
+ + error functions from 5.2.7 (if useful in MPFR);
+ + power1pm1 (5.3.6.7): (1 + x)^y - 1;
+ + logbase (5.3.6.12): \log_x(y);
+ + logbase1p1p (5.3.6.13): \log_{1+x}(1+y);
+ + rad (5.3.9.1): x - round(x / (2 pi)) 2 pi = remr(x, 2 pi);
+ + axis_rad (5.3.9.1) if useful in MPFR;
+ + cycle (5.3.10.1): rad(2 pi x / u) u / (2 pi) = remr(x, u);
+ + axis_cycle (5.3.10.1) if useful in MPFR;
+ + sinu, cosu, tanu, cotu, secu, cscu, cossinu, arcsinu, arccosu,
+ arctanu, arccotu, arcsecu, arccscu (5.3.10.{2..14}):
+ sin(x 2 pi / u), etc.;
+ [from which sinpi(x) = sin(Pi*x), ... are trivial to implement, with u=2.]
+ + arcu (5.3.10.15): arctan2(y,x) u / (2 pi);
+ + rad_to_cycle, cycle_to_rad, cycle_to_cycle (5.3.11.{1..3}).
+- From GSL, missing special functions (if useful in MPFR):
+ (cf http://www.gnu.org/software/gsl/manual/gsl-ref.html#Special-Functions)
+ + The Airy functions Ai(x) and Bi(x) defined by the integral representations:
+ * Ai(x) = (1/\pi) \int_0^\infty \cos((1/3) t^3 + xt) dt
+ * Bi(x) = (1/\pi) \int_0^\infty (e^(-(1/3) t^3) + \sin((1/3) t^3 + xt)) dt
+ * Derivatives of Airy Functions
+ + The Bessel functions for n integer and n fractional:
+ * Regular Modified Cylindrical Bessel Functions I_n
+ * Irregular Modified Cylindrical Bessel Functions K_n
+ * Regular Spherical Bessel Functions j_n: j_0(x) = \sin(x)/x,
+ j_1(x)= (\sin(x)/x-\cos(x))/x & j_2(x)= ((3/x^2-1)\sin(x)-3\cos(x)/x)/x
+ Note: the "spherical" Bessel functions are solutions of
+ x^2 y'' + 2 x y' + [x^2 - n (n+1)] y = 0 and satisfy
+ j_n(x) = sqrt(Pi/(2x)) J_{n+1/2}(x). They should not be mixed with the
+ classical Bessel Functions, also noted j0, j1, jn, y0, y1, yn in C99
+ and mpfr.
+ Cf https://en.wikipedia.org/wiki/Bessel_function#Spherical_Bessel_functions
+ *Irregular Spherical Bessel Functions y_n: y_0(x) = -\cos(x)/x,
+ y_1(x)= -(\cos(x)/x+\sin(x))/x &
+ y_2(x)= (-3/x^3+1/x)\cos(x)-(3/x^2)\sin(x)
+ * Regular Modified Spherical Bessel Functions i_n:
+ i_l(x) = \sqrt{\pi/(2x)} I_{l+1/2}(x)
+ * Irregular Modified Spherical Bessel Functions:
+ k_l(x) = \sqrt{\pi/(2x)} K_{l+1/2}(x).
+ + Clausen Function:
+ Cl_2(x) = - \int_0^x dt \log(2 \sin(t/2))
+ Cl_2(\theta) = \Im Li_2(\exp(i \theta)) (dilogarithm).
+ + Dawson Function: \exp(-x^2) \int_0^x dt \exp(t^2).
+ + Debye Functions: D_n(x) = n/x^n \int_0^x dt (t^n/(e^t - 1))
+ + Elliptic Integrals:
+ * Definition of Legendre Forms:
+ F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t)))
+ E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t)))
+ P(\phi,k,n) = \int_0^\phi dt 1/((1 + n \sin^2(t))\sqrt(1 - k^2 \sin^2(t)))
+ * Complete Legendre forms are denoted by
+ K(k) = F(\pi/2, k)
+ E(k) = E(\pi/2, k)
+ * Definition of Carlson Forms
+ RC(x,y) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1)
+ RD(x,y,z) = 3/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2)
+ RF(x,y,z) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2)
+ RJ(x,y,z,p) = 3/2 \int_0^\infty dt
+ (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1)
+ + Elliptic Functions (Jacobi)
+ + N-relative exponential:
+ exprel_N(x) = N!/x^N (\exp(x) - \sum_{k=0}^{N-1} x^k/k!)
+ + exponential integral:
+ E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2.
+ Ei_3(x) = \int_0^x dt \exp(-t^3) for x >= 0.
+ Ei(x) := - PV(\int_{-x}^\infty dt \exp(-t)/t)
+ + Hyperbolic/Trigonometric Integrals
+ Shi(x) = \int_0^x dt \sinh(t)/t
+ Chi(x) := Re[ \gamma_E + \log(x) + \int_0^x dt (\cosh[t]-1)/t]
+ Si(x) = \int_0^x dt \sin(t)/t
+ Ci(x) = -\int_x^\infty dt \cos(t)/t for x > 0
+ AtanInt(x) = \int_0^x dt \arctan(t)/t
+ [ \gamma_E is the Euler constant ]
+ + Fermi-Dirac Function:
+ F_j(x) := (1/r\Gamma(j+1)) \int_0^\infty dt (t^j / (\exp(t-x) + 1))
+ + Pochhammer symbol (a)_x := \Gamma(a + x)/\Gamma(a) : see [Smith01] in
+ algorithms.bib
+ logarithm of the Pochhammer symbol
+ + Gegenbauer Functions
+ + Laguerre Functions
+ + Eta Function: \eta(s) = (1-2^{1-s}) \zeta(s)
+ Hurwitz zeta function: \zeta(s,q) = \sum_0^\infty (k+q)^{-s}.
+ + Lambert W Functions, W(x) are defined to be solutions of the equation:
+ W(x) \exp(W(x)) = x.
+ This function has multiple branches for x < 0 (2 funcs W0(x) and Wm1(x))
+ + Trigamma Function psi'(x).
+ and Polygamma Function: psi^{(m)}(x) for m >= 0, x > 0.
+
+- from gnumeric (www.gnome.org/projects/gnumeric/doc/function-reference.html):
+ - beta
+ - betaln
+ - degrees
+ - radians
+ - sqrtpi
+
+- mpfr_inp_raw, mpfr_out_raw (cf mail "Serialization of mpfr_t" from Alexey
+ and answer from Granlund on mpfr list, May 2007)
+- [maybe useful for SAGE] implement companion frac_* functions to the rint_*
+ functions. For example mpfr_frac_floor(x) = x - floor(x). (The current
+ mpfr_frac function corresponds to mpfr_rint_trunc.)
+- scaled erfc (https://sympa.inria.fr/sympa/arc/mpfr/2009-05/msg00054.html)
+- asec, acsc, acot, asech, acsch and acoth (mail from Björn Terelius on mpfr
+ list, 18 June 2009)
+
+##############################################################################
+5. Efficiency
+##############################################################################
+
+- implement a mpfr_sqrthigh algorithm based on Mulders' algorithm, with a
+ basecase variant
+- use mpn_div_q to speed up mpfr_div. However mpn_div_q, which is new in
+ GMP 5, is not documented in the GMP manual, thus we are not sure it
+ guarantees to return the same quotient as mpn_tdiv_qr.
+ Also mpfr_div uses the remainder computed by mpn_divrem. A workaround would
+ be to first try with mpn_div_q, and if we cannot (easily) compute the
+ rounding, then use the current code with mpn_divrem.
+- compute exp by using the series for cosh or sinh, which has half the terms
+ (see Exercise 4.11 from Modern Computer Arithmetic, version 0.3)
+ The same method can be used for log, using the series for atanh, i.e.,
+ atanh(x) = 1/2*log((1+x)/(1-x)).
+- improve mpfr_gamma (see https://code.google.com/p/fastfunlib/). A possible
+ idea is to implement a fast algorithm for the argument reconstruction
+ gamma(x+k). One could also use the series for 1/gamma(x), see for example
+ http://dlmf.nist.gov/5/7/ or formula (36) from
+ http://mathworld.wolfram.com/GammaFunction.html
+- fix regression with mpfr_mpz_root (from Keith Briggs, 5 July 2006), for
+ example on 3Ghz P4 with gmp-4.2, x=12.345:
+ prec=50000 k=2 k=3 k=10 k=100
+ mpz_root 0.036 0.072 0.476 7.628
+ mpfr_mpz_root 0.004 0.004 0.036 12.20
+ See also mail from Carl Witty on mpfr list, 09 Oct 2007.
+- implement Mulders algorithm for squaring and division
+- for sparse input (say x=1 with 2 bits), mpfr_exp is not faster than for
+ full precision when precision <= MPFR_EXP_THRESHOLD. The reason is
+ that argument reduction kills sparsity. Maybe avoid argument reduction
+ for sparse input?
+- speed up const_euler for large precision [for x=1.1, prec=16610, it takes
+ 75% of the total time of eint(x)!]
+- speed up mpfr_atan for large arguments (to speed up mpc_log)
+ [from Mark Watkins on Fri, 18 Mar 2005]
+ Also mpfr_atan(x) seems slower (by a factor of 2) for x near from 1.
+ Example on a Athlon for 10^5 bits: x=1.1 takes 3s, whereas 2.1 takes 1.8s.
+ The current implementation does not give monotonous timing for the following:
+ mpfr_random (x); for (i = 0; i < k; i++) mpfr_atan (y, x, MPFR_RNDN);
+ for precision 300 and k=1000, we get 1070ms, and 500ms only for p=400!
+- improve mpfr_sin on values like ~pi (do not compute sin from cos, because
+ of the cancellation). For instance, reduce the input modulo pi/2 in
+ [-pi/4,pi/4], and define auxiliary functions for which the argument is
+ assumed to be already reduced (so that the sin function can avoid
+ unnecessary computations by calling the auxiliary cos function instead of
+ the full cos function). This will require a native code for sin, for
+ example using the reduction sin(3x)=3sin(x)-4sin(x)^3.
+ See https://sympa.inria.fr/sympa/arc/mpfr/2007-08/msg00001.html and
+ the following messages.
+- improve generic.c to work for number of terms <> 2^k
+- rewrite mpfr_greater_p... as native code.
+
+- mpf_t uses a scheme where the number of limbs actually present can
+ be less than the selected precision, thereby allowing low precision
+ values (for instance small integers) to be stored and manipulated in
+ an mpf_t efficiently.
+
+ Perhaps mpfr should get something similar, especially if looking to
+ replace mpf with mpfr, though it'd be a major change. Alternately
+ perhaps those mpfr routines like mpfr_mul where optimizations are
+ possible through stripping low zero bits or limbs could check for
+ that (this would be less efficient but easier).
+
+- try the idea of the paper "Reduced Cancellation in the Evaluation of Entire
+ Functions and Applications to the Error Function" by W. Gawronski, J. Mueller
+ and M. Reinhard, to be published in SIAM Journal on Numerical Analysis: to
+ avoid cancellation in say erfc(x) for x large, they compute the Taylor
+ expansion of erfc(x)*exp(x^2/2) instead (which has less cancellation),
+ and then divide by exp(x^2/2) (which is simpler to compute).
+
+- replace the *_THRESHOLD macros by global (TLS) variables that can be
+ changed at run time (via a function, like other variables)? One benefit
+ is that users could use a single MPFR binary on several machines (e.g.,
+ a library provided by binary packages or shared via NFS) with different
+ thresholds. On the default values, this would be a bit less efficient
+ than the current code, but this isn't probably noticeable (this should
+ be tested). Something like:
+ long *mpfr_tune_get(void) to get the current values (the first value
+ is the size of the array).
+ int mpfr_tune_set(long *array) to set the tune values.
+ int mpfr_tune_run(long level) to find the best values (the support
+ for this feature is optional, this can also be done with an
+ external function).
+
+- better distinguish different processors (for example Opteron and Core 2)
+ and use corresponding default tuning parameters (as in GMP). This could be
+ done in configure.ac to avoid hacking config.guess, for example define
+ MPFR_HAVE_CORE2.
+ Note (VL): the effect on cross-compilation (that can be a processor
+ with the same architecture, e.g. compilation on a Core 2 for an
+ Opteron) is not clear. The choice should be consistent with the
+ build target (e.g. -march or -mtune value with gcc).
+ Also choose better default values. For instance, the default value of
+ MPFR_MUL_THRESHOLD is 40, while the best values that have been found
+ are between 11 and 19 for 32 bits and between 4 and 10 for 64 bits!
+
+- during the Many Digits competition, we noticed that (our implantation of)
+ Mulders short product was slower than a full product for large sizes.
+ This should be precisely analyzed and fixed if needed.
+
+##############################################################################
+6. Miscellaneous
+##############################################################################
+
+- [suggested by Tobias Burnus <burnus(at)net-b.de> and
+ Asher Langton <langton(at)gcc.gnu.org>, Wed, 01 Aug 2007]
+ support quiet and signaling NaNs in mpfr:
+ * functions to set/test a quiet/signaling NaN: mpfr_set_snan, mpfr_snan_p,
+ mpfr_set_qnan, mpfr_qnan_p
+ * correctly convert to/from double (if encoding of s/qNaN is fixed in 754R)
+
+- check again coverage: on 2007-07-27, Patrick Pelissier reports that the
+ following files are not tested at 100%: add1.c, atan.c, atan2.c,
+ cache.c, cmp2.c, const_catalan.c, const_euler.c, const_log2.c, cos.c,
+ gen_inverse.h, div_ui.c, eint.c, exp3.c, exp_2.c, expm1.c, fma.c, fms.c,
+ lngamma.c, gamma.c, get_d.c, get_f.c, get_ld.c, get_str.c, get_z.c,
+ inp_str.c, jn.c, jyn_asympt.c, lngamma.c, mpfr-gmp.c, mul.c, mul_ui.c,
+ mulders.c, out_str.c, pow.c, print_raw.c, rint.c, root.c, round_near_x.c,
+ round_raw_generic.c, set_d.c, set_ld.c, set_q.c, set_uj.c, set_z.c, sin.c,
+ sin_cos.c, sinh.c, sqr.c, stack_interface.c, sub1.c, sub1sp.c, subnormal.c,
+ uceil_exp2.c, uceil_log2.c, ui_pow_ui.c, urandomb.c, yn.c, zeta.c, zeta_ui.c.
+
+- check the constants mpfr_set_emin (-16382-63) and mpfr_set_emax (16383) in
+ get_ld.c and the other constants, and provide a testcase for large and
+ small numbers.
+
+- from Kevin Ryde <user42@zip.com.au>:
+ Also for pi.c, a pre-calculated compiled-in pi to a few thousand
+ digits would be good value I think. After all, say 10000 bits using
+ 1250 bytes would still be small compared to the code size!
+ Store pi in round to zero mode (to recover other modes).
+
+- add a new rounding mode: round to nearest, with ties away from zero
+ (this is roundTiesToAway in 754-2008, could be used by mpfr_round)
+- add a new roundind mode: round to odd. If the result is not exactly
+ representable, then round to the odd mantissa. This rounding
+ has the nice property that for k > 1, if:
+ y = round(x, p+k, TO_ODD)
+ z = round(y, p, TO_NEAREST_EVEN), then
+ z = round(x, p, TO_NEAREST_EVEN)
+ so it avoids the double-rounding problem.
+
+- add tests of the ternary value for constants
+
+- When doing Extensive Check (--enable-assert=full), since all the
+ functions use a similar use of MACROS (ZivLoop, ROUND_P), it should
+ be possible to do such a scheme:
+ For the first call to ROUND_P when we can round.
+ Mark it as such and save the approximated rounding value in
+ a temporary variable.
+ Then after, if the mark is set, check if:
+ - we still can round.
+ - The rounded value is the same.
+ It should be a complement to tgeneric tests.
+
+- in div.c, try to find a case for which cy != 0 after the line
+ cy = mpn_sub_1 (sp + k, sp + k, qsize, cy);
+ (which should be added to the tests), e.g. by having {vp, k} = 0, or
+ prove that this cannot happen.
+
+- add a configure test for --enable-logging to ignore the option if
+ it cannot be supported. Modify the "configure --help" description
+ to say "on systems that support it".
+
+- add generic bad cases for functions that don't have an inverse
+ function that is implemented (use a single Newton iteration).
+
+- add bad cases for the internal error bound (by using a dichotomy
+ between a bad case for the correct rounding and some input value
+ with fewer Ziv iterations?).
+
+- add an option to use a 32-bit exponent type (int) on LP64 machines,
+ mainly for developers, in order to be able to test the case where the
+ extended exponent range is the same as the default exponent range, on
+ such platforms.
+ Tests can be done with the exp-int branch (added on 2010-12-17, and
+ many tests fail at this time).
+
+- test underflow/overflow detection of various functions (in particular
+ mpfr_exp) in reduced exponent ranges, including ranges that do not
+ contain 0.
+
+- add an internal macro that does the equivalent of the following?
+ MPFR_IS_ZERO(x) || MPFR_GET_EXP(x) <= value
+
+- check whether __gmpfr_emin and __gmpfr_emax could be replaced by
+ a constant (see README.dev). Also check the use of MPFR_EMIN_MIN
+ and MPFR_EMAX_MAX.
+
+
+##############################################################################
+7. Portability
+##############################################################################
+
+- add a web page with results of builds on different architectures
+
+- support the decimal64 function without requiring --with-gmp-build
+
+- [Kevin about texp.c long strings]
+ For strings longer than c99 guarantees, it might be cleaner to
+ introduce a "tests_strdupcat" or something to concatenate literal
+ strings into newly allocated memory. I thought I'd done that in a
+ couple of places already. Arrays of chars are not much fun.
+
+- use https://gcc.gnu.org/viewcvs/gcc/trunk/config/stdint.m4 for mpfr-gmp.h
diff --git a/Build/source/libs/mpfr/mpfr-src/VERSION b/Build/source/libs/mpfr/mpfr-src/VERSION
new file mode 100644
index 00000000000..ff365e06b95
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/VERSION
@@ -0,0 +1 @@
+3.1.3
diff --git a/Build/source/libs/mpfr/mpfr-src/acinclude.m4 b/Build/source/libs/mpfr/mpfr-src/acinclude.m4
new file mode 100644
index 00000000000..9850db54fed
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/acinclude.m4
@@ -0,0 +1,1082 @@
+dnl MPFR specific autoconf macros
+
+dnl Copyright 2000, 2002-2015 Free Software Foundation, Inc.
+dnl Contributed by the AriC and Caramel projects, INRIA.
+dnl
+dnl This file is part of the GNU MPFR Library.
+dnl
+dnl The GNU MPFR Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published
+dnl by the Free Software Foundation; either version 3 of the License, or (at
+dnl your option) any later version.
+dnl
+dnl The GNU MPFR Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+dnl http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+dnl 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+dnl autoconf 2.60 is necessary because of the use of AC_PROG_SED.
+dnl The following line allows the autoconf wrapper (when installed)
+dnl to work as expected.
+dnl If you change the required version, please update README.dev too!
+AC_PREREQ(2.60)
+
+dnl ------------------------------------------------------------
+dnl You must put in MPFR_CONFIGS everything which configure MPFR
+dnl except:
+dnl - Everything dealing with CC and CFLAGS in particular the ABI
+dnl but the IEEE-754 specific flags must be set here.
+dnl - Tests that depend on gmp.h (see MPFR_CHECK_DBL2INT_BUG as an example:
+dnl a function needs to be defined and called in configure.ac).
+dnl - GMP's linkage.
+dnl - Libtool stuff.
+dnl - Handling of special arguments of MPFR's configure.
+AC_DEFUN([MPFR_CONFIGS],
+[
+AC_REQUIRE([AC_OBJEXT])
+AC_REQUIRE([MPFR_CHECK_LIBM])
+AC_REQUIRE([AC_HEADER_TIME])
+AC_REQUIRE([AC_CANONICAL_HOST])
+
+AC_CHECK_HEADER([limits.h],, AC_MSG_ERROR([limits.h not found]))
+AC_CHECK_HEADER([float.h],, AC_MSG_ERROR([float.h not found]))
+AC_CHECK_HEADER([string.h],, AC_MSG_ERROR([string.h not found]))
+
+dnl Check for locales
+AC_CHECK_HEADERS([locale.h])
+
+dnl Check for wide characters (wchar_t and wint_t)
+AC_CHECK_HEADERS([wchar.h])
+
+dnl Check for stdargs
+AC_CHECK_HEADER([stdarg.h],[AC_DEFINE([HAVE_STDARG],1,[Define if stdarg])],
+ [AC_CHECK_HEADER([varargs.h],,
+ AC_MSG_ERROR([stdarg.h or varargs.h not found]))])
+
+dnl sys/fpu.h - MIPS specific
+AC_CHECK_HEADERS([sys/time.h sys/fpu.h])
+
+dnl Android has a <locale.h>, but not the following members.
+AC_CHECK_MEMBERS([struct lconv.decimal_point, struct lconv.thousands_sep],,,
+ [#include <locale.h>])
+
+dnl Check how to get `alloca'
+AC_FUNC_ALLOCA
+
+dnl SIZE_MAX macro
+gl_SIZE_MAX
+
+dnl va_copy macro
+AC_MSG_CHECKING([how to copy va_list])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <stdarg.h>
+]], [[
+ va_list ap1, ap2;
+ va_copy(ap1, ap2);
+]])], [
+ AC_MSG_RESULT([va_copy])
+ AC_DEFINE(HAVE_VA_COPY)
+], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <stdarg.h>
+]], [[
+ va_list ap1, ap2;
+ __va_copy(ap1, ap2);
+]])], [AC_DEFINE([HAVE___VA_COPY]) AC_MSG_RESULT([__va_copy])],
+ [AC_MSG_RESULT([memcpy])])])
+
+dnl FIXME: The functions memmove, memset and strtol are really needed by
+dnl MPFR, but if they are implemented as macros, this is also OK (in our
+dnl case). So, we do not return an error, but their tests are currently
+dnl useless.
+dnl gettimeofday is not defined for MinGW
+AC_CHECK_FUNCS([memmove memset setlocale strtol gettimeofday])
+
+dnl Check for IEEE-754 switches on Alpha
+case $host in
+alpha*-*-*)
+ saved_CFLAGS="$CFLAGS"
+ AC_CACHE_CHECK([for IEEE-754 switches], mpfr_cv_ieee_switches, [
+ if test -n "$GCC"; then
+ mpfr_cv_ieee_switches="-mfp-rounding-mode=d -mieee-with-inexact"
+ else
+ mpfr_cv_ieee_switches="-fprm d -ieee_with_inexact"
+ fi
+ CFLAGS="$CFLAGS $mpfr_cv_ieee_switches"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , mpfr_cv_ieee_switches="none")
+ ])
+ if test "$mpfr_cv_ieee_switches" = "none"; then
+ CFLAGS="$saved_CFLAGS"
+ else
+ CFLAGS="$saved_CFLAGS $mpfr_cv_ieee_switches"
+ fi
+esac
+
+dnl check for long long
+AC_CHECK_TYPE([long long int],
+ AC_DEFINE(HAVE_LONG_LONG, 1, [Define if compiler supports long long]),,)
+
+dnl intmax_t is C99
+AC_CHECK_TYPES([intmax_t])
+if test "$ac_cv_type_intmax_t" = yes; then
+ AC_CACHE_CHECK([for working INTMAX_MAX], mpfr_cv_have_intmax_max, [
+ saved_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -I$srcdir/src"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[#include "mpfr-intmax.h"]],
+ [[intmax_t x = INTMAX_MAX; (void) x;]]
+ )],
+ mpfr_cv_have_intmax_max=yes, mpfr_cv_have_intmax_max=no)
+ CPPFLAGS="$saved_CPPFLAGS"
+ ])
+ if test "$mpfr_cv_have_intmax_max" = "yes"; then
+ AC_DEFINE(MPFR_HAVE_INTMAX_MAX,1,[Define if you have a working INTMAX_MAX.])
+ fi
+fi
+
+AC_CHECK_TYPE( [union fpc_csr],
+ AC_DEFINE(HAVE_FPC_CSR,1,[Define if union fpc_csr is available]), ,
+[
+#if HAVE_SYS_FPU_H
+# include <sys/fpu.h>
+#endif
+])
+
+dnl Check for fesetround
+AC_CACHE_CHECK([for fesetround], mpfr_cv_have_fesetround, [
+saved_LIBS="$LIBS"
+LIBS="$LIBS $MPFR_LIBM"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <fenv.h>]], [[fesetround(FE_TONEAREST);]])],
+ mpfr_cv_have_fesetround=yes, mpfr_cv_have_fesetround=no)
+LIBS="$saved_LIBS"
+])
+if test "$mpfr_cv_have_fesetround" = "yes"; then
+ AC_DEFINE(MPFR_HAVE_FESETROUND,1,[Define if you have the `fesetround' function via the <fenv.h> header file.])
+fi
+
+dnl Check for gcc float-conversion bug; if need be, -ffloat-store is used to
+dnl force the conversion to the destination type when a value is stored to
+dnl a variable (see ISO C99 standard 5.1.2.3#13, 6.3.1.5#2, 6.3.1.8#2). This
+dnl is important concerning the exponent range. Note that this doesn't solve
+dnl the double-rounding problem.
+if test -n "$GCC"; then
+ AC_CACHE_CHECK([for gcc float-conversion bug], mpfr_cv_gcc_floatconv_bug, [
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $MPFR_LIBM"
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <float.h>
+#ifdef MPFR_HAVE_FESETROUND
+#include <fenv.h>
+#endif
+static double get_max (void);
+int main (void) {
+ double x = 0.5;
+ double y;
+ int i;
+ for (i = 1; i <= 11; i++)
+ x *= x;
+ if (x != 0)
+ return 1;
+#ifdef MPFR_HAVE_FESETROUND
+ /* Useful test for the G4 PowerPC */
+ fesetround(FE_TOWARDZERO);
+ x = y = get_max ();
+ x *= 2.0;
+ if (x != y)
+ return 1;
+#endif
+ return 0;
+}
+static double get_max (void) { static volatile double d = DBL_MAX; return d; }
+ ]])],
+ [mpfr_cv_gcc_floatconv_bug="no"],
+ [mpfr_cv_gcc_floatconv_bug="yes, use -ffloat-store"],
+ [mpfr_cv_gcc_floatconv_bug="cannot test, use -ffloat-store"])
+ LIBS="$saved_LIBS"
+ ])
+ if test "$mpfr_cv_gcc_floatconv_bug" != "no"; then
+ CFLAGS="$CFLAGS -ffloat-store"
+ fi
+fi
+
+dnl Check if subnormal (denormalized) numbers are supported
+AC_CACHE_CHECK([for subnormal numbers], mpfr_cv_have_denorms, [
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdio.h>
+int main (void) {
+ double x = 2.22507385850720138309e-308;
+ fprintf (stderr, "%e\n", x / 2.0);
+ return 2.0 * (x / 2.0) != x;
+}
+]])],
+ [mpfr_cv_have_denorms="yes"],
+ [mpfr_cv_have_denorms="no"],
+ [mpfr_cv_have_denorms="cannot test, assume no"])
+])
+if test "$mpfr_cv_have_denorms" = "yes"; then
+ AC_DEFINE(HAVE_DENORMS,1,[Define if subnormal (denormalized) floats work.])
+fi
+
+dnl Check if signed zeros are supported. Note: the test will fail
+dnl if the division by 0 generates a trap.
+AC_CACHE_CHECK([for signed zeros], mpfr_cv_have_signedz, [
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
+int main (void) {
+ return 1.0 / 0.0 == 1.0 / -0.0;
+}
+]])],
+ [mpfr_cv_have_signedz="yes"],
+ [mpfr_cv_have_signedz="no"],
+ [mpfr_cv_have_signedz="cannot test, assume no"])
+])
+if test "$mpfr_cv_have_signedz" = "yes"; then
+ AC_DEFINE(HAVE_SIGNEDZ,1,[Define if signed zeros are supported.])
+fi
+
+dnl Check the FP division by 0 fails (e.g. on a non-IEEE-754 platform).
+dnl In such a case, MPFR_ERRDIVZERO is defined to disable the tests
+dnl involving a FP division by 0.
+dnl For the developers: to check whether all these tests are disabled,
+dnl configure MPFR with "-DMPFR_TEST_DIVBYZERO=1 -DMPFR_ERRDIVZERO=1".
+AC_CACHE_CHECK([if the FP division by 0 fails], mpfr_cv_errdivzero, [
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
+int main (void) {
+ volatile double d = 0.0, x;
+ x = 0.0 / d;
+ x = 1.0 / d;
+ (void) x;
+ return 0;
+}
+]])],
+ [mpfr_cv_errdivzero="no"],
+ [mpfr_cv_errdivzero="yes"],
+ [mpfr_cv_errdivzero="cannot test, assume no"])
+])
+if test "$mpfr_cv_errdivzero" = "yes"; then
+ AC_DEFINE(MPFR_ERRDIVZERO,1,[Define if the FP division by 0 fails.])
+ AC_MSG_WARN([The floating-point division by 0 fails instead of])
+ AC_MSG_WARN([returning a special value: NaN or infinity. Tests])
+ AC_MSG_WARN([involving a FP division by 0 will be disabled.])
+fi
+
+dnl Check whether NAN != NAN (as required by the IEEE-754 standard,
+dnl but not by the ISO C standard). For instance, this is false with
+dnl MIPSpro 7.3.1.3m under IRIX64. By default, assume this is true.
+AC_CACHE_CHECK([if NAN == NAN], mpfr_cv_nanisnan, [
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <math.h>
+#ifndef NAN
+# define NAN (0.0/0.0)
+#endif
+int main (void) {
+ double d;
+ d = NAN;
+ return d != d;
+}
+]])],
+ [mpfr_cv_nanisnan="yes"],
+ [mpfr_cv_nanisnan="no"],
+ [mpfr_cv_nanisnan="cannot test, assume no"])
+])
+if test "$mpfr_cv_nanisnan" = "yes"; then
+ AC_DEFINE(MPFR_NANISNAN,1,[Define if NAN == NAN.])
+ AC_MSG_WARN([The test NAN != NAN is false. The probable reason is that])
+ AC_MSG_WARN([your compiler optimizes floating-point expressions in an])
+ AC_MSG_WARN([unsafe way because some option, such as -ffast-math or])
+ AC_MSG_WARN([-fast (depending on the compiler), has been used. You])
+ AC_MSG_WARN([should NOT use such an option, otherwise MPFR functions])
+ AC_MSG_WARN([such as mpfr_get_d and mpfr_set_d may return incorrect])
+ AC_MSG_WARN([results on special FP numbers (e.g. NaN or signed zeros).])
+ AC_MSG_WARN([If you did not use such an option, please send us a bug])
+ AC_MSG_WARN([report so that we can try to find a workaround for your])
+ AC_MSG_WARN([platform and/or document the behavior.])
+fi
+
+dnl Check if the chars '0' to '9' are consecutive values
+AC_MSG_CHECKING([if charset has consecutive values])
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+char *number = "0123456789";
+char *lower = "abcdefghijklmnopqrstuvwxyz";
+char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+]],[[
+ int i;
+ unsigned char *p;
+ for (p = (unsigned char*) number, i = 0; i < 9; i++)
+ if ( (*p)+1 != *(p+1) ) return 1;
+ for (p = (unsigned char*) lower, i = 0; i < 25; i++)
+ if ( (*p)+1 != *(p+1) ) return 1;
+ for (p = (unsigned char*) upper, i = 0; i < 25; i++)
+ if ( (*p)+1 != *(p+1) ) return 1;
+]])], [AC_MSG_RESULT(yes)],[
+ AC_MSG_RESULT(no)
+ AC_DEFINE(MPFR_NO_CONSECUTIVE_CHARSET,1,[Charset is not consecutive])
+], [AC_MSG_RESULT(cannot test)])
+
+dnl Must be checked with the LIBM
+dnl but we don't want to add the LIBM to MPFR dependency.
+dnl Can't use AC_CHECK_FUNCS since the function may be in LIBM but
+dnl not exported in math.h
+saved_LIBS="$LIBS"
+LIBS="$LIBS $MPFR_LIBM"
+dnl AC_CHECK_FUNCS([round trunc floor ceil nearbyint])
+AC_MSG_CHECKING(for math/round)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <math.h>
+static int f (double (*func)(double)) { return 0; }
+]], [[
+ return f(round);
+]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ROUND, 1,[Have ISO C99 round function])
+],[AC_MSG_RESULT(no)])
+
+AC_MSG_CHECKING(for math/trunc)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <math.h>
+static int f (double (*func)(double)) { return 0; }
+]], [[
+ return f(trunc);
+]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_TRUNC, 1,[Have ISO C99 trunc function])
+],[AC_MSG_RESULT(no)])
+
+AC_MSG_CHECKING(for math/floor)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <math.h>
+static int f (double (*func)(double)) { return 0; }
+]], [[
+ return f(floor);
+]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_FLOOR, 1,[Have ISO C99 floor function])
+],[AC_MSG_RESULT(no)])
+
+AC_MSG_CHECKING(for math/ceil)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <math.h>
+static int f (double (*func)(double)) { return 0; }
+]], [[
+ return f(ceil);
+]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_CEIL, 1,[Have ISO C99 ceil function])
+],[AC_MSG_RESULT(no)])
+
+AC_MSG_CHECKING(for math/nearbyint)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <math.h>
+static int f (double (*func)(double)) { return 0; }
+]], [[
+ return f(nearbyint);
+]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_NEARBYINT, 1,[Have ISO C99 nearbyint function])
+],[AC_MSG_RESULT(no)])
+
+LIBS="$saved_LIBS"
+
+dnl Now try to check the long double format
+MPFR_C_LONG_DOUBLE_FORMAT
+
+if test "$enable_logging" = yes; then
+ if test "$enable_thread_safe" = yes; then
+ AC_MSG_ERROR([Enable either `Logging' or `thread-safe', not both])
+ else
+ enable_thread_safe=no
+ fi
+fi
+
+dnl Check if thread-local variables are supported.
+dnl At least two problems can occur in practice:
+dnl 1. The compilation fails, e.g. because the compiler doesn't know
+dnl about the __thread keyword.
+dnl 2. The compilation succeeds, but the system doesn't support TLS or
+dnl there is some ld configuration problem. One of the effects can
+dnl be that thread-local variables always evaluate to 0. So, it is
+dnl important to run the test below.
+if test "$enable_thread_safe" != no; then
+AC_MSG_CHECKING(for TLS support)
+saved_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS -I$srcdir/src"
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#define MPFR_USE_THREAD_SAFE 1
+#include "mpfr-thread.h"
+MPFR_THREAD_ATTR int x = 17;
+int main (void) {
+ return x != 17;
+}
+ ]])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE([MPFR_USE_THREAD_SAFE],1,[Build MPFR as thread safe])
+ ],
+ [AC_MSG_RESULT(no)
+ if test "$enable_thread_safe" = yes; then
+ AC_MSG_ERROR([please configure with --disable-thread-safe])
+ fi
+ ],
+ [if test "$enable_thread_safe" = yes; then
+ AC_MSG_RESULT([cannot test, assume yes])
+ AC_DEFINE([MPFR_USE_THREAD_SAFE],1,[Build MPFR as thread safe])
+ else
+ AC_MSG_RESULT([cannot test, assume no])
+ fi
+ ])
+CPPFLAGS="$saved_CPPFLAGS"
+fi
+])
+dnl end of MPFR_CONFIGS
+
+
+dnl MPFR_CHECK_GMP
+dnl --------------
+dnl Check GMP library vs header. Useful if the user provides --with-gmp
+dnl with a directory containing a GMP version that doesn't have the
+dnl correct ABI: the previous tests won't trigger the error if the same
+dnl GMP version with the right ABI is installed on the system, as this
+dnl library is automatically selected by the linker, while the header
+dnl (which depends on the ABI) of the --with-gmp include directory is
+dnl used.
+dnl Note: if the error is changed to a warning due to that fact that
+dnl libtool is not used, then the same thing should be done for the
+dnl other tests based on GMP.
+AC_DEFUN([MPFR_CHECK_GMP], [
+AC_REQUIRE([MPFR_CONFIGS])dnl
+AC_CACHE_CHECK([for GMP library vs header correctness], mpfr_cv_check_gmp, [
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+#include <limits.h>
+#include <gmp.h>
+]], [[
+ fprintf (stderr, "GMP_NAIL_BITS = %d\n", (int) GMP_NAIL_BITS);
+ fprintf (stderr, "GMP_NUMB_BITS = %d\n", (int) GMP_NUMB_BITS);
+ fprintf (stderr, "mp_bits_per_limb = %d\n", (int) mp_bits_per_limb);
+ fprintf (stderr, "sizeof(mp_limb_t) = %d\n", (int) sizeof(mp_limb_t));
+ if (GMP_NAIL_BITS != 0)
+ {
+ fprintf (stderr, "GMP_NAIL_BITS != 0\n");
+ return 1;
+ }
+ if (GMP_NUMB_BITS != mp_bits_per_limb)
+ {
+ fprintf (stderr, "GMP_NUMB_BITS != mp_bits_per_limb\n");
+ return 2;
+ }
+ if (GMP_NUMB_BITS != sizeof(mp_limb_t) * CHAR_BIT)
+ {
+ fprintf (stderr, "GMP_NUMB_BITS != sizeof(mp_limb_t) * CHAR_BIT\n");
+ return 3;
+ }
+ return 0;
+]])], [mpfr_cv_check_gmp="yes"],
+ [mpfr_cv_check_gmp="no (exit status is $?)"],
+ [mpfr_cv_check_gmp="cannot test, assume yes"])
+])
+case $mpfr_cv_check_gmp in
+no*)
+ AC_MSG_ERROR([bad GMP library or header - ABI problem?
+See 'config.log' for details.])
+esac
+])
+
+
+dnl MPFR_CHECK_DBL2INT_BUG
+dnl ----------------------
+dnl Check for double-to-integer conversion bug
+dnl https://gforge.inria.fr/tracker/index.php?func=detail&aid=14435
+dnl For the exit status, the lowest values (including some values after 128)
+dnl are reserved for various system errors. So, let's use the largest values
+dnl below 255 for errors in the test itself.
+dnl The following problem has been seen under Solaris in config.log,
+dnl i.e. the failure to link with libgmp wasn't detected in the first
+dnl test:
+dnl configure: checking if gmp.h version and libgmp version are the same
+dnl configure: gcc -o conftest -Wall -Wmissing-prototypes [...]
+dnl configure: $? = 0
+dnl configure: ./conftest
+dnl ld.so.1: conftest: fatal: libgmp.so.10: open failed: No such file [...]
+dnl configure: $? = 0
+dnl configure: result: yes
+dnl configure: checking for double-to-integer conversion bug
+dnl configure: gcc -o conftest -Wall -Wmissing-prototypes [...]
+dnl configure: $? = 0
+dnl configure: ./conftest
+dnl ld.so.1: conftest: fatal: libgmp.so.10: open failed: No such file [...]
+dnl ./configure[1680]: eval: line 1: 1971: Killed
+dnl configure: $? = 9
+dnl configure: program exited with status 9
+AC_DEFUN([MPFR_CHECK_DBL2INT_BUG], [
+AC_REQUIRE([MPFR_CONFIGS])dnl
+AC_CACHE_CHECK([for double-to-integer conversion bug], mpfr_cv_dbl_int_bug, [
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <gmp.h>
+]], [[
+ double d;
+ mp_limb_t u;
+ int i;
+
+ d = 1.0;
+ for (i = 0; i < GMP_NUMB_BITS - 1; i++)
+ d = d + d;
+ u = (mp_limb_t) d;
+ for (; i > 0; i--)
+ {
+ if (u & 1)
+ break;
+ u = u >> 1;
+ }
+ return (i == 0 && u == 1UL) ? 0 : 254 - i;
+]])], [mpfr_cv_dbl_int_bug="no"],
+ [mpfr_cv_dbl_int_bug="yes or failed to exec (exit status is $?)"],
+ [mpfr_cv_dbl_int_bug="cannot test, assume not present"])
+])
+case $mpfr_cv_dbl_int_bug in
+yes*)
+ AC_MSG_ERROR([double-to-integer conversion is incorrect.
+You need to use another compiler (or lower the optimization level).])
+esac
+])
+
+dnl MPFR_PARSE_DIRECTORY
+dnl Input: $1 = a string to a relative or absolute directory
+dnl Output: $2 = the variable to set with the absolute directory
+AC_DEFUN([MPFR_PARSE_DIRECTORY],
+[
+ dnl Check if argument is a directory
+ if test -d $1 ; then
+ dnl Get the absolute path of the directory
+ dnl in case of relative directory.
+ dnl If realpath is not a valid command,
+ dnl an error is produced and we keep the given path.
+ local_tmp=`realpath $1 2>/dev/null`
+ if test "$local_tmp" != "" ; then
+ if test -d "$local_tmp" ; then
+ $2="$local_tmp"
+ else
+ $2=$1
+ fi
+ else
+ $2=$1
+ fi
+ dnl Check for space in the directory
+ if test `echo $1|cut -d' ' -f1` != $1 ; then
+ AC_MSG_ERROR($1 directory shall not contain any space.)
+ fi
+ else
+ AC_MSG_ERROR($1 shall be a valid directory)
+ fi
+])
+
+
+dnl MPFR_C_LONG_DOUBLE_FORMAT
+dnl -------------------------
+dnl Determine the format of a long double.
+dnl
+dnl The object file is grepped, so as to work when cross compiling. A
+dnl start and end sequence is included to avoid false matches, and
+dnl allowance is made for the desired data crossing an "od -b" line
+dnl boundary. The test number is a small integer so it should appear
+dnl exactly, no rounding or truncation etc.
+dnl
+dnl "od -b" is supported even by Unix V7, and the awk script used doesn't
+dnl have functions or anything, so even an "old" awk should suffice.
+dnl
+dnl The 10-byte IEEE extended format is generally padded to either 12 or 16
+dnl bytes for alignment purposes. The SVR4 i386 ABI is 12 bytes, or i386
+dnl gcc -m128bit-long-double selects 16 bytes. IA-64 is 16 bytes in LP64
+dnl mode, or 12 bytes in ILP32 mode. The first 10 bytes is the relevant
+dnl part in all cases (big and little endian).
+dnl
+dnl Enhancements:
+dnl
+dnl Could match more formats, but no need to worry until there's code
+dnl wanting to use them.
+dnl
+dnl Don't want to duplicate the double matching from GMP_C_DOUBLE_FORMAT,
+dnl perhaps we should merge with that macro, to match data formats
+dnl irrespective of the C type in question. Or perhaps just let the code
+dnl use DOUBLE macros when sizeof(double)==sizeof(long double).
+
+AC_DEFUN([MPFR_C_LONG_DOUBLE_FORMAT],
+[AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_AWK])
+AC_REQUIRE([AC_OBJEXT])
+AC_CHECK_TYPES([long double])
+AC_CACHE_CHECK([format of `long double' floating point],
+ mpfr_cv_c_long_double_format,
+[mpfr_cv_c_long_double_format=unknown
+if test "$ac_cv_type_long_double" != yes; then
+ mpfr_cv_c_long_double_format="not available"
+else
+ cat >conftest.c <<\EOF
+[
+/* "before" is 16 bytes to ensure there's no padding between it and "x".
+ We're not expecting any "long double" bigger than 16 bytes or with
+ alignment requirements stricter than 16 bytes. */
+struct {
+ char before[16];
+ long double x;
+ char after[8];
+} foo = {
+ { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
+ '\001', '\043', '\105', '\147', '\211', '\253', '\315', '\357' },
+ -123456789.0,
+ { '\376', '\334', '\272', '\230', '\166', '\124', '\062', '\020' }
+};
+]
+EOF
+ mpfr_compile="$CC $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD 2>&1"
+ if AC_TRY_EVAL(mpfr_compile); then
+ cat >conftest.awk <<\EOF
+[
+BEGIN {
+ found = 0
+}
+
+# got[] holds a sliding window of bytes read the input. got[0] is the most
+# recent byte read, and got[31] the oldest byte read, so when looking to
+# match some data the indices are "reversed".
+#
+{
+ for (f = 2; f <= NF; f++)
+ {
+ # new byte, shift others up
+ for (i = 31; i >= 0; i--)
+ got[i+1] = got[i];
+ got[0] = $f;
+
+ # end sequence
+ if (got[7] != "376") continue
+ if (got[6] != "334") continue
+ if (got[5] != "272") continue
+ if (got[4] != "230") continue
+ if (got[3] != "166") continue
+ if (got[2] != "124") continue
+ if (got[1] != "062") continue
+ if (got[0] != "020") continue
+
+ # start sequence, with 8-byte body
+ if (got[23] == "001" && \
+ got[22] == "043" && \
+ got[21] == "105" && \
+ got[20] == "147" && \
+ got[19] == "211" && \
+ got[18] == "253" && \
+ got[17] == "315" && \
+ got[16] == "357")
+ {
+ saw = " (" got[15] \
+ " " got[14] \
+ " " got[13] \
+ " " got[12] \
+ " " got[11] \
+ " " got[10] \
+ " " got[9] \
+ " " got[8] ")"
+
+ if (got[15] == "301" && \
+ got[14] == "235" && \
+ got[13] == "157" && \
+ got[12] == "064" && \
+ got[11] == "124" && \
+ got[10] == "000" && \
+ got[9] == "000" && \
+ got[8] == "000")
+ {
+ print "IEEE double, big endian"
+ found = 1
+ exit
+ }
+
+ if (got[15] == "000" && \
+ got[14] == "000" && \
+ got[13] == "000" && \
+ got[12] == "124" && \
+ got[11] == "064" && \
+ got[10] == "157" && \
+ got[9] == "235" && \
+ got[8] == "301")
+ {
+ print "IEEE double, little endian"
+ found = 1
+ exit
+ }
+ }
+
+ # start sequence, with 12-byte body
+ if (got[27] == "001" && \
+ got[26] == "043" && \
+ got[25] == "105" && \
+ got[24] == "147" && \
+ got[23] == "211" && \
+ got[22] == "253" && \
+ got[21] == "315" && \
+ got[20] == "357")
+ {
+ saw = " (" got[19] \
+ " " got[18] \
+ " " got[17] \
+ " " got[16] \
+ " " got[15] \
+ " " got[14] \
+ " " got[13] \
+ " " got[12] \
+ " " got[11] \
+ " " got[10] \
+ " " got[9] \
+ " " got[8] ")"
+
+ if (got[19] == "000" && \
+ got[18] == "000" && \
+ got[17] == "000" && \
+ got[16] == "000" && \
+ got[15] == "240" && \
+ got[14] == "242" && \
+ got[13] == "171" && \
+ got[12] == "353" && \
+ got[11] == "031" && \
+ got[10] == "300")
+ {
+ print "IEEE extended, little endian"
+ found = 1
+ exit
+ }
+
+ if (got[19] == "300" && \
+ got[18] == "031" && \
+ got[17] == "000" && \
+ got[16] == "000" && \
+ got[15] == "353" && \
+ got[14] == "171" && \
+ got[13] == "242" && \
+ got[12] == "240" && \
+ got[11] == "000" && \
+ got[10] == "000" && \
+ got[09] == "000" && \
+ got[08] == "000")
+ {
+ # format found on m68k
+ print "IEEE extended, big endian"
+ found = 1
+ exit
+ }
+ }
+
+ # start sequence, with 16-byte body
+ if (got[31] == "001" && \
+ got[30] == "043" && \
+ got[29] == "105" && \
+ got[28] == "147" && \
+ got[27] == "211" && \
+ got[26] == "253" && \
+ got[25] == "315" && \
+ got[24] == "357")
+ {
+ saw = " (" got[23] \
+ " " got[22] \
+ " " got[21] \
+ " " got[20] \
+ " " got[19] \
+ " " got[18] \
+ " " got[17] \
+ " " got[16] \
+ " " got[15] \
+ " " got[14] \
+ " " got[13] \
+ " " got[12] \
+ " " got[11] \
+ " " got[10] \
+ " " got[9] \
+ " " got[8] ")"
+
+ if (got[23] == "000" && \
+ got[22] == "000" && \
+ got[21] == "000" && \
+ got[20] == "000" && \
+ got[19] == "240" && \
+ got[18] == "242" && \
+ got[17] == "171" && \
+ got[16] == "353" && \
+ got[15] == "031" && \
+ got[14] == "300")
+ {
+ print "IEEE extended, little endian"
+ found = 1
+ exit
+ }
+
+ if (got[23] == "300" && \
+ got[22] == "031" && \
+ got[21] == "326" && \
+ got[20] == "363" && \
+ got[19] == "105" && \
+ got[18] == "100" && \
+ got[17] == "000" && \
+ got[16] == "000" && \
+ got[15] == "000" && \
+ got[14] == "000" && \
+ got[13] == "000" && \
+ got[12] == "000" && \
+ got[11] == "000" && \
+ got[10] == "000" && \
+ got[9] == "000" && \
+ got[8] == "000")
+ {
+ # format used on HP 9000/785 under HP-UX
+ print "IEEE quad, big endian"
+ found = 1
+ exit
+ }
+
+ if (got[23] == "000" && \
+ got[22] == "000" && \
+ got[21] == "000" && \
+ got[20] == "000" && \
+ got[19] == "000" && \
+ got[18] == "000" && \
+ got[17] == "000" && \
+ got[16] == "000" && \
+ got[15] == "000" && \
+ got[14] == "000" && \
+ got[13] == "100" && \
+ got[12] == "105" && \
+ got[11] == "363" && \
+ got[10] == "326" && \
+ got[9] == "031" && \
+ got[8] == "300")
+ {
+ print "IEEE quad, little endian"
+ found = 1
+ exit
+ }
+
+ if (got[23] == "301" && \
+ got[22] == "235" && \
+ got[21] == "157" && \
+ got[20] == "064" && \
+ got[19] == "124" && \
+ got[18] == "000" && \
+ got[17] == "000" && \
+ got[16] == "000" && \
+ got[15] == "000" && \
+ got[14] == "000" && \
+ got[13] == "000" && \
+ got[12] == "000" && \
+ got[11] == "000" && \
+ got[10] == "000" && \
+ got[9] == "000" && \
+ got[8] == "000")
+ {
+ # format used on 32-bit PowerPC (Mac OS X and Debian GNU/Linux)
+ print "possibly double-double, big endian"
+ found = 1
+ exit
+ }
+ }
+ }
+}
+
+END {
+ if (! found)
+ print "unknown", saw
+}
+]
+EOF
+ mpfr_cv_c_long_double_format=`od -b conftest.$OBJEXT | $AWK -f conftest.awk`
+ case $mpfr_cv_c_long_double_format in
+ unknown*)
+ echo "cannot match anything, conftest.$OBJEXT contains" >&AS_MESSAGE_LOG_FD
+ od -b conftest.$OBJEXT >&AS_MESSAGE_LOG_FD
+ ;;
+ esac
+ else
+ AC_MSG_WARN([oops, cannot compile test program])
+ fi
+fi
+rm -f conftest*
+])
+
+AH_VERBATIM([HAVE_LDOUBLE],
+[/* Define one of the following to 1 for the format of a `long double'.
+ If your format is not among these choices, or you don't know what it is,
+ then leave all undefined.
+ IEEE_EXT is the 10-byte IEEE extended precision format.
+ IEEE_QUAD is the 16-byte IEEE quadruple precision format.
+ LITTLE or BIG is the endianness. */
+#undef HAVE_LDOUBLE_IEEE_EXT_LITTLE
+#undef HAVE_LDOUBLE_IEEE_QUAD_BIG])
+
+case $mpfr_cv_c_long_double_format in
+ "IEEE extended, little endian")
+ AC_DEFINE(HAVE_LDOUBLE_IEEE_EXT_LITTLE, 1)
+ ;;
+ "IEEE quad, big endian")
+ AC_DEFINE(HAVE_LDOUBLE_IEEE_QUAD_BIG, 1)
+ ;;
+ "IEEE quad, little endian")
+ AC_DEFINE(HAVE_LDOUBLE_IEEE_QUAD_LITTLE, 1)
+ ;;
+ "possibly double-double, big endian")
+ AC_MSG_WARN([This format is known on GCC/PowerPC platforms,])
+ AC_MSG_WARN([but due to GCC PR26374, we can't test further.])
+ AC_MSG_WARN([You can safely ignore this warning, though.])
+ # Since we are not sure, we do not want to define a macro.
+ ;;
+ unknown* | "not available")
+ ;;
+ *)
+ AC_MSG_WARN([oops, unrecognised float format: $mpfr_cv_c_long_double_format])
+ ;;
+esac
+])
+
+
+dnl MPFR_CHECK_LIBM
+dnl ---------------
+dnl Determine a math library -lm to use.
+
+AC_DEFUN([MPFR_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_SUBST(MPFR_LIBM,'')
+case $host in
+ *-*-beos* | *-*-cygwin* | *-*-pw32*)
+ # According to libtool AC CHECK LIBM, these systems don't have libm
+ ;;
+ *-*-solaris*)
+ # On Solaris the math functions new in C99 are in -lm9x.
+ # FIXME: Do we need -lm9x as well as -lm, or just instead of?
+ AC_CHECK_LIB(m9x, main, MPFR_LIBM="-lm9x")
+ AC_CHECK_LIB(m, main, MPFR_LIBM="$MPFR_LIBM -lm")
+ ;;
+ *-ncr-sysv4.3*)
+ # FIXME: What does -lmw mean? Libtool AC CHECK LIBM does it this way.
+ AC_CHECK_LIB(mw, _mwvalidcheckl, MPFR_LIBM="-lmw")
+ AC_CHECK_LIB(m, main, MPFR_LIBM="$MPFR_LIBM -lm")
+ ;;
+ *)
+ AC_CHECK_LIB(m, main, MPFR_LIBM="-lm")
+ ;;
+esac
+])
+
+
+dnl MPFR_LD_SEARCH_PATHS_FIRST
+dnl --------------------------
+
+AC_DEFUN([MPFR_LD_SEARCH_PATHS_FIRST],
+[case "$LD $LDFLAGS" in
+ *-Wl,-search_paths_first*) ;;
+ *) AC_MSG_CHECKING([if the compiler understands -Wl,-search_paths_first])
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)]
+ LDFLAGS="$saved_LDFLAGS")
+ ;;
+ esac
+])
+
+
+dnl GMP_C_ATTRIBUTE_MODE
+dnl --------------------
+dnl Introduced in gcc 2.2, but perhaps not in all Apple derived versions.
+dnl Needed for mpfr-longlong.h; this is currently necessary for s390.
+dnl
+dnl TODO: Replace this with a cleaner type size detection, as this
+dnl solution only works with gcc and assumes CHAR_BIT == 8. Probably use
+dnl <stdint.h>, and <http://gcc.gnu.org/viewcvs/trunk/config/stdint.m4>
+dnl as a fallback.
+
+AC_DEFUN([GMP_C_ATTRIBUTE_MODE],
+[AC_CACHE_CHECK([whether gcc __attribute__ ((mode (XX))) works],
+ gmp_cv_c_attribute_mode,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[typedef int SItype __attribute__ ((mode (SI)));]], [[]])],
+ gmp_cv_c_attribute_mode=yes, gmp_cv_c_attribute_mode=no)
+])
+if test $gmp_cv_c_attribute_mode = yes; then
+ AC_DEFINE(HAVE_ATTRIBUTE_MODE, 1,
+ [Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX)))])
+fi
+])
+
+
+dnl MPFR_FUNC_GMP_PRINTF_SPEC
+dnl ------------------------------------
+dnl MPFR_FUNC_GMP_PRINTF_SPEC(spec, type, [includes], [if-true], [if-false])
+dnl Check if gmp_sprintf supports the conversion specification 'spec'
+dnl with type 'type'.
+dnl Expand 'if-true' if printf supports 'spec', 'if-false' otherwise.
+
+AC_DEFUN([MPFR_FUNC_GMP_PRINTF_SPEC],[
+AC_MSG_CHECKING(if gmp_printf supports "%$1")
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+#include <string.h>
+$3
+#include <gmp.h>
+]], [[
+ char s[256];
+ $2 a = 17;
+
+ if (gmp_sprintf (s, "(%0.0$1)(%d)", a, 42) == -1) return 1;
+ return (strcmp (s, "(17)(42)") != 0);
+]])],
+ [AC_MSG_RESULT(yes)
+ $4],
+ [AC_MSG_RESULT(no)
+ $5],
+ [AC_MSG_RESULT(cross-compiling, assuming yes)
+ $4])
+])
+
+
+dnl MPFR_CHECK_PRINTF_SPEC
+dnl ----------------------
+dnl Check if gmp_printf supports some optional length modifiers.
+dnl Defined symbols are negative to shorten the gcc command line.
+
+AC_DEFUN([MPFR_CHECK_PRINTF_SPEC], [
+AC_REQUIRE([MPFR_CONFIGS])dnl
+if test "$ac_cv_type_intmax_t" = yes; then
+ MPFR_FUNC_GMP_PRINTF_SPEC([jd], [intmax_t], [
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+ ],,
+ [AC_DEFINE([NPRINTF_J], 1, [gmp_printf cannot read intmax_t])])
+fi
+
+MPFR_FUNC_GMP_PRINTF_SPEC([hhd], [char], [
+#include <gmp.h>
+ ],,
+ [AC_DEFINE([NPRINTF_HH], 1, [gmp_printf cannot use `hh' length modifier])])
+
+MPFR_FUNC_GMP_PRINTF_SPEC([lld], [long long int], [
+#include <gmp.h>
+ ],,
+ [AC_DEFINE([NPRINTF_LL], 1, [gmp_printf cannot read long long int])])
+
+MPFR_FUNC_GMP_PRINTF_SPEC([Lf], [long double], [
+#include <gmp.h>
+ ],,
+ [AC_DEFINE([NPRINTF_L], 1, [gmp_printf cannot read long double])])
+
+MPFR_FUNC_GMP_PRINTF_SPEC([td], [ptrdiff_t], [
+#if defined (__cplusplus)
+#include <cstddef>
+#else
+#include <stddef.h>
+#endif
+#include <gmp.h>
+ ],,
+ [AC_DEFINE([NPRINTF_T], 1, [gmp_printf cannot read ptrdiff_t])])
+])
diff --git a/Build/source/libs/mpfr/mpfr-src/configure.ac b/Build/source/libs/mpfr/mpfr-src/configure.ac
new file mode 100644
index 00000000000..50535c7964d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/configure.ac
@@ -0,0 +1,631 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_COPYRIGHT([
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published
+by the Free Software Foundation; either version 3 of the License, or (at
+your option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+dnl Add check-news when it checks for more than 15 lines
+AC_INIT([MPFR],[3.1.3])
+
+dnl Older Automake versions than 1.13 may still be supported, but no longer
+dnl tested, and many things have changed in 1.13. Moreover the INSTALL file
+dnl and MPFR manual assume that MPFR has been built using Automake 1.13+
+dnl (due to parallel tests, introduced by default in Automake 1.13).
+AM_INIT_AUTOMAKE([1.13 no-define dist-bzip2 dist-xz dist-zip])
+AM_MAINTAINER_MODE(enable)
+
+AC_CONFIG_MACRO_DIR([m4])
+
+dnl FIXME: The AC_ARG_ENABLE(decimal-float...) part does things too
+dnl early, even when this option is not used. In particular, it must
+dnl be put after AC_PROG_CC; another problem is that the GMP CFLAGS
+dnl and CC check may modify the compiler.
+
+test_CFLAGS=${CFLAGS+set}
+
+dnl Check if user request its CC and CFLAGS
+if test -n "$CFLAGS" || test -n "$CC" ; then
+ user_redefine_cc=yes
+fi
+
+dnl Basic Autoconf macros. At this point, they must not make Autoconf
+dnl choose a compiler because of the CC and CFLAGS setup from gmp.h!
+
+AC_CANONICAL_HOST
+
+AC_PROG_EGREP
+AC_PROG_SED
+
+dnl To use a separate config header.
+dnl There is still some problem with GMP's HAVE_CONFIG
+dnl AC_CONFIG_HEADERS([mpfrconf.h:mpfrconf.in])
+
+dnl Extra arguments to configure
+unset gmp_lib_path GMP_CFLAGS GMP_CC
+AC_ARG_WITH(gmp_include,
+ [ --with-gmp-include=DIR GMP include directory ],
+ MPFR_PARSE_DIRECTORY(["$withval"],[withval])
+ CPPFLAGS="$CPPFLAGS -I$withval")
+AC_ARG_WITH(gmp_lib,
+ [ --with-gmp-lib=DIR GMP lib directory ], [
+ MPFR_PARSE_DIRECTORY(["$withval"],[withval])
+ LDFLAGS="$LDFLAGS -L$withval"
+ gmp_lib_path="$withval"
+ ])
+AC_ARG_WITH(gmp,
+ [ --with-gmp=DIR GMP install directory ], [
+ MPFR_PARSE_DIRECTORY(["$withval"],[withval])
+ if test -z "$with_gmp_lib" && test -z "$with_gmp_include" ; then
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LDFLAGS="$LDFLAGS -L$withval/lib"
+ gmp_lib_path="$withval/lib"
+ else
+ AC_MSG_FAILURE([Do not use --with-gmp and --with-gmp-include/--with-gmp-lib options simultaneously.])
+ fi
+ ])
+
+AC_ARG_WITH(gmp_build,
+ [ --with-gmp-build=DIR GMP build directory (please read INSTALL file)],
+ [
+ MPFR_PARSE_DIRECTORY(["$withval"],[withval])
+ if test -z "$gmp_lib_path" && test -z "$with_gmp_include" ; then
+ CPPFLAGS="$CPPFLAGS -I$withval -I$withval/tune"
+ LDFLAGS="$LDFLAGS -L$withval -L$withval/.libs -L$withval/tune"
+ gmp_lib_path="$withval$PATH_SEPARATOR$withval/.libs$PATH_SEPARATOR$withval/tune"
+ if test -r $withval/Makefile ; then
+ GMP_CFLAGS=`$SED -n 's/^CFLAGS = //p' $withval/Makefile`
+ GMP_CC=`$SED -n 's/^CC = //p' $withval/Makefile`
+ GMP_SOURCE=`$SED -n 's/^srcdir = *//p' $withval/Makefile`
+ case "$GMP_SOURCE" in
+ .) GMP_SOURCE="" ;;
+ /*) ;;
+ ?*) GMP_SOURCE="$withval/$GMP_SOURCE" ;;
+ esac
+ if test -d "$GMP_SOURCE" ; then
+ CPPFLAGS="$CPPFLAGS -I$GMP_SOURCE -I$GMP_SOURCE/tune"
+ fi
+ fi
+ use_gmp_build=yes
+ else
+ AC_MSG_FAILURE([Do not use --with-gmp-build and other --with-gmp options simultaneously.])
+ fi
+ ])
+
+AC_ARG_WITH(mulhigh_size,
+ [ --with-mulhigh-size=NUM internal threshold table for mulhigh],
+ AC_DEFINE_UNQUOTED([MPFR_MULHIGH_SIZE],$withval, [Mulhigh size]))
+
+AC_ARG_ENABLE(gmp-internals,
+ [ --enable-gmp-internals enable use of GMP undocumented functions [[default=no]]],
+ [ case $enableval in
+ yes) AC_DEFINE([WANT_GMP_INTERNALS],1,[Want GMP internals]) ;;
+ no) ;;
+ *) AC_MSG_ERROR([bad value for --enable-gmp-internals: yes or no]) ;;
+ esac])
+
+AC_ARG_ENABLE(assert,
+ [ --enable-assert enable ASSERT checking [[default=no]]],
+ [ case $enableval in
+ yes) AC_DEFINE([MPFR_WANT_ASSERT],1,[Want assertion]) ;;
+ no) ;;
+ full) AC_DEFINE([MPFR_WANT_ASSERT],2,[Want assertion]) ;;
+ *) AC_MSG_ERROR([bad value for --enable-assert: yes, no or full]) ;;
+ esac])
+AC_ARG_ENABLE(logging,
+ [ --enable-logging enable MPFR logging (the system must support it)
+ [[default=no]]],
+ [ case $enableval in
+ yes) AC_DEFINE([MPFR_USE_LOGGING],1,[Log what MPFR does]) ;;
+ no) ;;
+ *) AC_MSG_ERROR([bad value for --enable-logging: yes or no]) ;;
+ esac])
+AC_ARG_ENABLE(thread-safe,
+ [ --disable-thread-safe explicitly disable TLS support
+ --enable-thread-safe build MPFR as thread safe, i.e. with TLS support
+ (the system must support it) [[default=autodetect]]],
+ [ case $enableval in
+ yes) ;;
+ no) ;;
+ *) AC_MSG_ERROR([bad value for --enable-thread-safe: yes or no]) ;;
+ esac])
+AC_ARG_ENABLE(warnings,
+ [ --enable-warnings allow MPFR to output warnings to stderr [[default=no]]],
+ [ case $enableval in
+ yes) AC_DEFINE([MPFR_USE_WARNINGS],1,[Allow MPFR to output warnings to stderr]) ;;
+ no) ;;
+ *) AC_MSG_ERROR([bad value for --enable-warnings: yes or no]) ;;
+ esac])
+
+AC_ARG_ENABLE(tests-timeout,
+ [ --enable-tests-timeout=NUM enable timeout (NUM seconds) for test programs
+ (NUM <= 9999) [[default=no]]; if enabled, env variable
+ $MPFR_TESTS_TIMEOUT overrides NUM (0: no timeout).],
+ [ case $enableval in
+ no) ;;
+ yes) AC_DEFINE([MPFR_TESTS_TIMEOUT], 0, [timeout limit]) ;;
+ [[0-9]]|[[0-9]][[0-9]]|[[0-9]][[0-9]][[0-9]]|[[0-9]][[0-9]][[0-9]][[0-9]])
+ AC_DEFINE_UNQUOTED([MPFR_TESTS_TIMEOUT], $enableval, [timeout limit]) ;;
+ *) AC_MSG_ERROR([bad value for --enable-tests-timeout]) ;;
+ esac])
+
+
+dnl
+dnl Setup CC and CFLAGS
+dnl
+
+dnl ********************************************************************
+dnl Check for CC and CFLAGS in gmp.h
+
+dnl Warning! The following tests must be done before Autoconf selects
+dnl a compiler. This means that some macros such as AC_PROG_CC and
+dnl AM_PROG_AR must be put after the following code.
+
+if test -z "$user_redefine_cc" && test "$cross_compiling" != yes ; then
+
+dnl We need to guess the C preprocessor instead of using AC_PROG_CPP,
+dnl since AC_PROG_CPP implies AC_PROG_CC, which chooses a compiler
+dnl (before we have the chance to get it from gmp.h) and does some
+dnl checking related to this compiler (such as dependency tracking
+dnl options); if the compiler changes due to __GMP_CC in gmp.h, one
+dnl would have incorrect settings.
+dnl FIXME: Move this in aclocal ?
+if test -z "$GMP_CC$GMP_CFLAGS" ; then
+ AC_MSG_CHECKING(for CC and CFLAGS in gmp.h)
+ GMP_CC=__GMP_CC
+ GMP_CFLAGS=__GMP_CFLAGS
+ # /lib/cpp under Solaris doesn't support some environment variables
+ # used by GCC, such as C_INCLUDE_PATH. If the user has set up such
+ # environment variables, he probably wants to use them. So, let us
+ # prefer cpp and gcc to /lib/cpp.
+ for cpp in cpp gcc /lib/cpp cc c99
+ do
+ case $cpp in
+ *cpp*) ;;
+ *) cpp="$cpp -E" ;;
+ esac
+ echo foo > conftest.c
+ if $cpp $CPPFLAGS conftest.c > /dev/null 2> /dev/null ; then
+ # Get CC
+ echo "#include \"gmp.h\"" > conftest.c
+ echo "MPFR_OPTION __GMP_CC" >> conftest.c
+ GMP_CC=`$cpp $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g;s/ *" *//g'`
+ # Get CFLAGS
+ echo "#include \"gmp.h\"" > conftest.c
+ echo "MPFR_OPTION __GMP_CFLAGS" >> conftest.c
+ unset rmpedantic
+ [test "$enable_logging" = yes && rmpedantic='s/[ "]-pedantic[ "]/ /g;']
+ GMP_CFLAGS=`$cpp $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e "$rmpedantic"'s/MPFR_OPTION //g;s/ *" *//g'`
+ break
+ fi
+ done
+ rm -f conftest*
+ if test "x$GMP_CC" = "x__GMP_CC" || test "x$GMP_CFLAGS" = "x__GMP_CFLAGS" ; then
+ AC_MSG_RESULT(no)
+ GMP_CFLAGS=
+ GMP_CC=
+ else
+ AC_MSG_RESULT(yes [CC=$GMP_CC CFLAGS=$GMP_CFLAGS])
+ fi
+fi
+
+dnl But these variables may be invalid, so we must check them first.
+dnl Note: we do not use AC_RUN_IFELSE, as it implies AC_PROG_CC.
+if test -n "$GMP_CC$GMP_CFLAGS" ; then
+ AC_MSG_CHECKING(for CC=$GMP_CC and CFLAGS=$GMP_CFLAGS)
+ echo "int main (void) { return 0; }" > conftest.c
+ if $GMP_CC $GMP_CFLAGS -o conftest conftest.c 2> /dev/null ; then
+ AC_MSG_RESULT(yes)
+ CFLAGS=$GMP_CFLAGS
+ CC=$GMP_CC
+ else
+ AC_MSG_RESULT(no)
+ fi
+ rm -f conftest*
+fi
+
+fi
+
+dnl ********************************************************************
+
+AC_PROG_CC
+AC_PROG_CPP
+AC_LANG(C)
+
+dnl Support unusual archivers.
+AM_PROG_AR
+
+dnl For GCC, _Decimal64 was introduced in GCC 4.3 for some targets
+dnl (note that it is not guaranteed to be available because it may
+dnl be disabled in the GCC build). See:
+dnl https://gcc.gnu.org/gcc-4.3/changes.html
+dnl _Decimal64 is not yet defined in GCC for C++:
+dnl https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51364
+dnl _Decimal64 support is broken with GCC 4.6.3 and 4.7.2 on powerpc64
+dnl with the mode32 ABI, e.g. "-m32 -mpowerpc64 -mtune=970 -O3"; this
+dnl is detected by the x != x test below.
+AC_ARG_ENABLE(decimal-float,
+ [ --enable-decimal-float build conversion functions from/to decimal floats
+ [[default=no]]],
+ [ case $enableval in
+ yes) AC_DEFINE([MPFR_WANT_DECIMAL_FLOATS],1,
+ [Build decimal float functions])
+ AC_MSG_CHECKING(if compiler knows _Decimal64)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[_Decimal64 x;]])],
+ [AC_MSG_RESULT(yes)
+ if test "$use_gmp_build" != yes ; then
+ AC_MSG_ERROR([decimal float support requires --with-gmp-build])
+ fi
+ AC_MSG_CHECKING(if _GMP_IEEE_FLOATS is defined)
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include "gmp.h"
+#include "gmp-impl.h"
+#ifndef _GMP_IEEE_FLOATS
+#error "_GMP_IEEE_FLOATS is not defined"
+#endif]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
+ AC_MSG_ERROR([decimal float support requires _GMP_IEEE_FLOATS])])
+ ],
+ [AC_MSG_RESULT(no)
+AC_MSG_ERROR([Compiler doesn't know _Decimal64 (ISO/IEC TR 24732).
+Please use another compiler or build MPFR without --enable-decimal-float.])]
+ )
+ AC_MSG_CHECKING(decimal float format)
+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <stdlib.h>
+]], [[
+volatile _Decimal64 x = 1;
+union { double d; _Decimal64 d64; } y;
+if (x != x) return 3;
+y.d64 = 1234567890123456.0dd;
+return y.d == 0.14894469406741037E-123 ? 0 :
+ y.d == 0.59075095508629822E-68 ? 1 : 2;
+]])], [AC_MSG_RESULT(DPD)
+ AC_DEFINE([DPD_FORMAT],1,[])],
+ [case "$?" in
+ 1) AC_MSG_RESULT(BID) ;;
+ 2) AC_MSG_FAILURE(neither DPD nor BID) ;;
+ 3) AC_MSG_FAILURE([_Decimal64 support is broken.
+Please use another compiler or build MPFR without --enable-decimal-float.]) ;;
+ *) AC_MSG_FAILURE(internal error) ;;
+ esac],
+ [AC_MSG_RESULT(assuming DPD)
+ AC_DEFINE([DPD_FORMAT],1,[])])
+ ;;
+ no) ;;
+ *) AC_MSG_ERROR([bad value for --enable-decimal-float: yes or no]) ;;
+ esac])
+
+dnl Check if compiler is ICC, and if such a case, disable GCC
+dnl And add some specific flags.
+dnl Don't add Warnings Flags (Otherwise you'll get more than 20000 warnings).
+dnl Add -long_double flags? Don't use -pc64 !
+dnl Notes (VL):
+dnl * With icc 10.1 20080212 on itanium, the __ICC macro is not defined,
+dnl even when the -icc option is used (contrary to what is documented
+dnl on the icc man page).
+dnl * When ICC is correctly detected (__ICC macro defined), unsetting
+dnl the GCC variable confuses libtool. See:
+dnl https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=485421
+dnl * If need be, the gcc predefined macros __GNUC_* can be disabled
+dnl thanks to the -no-gcc option.
+AC_MSG_CHECKING(for ICC)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if !defined(__ICC)
+# error "ICC Not Found"
+error
+#endif
+]], [[]])],[
+ AC_MSG_RESULT(yes)
+ CFLAGS="-fp_port -mp -wd1572 -wd265 -wd186 -wd239 $CFLAGS"
+],[AC_MSG_RESULT(no)])
+
+dnl If compiler is gcc, then use some specific flags.
+dnl But don't touch user other flags.
+if test "$test_CFLAGS" != set && test -n "$GCC"; then
+ CFLAGS="-Wpointer-arith $CFLAGS"
+ AC_MSG_CHECKING(whether the selected language is C++)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if defined (__cplusplus)
+# error "C++"
+error
+#endif
+ ]], [[]])],[
+ AC_MSG_RESULT(no)
+ CFLAGS="-Wmissing-prototypes $CFLAGS"
+ ],[
+ AC_MSG_RESULT(yes)
+ CFLAGS="-Wmissing-declarations -Wno-sign-compare $CFLAGS"
+ ])
+ CFLAGS="-Wall $CFLAGS"
+fi
+
+AM_PROG_CC_C_O
+
+case $host in
+ *-apple-darwin*)
+dnl This allows to take the first GMP library in the library paths,
+dnl whether it is dynamic or static. This behavior is more sensible,
+dnl in particular because it is the only way to link with a version
+dnl only available in static form when another version is available
+dnl in dynamic, and also for consistency, because the compiler will
+dnl take the first gmp.h found in the include paths (so, we need to
+dnl take a library that corresponds to this header file). This is a
+dnl common problem with darwin.
+ MPFR_LD_SEARCH_PATHS_FIRST ;;
+esac
+
+AC_C_CONST
+AC_C_VOLATILE
+MPFR_CONFIGS
+
+# (Based on GMP 5.1)
+# clock_gettime is in librt on *-*-osf5.1 and on glibc < 2.17, so add -lrt to
+# TUNE_LIBS if needed (e.g. if clock_gettime is not already in the C library).
+# On linux (tested on x86_32, 2.6.26), clock_getres reports ns accuracy,
+# while in a quick test on osf, clock_getres said only 1 millisecond.
+old_LIBS="$LIBS"
+AC_SEARCH_LIBS(clock_gettime, rt, [
+ AC_DEFINE([HAVE_CLOCK_GETTIME],1,[Define to 1 if you have the `clock_gettime' function])])
+TUNE_LIBS="$LIBS"
+LIBS="$old_LIBS"
+AC_SUBST(TUNE_LIBS)
+
+dnl
+dnl Setup GMP detection
+dnl
+
+dnl Check GMP Header
+AC_MSG_CHECKING(for gmp.h)
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include "gmp.h"
+]])],[AC_MSG_RESULT(yes)],[
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([gmp.h can't be found, or is unusable.])
+])
+
+dnl Configs for Windows DLLs.
+dnl libtool requires "-no-undefined" for win32 dll
+dnl It also disables the tests involving the linking with LIBGMP if DLL
+dnl
+dnl "-Wl,output-def" is used to get a .def file for use by MS lib to make
+dnl a .lib import library, described in the manual.
+dnl
+dnl Incidentally, libtool does generate an import library libmpfr.dll.a,
+dnl but it's "ar" format and cannot be used by the MS linker. There
+dnl doesn't seem to be any GNU tool for generating or converting to .lib.
+AC_SUBST(MPFR_LDFLAGS)
+AC_SUBST(LIBMPFR_LDFLAGS)
+LT_INIT(win32-dll)
+case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ AC_MSG_CHECKING(for DLL/static GMP)
+ if test "$enable_shared" = yes; then
+ MPFR_LDFLAGS="$MPFR_LDFLAGS -no-undefined"
+ LIBMPFR_LDFLAGS="$LIBMPFR_LDFLAGS -Wl,--output-def,.libs/libmpfr-4.dll.def"
+ dont_link_with_gmp="yes"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include "gmp.h"
+#if !__GMP_LIBGMP_DLL
+# error "Dead man"
+error
+#endif
+ ]], [[]])],[AC_MSG_RESULT(DLL)],[
+ AC_MSG_RESULT(static)
+ AC_MSG_ERROR([gmp.h isn't a DLL: use --enable-static --disable-shared]) ])
+ else
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include "gmp.h"
+#if __GMP_LIBGMP_DLL
+# error "Dead man"
+error
+#endif
+ ]], [[]])],[AC_MSG_RESULT(static)],[
+ AC_MSG_RESULT(DLL)
+ AC_MSG_ERROR([gmp.h is a DLL: use --disable-static --enable-shared]) ])
+ fi
+ ;;
+esac
+
+
+dnl
+dnl For mpfr-longlong.h - TODO: should be replaced (see acinclude.m4).
+dnl
+
+GMP_C_ATTRIBUTE_MODE
+
+
+dnl
+dnl Setup GMP detection (continued)
+dnl
+
+dnl Check minimal GMP version
+dnl We only guarantee that with a *functional* and recent enough GMP version,
+dnl MPFR will compile; we do not guarantee that GMP will compile.
+dnl In particular fat builds are broken in GMP 4.3.2 and GMP 5.0.0
+dnl (at least on 64-bit Core 2 under Linux),
+dnl see http://gmplib.org/list-archives/gmp-bugs/2011-August/002345.html.
+AC_MSG_CHECKING(for recent GMP)
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include "gmp.h"
+#if (__GNU_MP_VERSION*100+__GNU_MP_VERSION_MINOR*10 < 410)
+# error "min GMP version is 4.1.0"
+error
+#endif
+]])],[AC_MSG_RESULT(yes)],[
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([GMP 4.1.0 min required])
+])
+
+dnl Check if we can use internal header files of GMP (only --with-gmp-build)
+if test "$use_gmp_build" = yes ; then
+ AC_MSG_CHECKING(for gmp internal files)
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+ #include "gmp.h"
+ #include "gmp-impl.h"
+ #include "longlong.h"
+ ]])],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([MPFR_HAVE_GMP_IMPL],1,[Use GMP Internal Files])
+ ],[
+ AC_MSG_ERROR([header files gmp-impl.h and longlong.h not found])
+ ])
+fi
+
+dnl Check for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency.
+dnl Problems may occur if gmp.h was generated with some ABI
+dnl and is used with another ABI (or if nails are used).
+dnl This test doesn't need to link with libgmp (at least it shouldn't).
+AC_MSG_CHECKING(for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency)
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+#include <limits.h>
+#include "gmp.h"
+]], [[
+ if (GMP_NUMB_BITS == sizeof(mp_limb_t) * CHAR_BIT)
+ return 0;
+ fprintf (stderr, "GMP_NUMB_BITS = %ld\n", (long) GMP_NUMB_BITS);
+ fprintf (stderr, "sizeof(mp_limb_t) = %ld\n", (long) sizeof(mp_limb_t));
+ fprintf (stderr, "sizeof(mp_limb_t) * CHAR_BIT = %ld != GMP_NUMB_BITS\n",
+ (long) (sizeof(mp_limb_t) * CHAR_BIT));
+ return 1;
+]])], [AC_MSG_RESULT(yes)], [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([GMP_NUMB_BITS and sizeof(mp_limb_t) are not consistent.
+You probably need to change some of the GMP or MPFR compile options.
+See 'config.log' for details (search for GMP_NUMB_BITS).])],
+ [AC_MSG_RESULT([can't test])])
+
+
+dnl We really need to link using libtool. But it is impossible with the current
+dnl libtool.
+dnl The practical problems appear only under MS Windows since the library name
+dnl is libgmp-3 (due to libtool versionning). The best solution
+dnl is to believe it works under MS-Windows.
+if test "$dont_link_with_gmp" = yes ; then
+LIBS="-lgmp $LIBS"
+else
+
+dnl Check if we can link with GMP
+AC_CHECK_LIB(gmp, __gmpz_init, [LIBS="-lgmp $LIBS"],
+ [AC_MSG_ERROR(libgmp not found or uses a different ABI (including static vs shared).
+Please read the INSTALL file -- see "In case of problem".)])
+
+dnl Check for corresponding 'gmp.h' and libgmp.a
+AC_MSG_CHECKING(if gmp.h version and libgmp version are the same)
+dnl We do not set LD_LIBRARY_PATH, as it is not possible to set it just
+dnl before the test program is run, and we do not want to affect other
+dnl programs (such as the compiler), because the behavior could be
+dnl incorrect and even have security implications.
+dnl WARNING! LD_RUN_PATH is not taken into account by the GNU gold ld,
+dnl e.g. from binutils-gold 2.22-5 under Debian; see
+dnl https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=660813
+saved_LD_RUN_PATH="$LD_RUN_PATH"
+LD_RUN_PATH="${LD_RUN_PATH:+$LD_RUN_PATH$PATH_SEPARATOR}$gmp_lib_path"
+export LD_RUN_PATH
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+#include <string.h>
+#include "gmp.h"
+]], [[
+ char buffer[100];
+ sprintf (buffer, "%d.%d.%d", __GNU_MP_VERSION, __GNU_MP_VERSION_MINOR,
+ __GNU_MP_VERSION_PATCHLEVEL);
+ printf ("(%s/%s) ", buffer, gmp_version);
+ if (strcmp (buffer, gmp_version) == 0)
+ return 0;
+ if (__GNU_MP_VERSION_PATCHLEVEL != 0)
+ return 1;
+ sprintf (buffer, "%d.%d", __GNU_MP_VERSION, __GNU_MP_VERSION_MINOR);
+ return (strcmp (buffer, gmp_version) != 0) ? 1 : 0;
+]])],
+ [AC_MSG_RESULT(yes)
+ MPFR_CHECK_GMP
+ MPFR_CHECK_DBL2INT_BUG
+ MPFR_CHECK_PRINTF_SPEC],
+ [AC_MSG_RESULT(no)
+ AC_MSG_WARN([==========================================================])
+ AC_MSG_WARN(['gmp.h' and 'libgmp' seem to have different versions or])
+ AC_MSG_WARN([we cannot run a program linked with GMP (if you cannot])
+ AC_MSG_WARN([see the version numbers above). A cause may be different])
+ AC_MSG_WARN([GMP versions with different ABI's or the use of --with-gmp])
+ AC_MSG_WARN([or --with-gmp-include with a system include directory])
+ AC_MSG_WARN([(such as /usr/include or /usr/local/include).])
+ AC_MSG_WARN([However since we can't use 'libtool' inside the configure,])
+ AC_MSG_WARN([we can't be sure. See 'config.log' for details.])
+ AC_MSG_WARN([CC="$CC"])
+ AC_MSG_WARN([CFLAGS="$CFLAGS"])
+ AC_MSG_WARN([CPPFLAGS="$CPPFLAGS"])
+ AC_MSG_WARN([LDFLAGS="$LDFLAGS"])
+ AC_MSG_WARN([LIBS="$LIBS"])
+ AC_MSG_WARN([Temporary LD_RUN_PATH was "$LD_RUN_PATH".])
+ AC_MSG_WARN([==========================================================])
+ ],AC_MSG_RESULT([can not test])
+)
+LD_RUN_PATH="$saved_LD_RUN_PATH"
+
+dnl Warning! __gmpn_rootrem is an internal GMP symbol; thus its behavior
+dnl may change or this symbol may be removed in the future (without being
+dnl handled by the library versioning system, which is even worse, as this
+dnl can mean undetected incompatibilities in case of GMP library upgrade,
+dnl without rebuilding MPFR). So, this symbol must not be used, unless
+dnl WANT_GMP_INTERNALS is defined. Only the GMP public API should be used
+dnl by default, in particular by binary distributions. Moreover the check
+dnl below may yield an incorrect result as libtool isn't used in configure
+dnl (see above).
+dnl Same for __gmpn_sbpi1_divappr_q.
+AC_CHECK_FUNCS([__gmpn_rootrem __gmpn_sbpi1_divappr_q])
+
+dnl End of tests which need to link with GMP.
+fi
+
+dnl Remove also many MACROS (AC_DEFINE) which are unused by MPFR
+dnl and polluate (and slow down because libtool has to parse them) the build.
+if test -f confdefs.h; then
+ $SED '/#define PACKAGE_/d' <confdefs.h >confdefs.tmp
+ $SED '/#define HAVE_STRING/d' <confdefs.tmp >confdefs.h
+ $SED '/#define HAVE_ALLOCA /d' <confdefs.h >confdefs.tmp
+ $SED '/#define HAVE_DLFCN_H/d' <confdefs.tmp >confdefs.h
+ $SED '/#define HAVE_MEM/d' <confdefs.h >confdefs.tmp
+ $SED '/#define STDC_HEADERS/d' <confdefs.tmp >confdefs.h
+ $SED '/#define HAVE_STRTOL/d' <confdefs.h >confdefs.tmp
+ $SED '/#define HAVE_STDLIB_H/d' <confdefs.tmp >confdefs.h
+ $SED '/#define HAVE_UNISTD_H/d' <confdefs.h >confdefs.tmp
+ $SED '/#define HAVE_STDC_HEADERS/d' <confdefs.tmp >confdefs.h
+ $SED '/#define HAVE_LONG_DOUBLE/d' <confdefs.h >confdefs.tmp
+ $SED '/#define HAVE_SYS_STAT_H/d' <confdefs.tmp >confdefs.h
+ $SED '/#define HAVE_SYS_TYPES_H/d' <confdefs.h >confdefs.tmp
+ $SED '/#define PROTOTYPES/d' <confdefs.tmp >confdefs.h
+ $SED '/#define __PROTOTYPES/d' <confdefs.h >confdefs.tmp
+
+ mv confdefs.tmp confdefs.h
+fi
+
+if $EGREP -q -e '-dev$' $srcdir/VERSION; then
+ AC_SUBST([DATAFILES])dnl
+ DATAFILES=`echo \`$SED -n \
+ 's/^ *data_check *("\(data\/[[^"]]*\)".*/tests\/\1/p' \
+ $srcdir/tests/*.c\``
+fi
+
+dnl Output
+AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile tests/Makefile tune/Makefile src/mparam.h:src/mparam_h.in])
+AC_OUTPUT
+
+dnl NEWS README AUTHORS Changelog
diff --git a/Build/source/libs/mpfr/mpfr-src/src/Makefile.am b/Build/source/libs/mpfr/mpfr-src/src/Makefile.am
new file mode 100644
index 00000000000..fc0c3384040
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/Makefile.am
@@ -0,0 +1,93 @@
+# Copyright 2000-2015 Free Software Foundation, Inc.
+# This Makefile.am is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+EXTRA_DIST = round_raw_generic.c jyn_asympt.c x86/core2/mparam.h \
+ x86/mparam.h x86_64/core2/mparam.h x86_64/pentium4/mparam.h \
+ ia64/mparam.h arm/mparam.h powerpc64/mparam.h sparc64/mparam.h \
+ generic/mparam.h amd/athlon/mparam.h amd/k8/mparam.h \
+ amd/amdfam10/mparam.h powerpc32/mparam.h hppa/mparam.h
+
+include_HEADERS = mpfr.h mpf2mpfr.h
+
+BUILT_SOURCES = mparam.h
+
+
+lib_LTLIBRARIES = libmpfr.la
+
+libmpfr_la_SOURCES = mpfr.h mpf2mpfr.h mpfr-gmp.h mpfr-impl.h mpfr-intmax.h \
+mpfr-longlong.h mpfr-thread.h exceptions.c extract.c uceil_exp2.c \
+uceil_log2.c ufloor_log2.c add.c add1.c add_ui.c agm.c clear.c cmp.c \
+cmp_abs.c cmp_si.c cmp_ui.c comparisons.c div_2exp.c div_2si.c \
+div_2ui.c div.c div_ui.c dump.c eq.c exp10.c exp2.c exp3.c exp.c \
+frac.c frexp.c get_d.c get_exp.c get_str.c init.c inp_str.c isinteger.c \
+isinf.c isnan.c isnum.c const_log2.c log.c modf.c mul_2exp.c mul_2si.c \
+mul_2ui.c mul.c mul_ui.c neg.c next.c out_str.c printf.c vasprintf.c \
+const_pi.c pow.c pow_si.c pow_ui.c print_raw.c print_rnd_mode.c \
+reldiff.c round_prec.c set.c setmax.c setmin.c set_d.c set_dfl_prec.c \
+set_exp.c set_rnd.c set_f.c set_prc_raw.c set_prec.c set_q.c set_si.c \
+set_str.c set_str_raw.c set_ui.c set_z.c sqrt.c sqrt_ui.c sub.c sub1.c \
+sub_ui.c rint.c ui_div.c ui_sub.c urandom.c urandomb.c get_z_exp.c \
+swap.c factorial.c cosh.c sinh.c tanh.c sinh_cosh.c acosh.c asinh.c \
+atanh.c atan.c cmp2.c exp_2.c asin.c const_euler.c cos.c sin.c tan.c \
+fma.c fms.c hypot.c log1p.c expm1.c log2.c log10.c ui_pow.c \
+ui_pow_ui.c minmax.c dim.c signbit.c copysign.c setsign.c gmp_op.c \
+init2.c acos.c sin_cos.c set_nan.c set_inf.c set_zero.c powerof2.c \
+gamma.c set_ld.c get_ld.c cbrt.c volatile.c fits_s.h fits_sshort.c \
+fits_sint.c fits_slong.c fits_u.h fits_ushort.c fits_uint.c \
+fits_ulong.c fits_uintmax.c fits_intmax.c get_si.c get_ui.c zeta.c \
+cmp_d.c erf.c inits.c inits2.c clears.c sgn.c check.c sub1sp.c \
+version.c mpn_exp.c mpfr-gmp.c mp_clz_tab.c sum.c add1sp.c \
+free_cache.c si_op.c cmp_ld.c set_ui_2exp.c set_si_2exp.c set_uj.c \
+set_sj.c get_sj.c get_uj.c get_z.c iszero.c cache.c sqr.c \
+int_ceil_log2.c isqrt.c strtofr.c pow_z.c logging.c mulders.c get_f.c \
+round_p.c erfc.c atan2.c subnormal.c const_catalan.c root.c \
+gen_inverse.h sec.c csc.c cot.c eint.c sech.c csch.c coth.c \
+round_near_x.c constant.c abort_prec_max.c stack_interface.c lngamma.c \
+zeta_ui.c set_d64.c get_d64.c jn.c yn.c rem1.c get_patches.c add_d.c \
+sub_d.c d_sub.c mul_d.c div_d.c d_div.c li2.c rec_sqrt.c min_prec.c \
+buildopt.c digamma.c bernoulli.c isregular.c set_flt.c get_flt.c \
+scale2.c set_z_exp.c ai.c gammaonethird.c ieee_floats.h \
+grandom.c
+
+libmpfr_la_LIBADD = @LIBOBJS@
+
+# Libtool -version-info CURRENT[:REVISION[:AGE]] for libmpfr.la
+#
+# 1. No interfaces changed, only implementations (good):
+# ==> Increment REVISION.
+# 2. Interfaces added, none removed (good):
+# ==> Increment CURRENT, increment AGE, set REVISION to 0.
+# 3. Interfaces removed or changed (BAD, breaks upward compatibility):
+# ==> Increment CURRENT, set AGE and REVISION to 0.
+#
+# MPFR -version-info
+# 2.1.x -
+# 2.2.x 1:x:0
+# 2.3.x 2:x:1
+# 2.4.x 3:x:2
+# 3.0.x 4:x:0
+# 3.1.x 5:x:1
+libmpfr_la_LDFLAGS = $(MPFR_LDFLAGS) $(LIBMPFR_LDFLAGS) -version-info 5:3:1
+
+# Important note: If for some reason, srcdir is read-only at build time
+# (and you use objdir != srcdir), then you need to rebuild get_patches.c
+# (with "make get_patches.c") just after patching the MPFR source. This
+# should not be a problem in practice, in particular because "make dist"
+# automatically rebuilds get_patches.c before generating the archives.
+$(srcdir)/get_patches.c: $(top_srcdir)/PATCHES $(top_srcdir)/tools/get_patches.sh
+ (cd $(top_srcdir) && ./tools/get_patches.sh) > $@ || rm -f $@
+
+# Do not add get_patches.c to CLEANFILES so that this file doesn't
+# need to be (re)built as long as no patches are applied. Anyway the
+# update of this file should be regarded as part of the patch process,
+# and "make clean" shouldn't remove it, just like it doesn't remove
+# what has been changed by "patch".
+#CLEANFILES = get_patches.c
diff --git a/Build/source/libs/mpfr/mpfr-src/src/abort_prec_max.c b/Build/source/libs/mpfr/mpfr-src/src/abort_prec_max.c
new file mode 100644
index 00000000000..57cd1d20858
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/abort_prec_max.c
@@ -0,0 +1,32 @@
+/* mpfr_abort_prec_max -- Abort due to maximal precision overflow.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdlib.h>
+
+#include "mpfr-impl.h"
+
+void mpfr_abort_prec_max (void)
+{
+ fprintf (stderr, "MPFR: Maximal precision overflow\n");
+ abort ();
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/acos.c b/Build/source/libs/mpfr/mpfr-src/src/acos.c
new file mode 100644
index 00000000000..7b2bf9e93e2
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/acos.c
@@ -0,0 +1,146 @@
+/* mpfr_acos -- arc-cosinus of a floating-point number
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_acos (mpfr_ptr acos, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t xp, arcc, tmp;
+ mpfr_exp_t supplement;
+ mpfr_prec_t prec;
+ int sign, compared, inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("acos[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec(acos), mpfr_log_prec, acos, inexact));
+
+ /* Singular cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x) || MPFR_IS_INF (x))
+ {
+ MPFR_SET_NAN (acos);
+ MPFR_RET_NAN;
+ }
+ else /* necessarily x=0 */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(x));
+ /* acos(0)=Pi/2 */
+ MPFR_SAVE_EXPO_MARK (expo);
+ inexact = mpfr_const_pi (acos, rnd_mode);
+ mpfr_div_2ui (acos, acos, 1, rnd_mode); /* exact */
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (acos, inexact, rnd_mode);
+ }
+ }
+
+ /* Set x_p=|x| */
+ sign = MPFR_SIGN (x);
+ mpfr_init2 (xp, MPFR_PREC (x));
+ mpfr_abs (xp, x, MPFR_RNDN); /* Exact */
+
+ compared = mpfr_cmp_ui (xp, 1);
+
+ if (MPFR_UNLIKELY (compared >= 0))
+ {
+ mpfr_clear (xp);
+ if (compared > 0) /* acos(x) = NaN for x > 1 */
+ {
+ MPFR_SET_NAN(acos);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ if (MPFR_IS_POS_SIGN (sign)) /* acos(+1) = 0 */
+ return mpfr_set_ui (acos, 0, rnd_mode);
+ else /* acos(-1) = Pi */
+ return mpfr_const_pi (acos, rnd_mode);
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Compute the supplement */
+ mpfr_ui_sub (xp, 1, xp, MPFR_RNDD);
+ if (MPFR_IS_POS_SIGN (sign))
+ supplement = 2 - 2 * MPFR_GET_EXP (xp);
+ else
+ supplement = 2 - MPFR_GET_EXP (xp);
+ mpfr_clear (xp);
+
+ prec = MPFR_PREC (acos);
+ prec += MPFR_INT_CEIL_LOG2(prec) + 10 + supplement;
+
+ /* VL: The following change concerning prec comes from r3145
+ "Optimize mpfr_acos by choosing a better initial precision."
+ but it doesn't seem to be correct and leads to problems (assertion
+ failure or very important inefficiency) with tiny arguments.
+ Therefore, I've disabled it. */
+ /* If x ~ 2^-N, acos(x) ~ PI/2 - x - x^3/6
+ If Prec < 2*N, we can't round since x^3/6 won't be counted. */
+#if 0
+ if (MPFR_PREC (acos) >= MPFR_PREC (x) && MPFR_GET_EXP (x) < 0)
+ {
+ mpfr_uexp_t pmin = (mpfr_uexp_t) (-2 * MPFR_GET_EXP (x)) + 5;
+ MPFR_ASSERTN (pmin <= MPFR_PREC_MAX);
+ if (prec < pmin)
+ prec = pmin;
+ }
+#endif
+
+ mpfr_init2 (tmp, prec);
+ mpfr_init2 (arcc, prec);
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ /* acos(x) = Pi/2 - asin(x) = Pi/2 - atan(x/sqrt(1-x^2)) */
+ mpfr_sqr (tmp, x, MPFR_RNDN);
+ mpfr_ui_sub (tmp, 1, tmp, MPFR_RNDN);
+ mpfr_sqrt (tmp, tmp, MPFR_RNDN);
+ mpfr_div (tmp, x, tmp, MPFR_RNDN);
+ mpfr_atan (arcc, tmp, MPFR_RNDN);
+ mpfr_const_pi (tmp, MPFR_RNDN);
+ mpfr_div_2ui (tmp, tmp, 1, MPFR_RNDN);
+ mpfr_sub (arcc, tmp, arcc, MPFR_RNDN);
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (arcc, prec - supplement,
+ MPFR_PREC (acos), rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (tmp, prec);
+ mpfr_set_prec (arcc, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (acos, arcc, rnd_mode);
+ mpfr_clear (tmp);
+ mpfr_clear (arcc);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (acos, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/acosh.c b/Build/source/libs/mpfr/mpfr-src/src/acosh.c
new file mode 100644
index 00000000000..a0f96dc4ae3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/acosh.c
@@ -0,0 +1,158 @@
+/* mpfr_acosh -- inverse hyperbolic cosine
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of acosh is done by *
+ * acosh= ln(x + sqrt(x^2-1)) */
+
+int
+mpfr_acosh (mpfr_ptr y, mpfr_srcptr x , mpfr_rnd_t rnd_mode)
+{
+ MPFR_SAVE_EXPO_DECL (expo);
+ int inexact;
+ int comp;
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ /* Deal with special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ /* Nan, or zero or -Inf */
+ if (MPFR_IS_INF (x) && MPFR_IS_POS (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ else /* Nan, or zero or -Inf */
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ }
+ comp = mpfr_cmp_ui (x, 1);
+ if (MPFR_UNLIKELY (comp < 0))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_UNLIKELY (comp == 0))
+ {
+ MPFR_SET_ZERO (y); /* acosh(1) = 0 */
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variables */
+ mpfr_t t;
+ /* Declaration of the size variables */
+ mpfr_prec_t Ny = MPFR_PREC(y); /* Precision of output variable */
+ mpfr_prec_t Nt; /* Precision of the intermediary variable */
+ mpfr_exp_t err, exp_te, d; /* Precision of error */
+ MPFR_ZIV_DECL (loop);
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + 4 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ /* initialization of intermediary variables */
+ mpfr_init2 (t, Nt);
+
+ /* First computation of acosh */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* compute acosh */
+ MPFR_BLOCK (flags, mpfr_mul (t, x, x, MPFR_RNDD)); /* x^2 */
+ if (MPFR_OVERFLOW (flags))
+ {
+ mpfr_t ln2;
+ mpfr_prec_t pln2;
+
+ /* As x is very large and the precision is not too large, we
+ assume that we obtain the same result by evaluating ln(2x).
+ We need to compute ln(x) + ln(2) as 2x can overflow. TODO:
+ write a proof and add an MPFR_ASSERTN. */
+ mpfr_log (t, x, MPFR_RNDN); /* err(log) < 1/2 ulp(t) */
+ pln2 = Nt - MPFR_PREC_MIN < MPFR_GET_EXP (t) ?
+ MPFR_PREC_MIN : Nt - MPFR_GET_EXP (t);
+ mpfr_init2 (ln2, pln2);
+ mpfr_const_log2 (ln2, MPFR_RNDN); /* err(ln2) < 1/2 ulp(t) */
+ mpfr_add (t, t, ln2, MPFR_RNDN); /* err <= 3/2 ulp(t) */
+ mpfr_clear (ln2);
+ err = 1;
+ }
+ else
+ {
+ exp_te = MPFR_GET_EXP (t);
+ mpfr_sub_ui (t, t, 1, MPFR_RNDD); /* x^2-1 */
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO (t)))
+ {
+ /* This means that x is very close to 1: x = 1 + t with
+ t < 2^(-Nt). We have: acosh(x) = sqrt(2t) (1 - eps(t))
+ with 0 < eps(t) < t / 12. */
+ mpfr_sub_ui (t, x, 1, MPFR_RNDD); /* t = x - 1 */
+ mpfr_mul_2ui (t, t, 1, MPFR_RNDN); /* 2t */
+ mpfr_sqrt (t, t, MPFR_RNDN); /* sqrt(2t) */
+ err = 1;
+ }
+ else
+ {
+ d = exp_te - MPFR_GET_EXP (t);
+ mpfr_sqrt (t, t, MPFR_RNDN); /* sqrt(x^2-1) */
+ mpfr_add (t, t, x, MPFR_RNDN); /* sqrt(x^2-1)+x */
+ mpfr_log (t, t, MPFR_RNDN); /* ln(sqrt(x^2-1)+x) */
+
+ /* error estimate -- see algorithms.tex */
+ err = 3 + MAX (1, d) - MPFR_GET_EXP (t);
+ /* error is bounded by 1/2 + 2^err <= 2^(max(0,1+err)) */
+ err = MAX (0, 1 + err);
+ }
+ }
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, Nt - err, Ny, rnd_mode)))
+ break;
+
+ /* reactualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (y, t, rnd_mode);
+
+ mpfr_clear (t);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/add.c b/Build/source/libs/mpfr/mpfr-src/src/add.c
new file mode 100644
index 00000000000..c70981d9dfd
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/add.c
@@ -0,0 +1,111 @@
+/* mpfr_add -- add two floating-point numbers
+
+Copyright 1999-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_add (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ MPFR_LOG_FUNC
+ (("b[%Pu]=%.*Rg c[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (b), mpfr_log_prec, b,
+ mpfr_get_prec (c), mpfr_log_prec, c, rnd_mode),
+ ("a[%Pu]=%.*Rg", mpfr_get_prec (a), mpfr_log_prec, a));
+
+ if (MPFR_ARE_SINGULAR(b,c))
+ {
+ if (MPFR_IS_NAN(b) || MPFR_IS_NAN(c))
+ {
+ MPFR_SET_NAN(a);
+ MPFR_RET_NAN;
+ }
+ /* neither b nor c is NaN here */
+ else if (MPFR_IS_INF(b))
+ {
+ if (!MPFR_IS_INF(c) || MPFR_SIGN(b) == MPFR_SIGN(c))
+ {
+ MPFR_SET_INF(a);
+ MPFR_SET_SAME_SIGN(a, b);
+ MPFR_RET(0); /* exact */
+ }
+ else
+ {
+ MPFR_SET_NAN(a);
+ MPFR_RET_NAN;
+ }
+ }
+ else if (MPFR_IS_INF(c))
+ {
+ MPFR_SET_INF(a);
+ MPFR_SET_SAME_SIGN(a, c);
+ MPFR_RET(0); /* exact */
+ }
+ /* now either b or c is zero */
+ else if (MPFR_IS_ZERO(b))
+ {
+ if (MPFR_IS_ZERO(c))
+ {
+ /* for round away, we take the same convention for 0 + 0
+ as for round to zero or to nearest: it always gives +0,
+ except (-0) + (-0) = -0. */
+ MPFR_SET_SIGN(a,
+ (rnd_mode != MPFR_RNDD ?
+ ((MPFR_IS_NEG(b) && MPFR_IS_NEG(c)) ? -1 : 1) :
+ ((MPFR_IS_POS(b) && MPFR_IS_POS(c)) ? 1 : -1)));
+ MPFR_SET_ZERO(a);
+ MPFR_RET(0); /* 0 + 0 is exact */
+ }
+ return mpfr_set (a, c, rnd_mode);
+ }
+ else
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(c));
+ return mpfr_set (a, b, rnd_mode);
+ }
+ }
+
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (b));
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (c));
+
+ if (MPFR_UNLIKELY(MPFR_SIGN(b) != MPFR_SIGN(c)))
+ { /* signs differ, it is a subtraction */
+ if (MPFR_LIKELY(MPFR_PREC(a) == MPFR_PREC(b)
+ && MPFR_PREC(b) == MPFR_PREC(c)))
+ return mpfr_sub1sp(a, b, c, rnd_mode);
+ else
+ return mpfr_sub1(a, b, c, rnd_mode);
+ }
+ else
+ { /* signs are equal, it's an addition */
+ if (MPFR_LIKELY(MPFR_PREC(a) == MPFR_PREC(b)
+ && MPFR_PREC(b) == MPFR_PREC(c)))
+ if (MPFR_GET_EXP(b) < MPFR_GET_EXP(c))
+ return mpfr_add1sp(a, c, b, rnd_mode);
+ else
+ return mpfr_add1sp(a, b, c, rnd_mode);
+ else
+ if (MPFR_GET_EXP(b) < MPFR_GET_EXP(c))
+ return mpfr_add1(a, c, b, rnd_mode);
+ else
+ return mpfr_add1(a, b, c, rnd_mode);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/add1.c b/Build/source/libs/mpfr/mpfr-src/src/add1.c
new file mode 100644
index 00000000000..b7b3094acab
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/add1.c
@@ -0,0 +1,538 @@
+/* mpfr_add1 -- internal function to perform a "real" addition
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* compute sign(b) * (|b| + |c|), assuming b and c have same sign,
+ and are not NaN, Inf, nor zero. */
+int
+mpfr_add1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mp_limb_t *ap, *bp, *cp;
+ mpfr_prec_t aq, bq, cq, aq2;
+ mp_size_t an, bn, cn;
+ mpfr_exp_t difw, exp;
+ int sh, rb, fb, inex;
+ mpfr_uexp_t diff_exp;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_ASSERTD(MPFR_IS_PURE_FP(b));
+ MPFR_ASSERTD(MPFR_IS_PURE_FP(c));
+
+ MPFR_TMP_MARK(marker);
+
+ aq = MPFR_PREC(a);
+ bq = MPFR_PREC(b);
+ cq = MPFR_PREC(c);
+
+ an = MPFR_PREC2LIMBS (aq); /* number of limbs of a */
+ aq2 = (mpfr_prec_t) an * GMP_NUMB_BITS;
+ sh = aq2 - aq; /* non-significant bits in low limb */
+
+ bn = MPFR_PREC2LIMBS (bq); /* number of limbs of b */
+ cn = MPFR_PREC2LIMBS (cq); /* number of limbs of c */
+
+ ap = MPFR_MANT(a);
+ bp = MPFR_MANT(b);
+ cp = MPFR_MANT(c);
+
+ if (MPFR_UNLIKELY(ap == bp))
+ {
+ bp = MPFR_TMP_LIMBS_ALLOC (bn);
+ MPN_COPY (bp, ap, bn);
+ if (ap == cp)
+ { cp = bp; }
+ }
+ else if (MPFR_UNLIKELY(ap == cp))
+ {
+ cp = MPFR_TMP_LIMBS_ALLOC (cn);
+ MPN_COPY(cp, ap, cn);
+ }
+
+ exp = MPFR_GET_EXP (b);
+ MPFR_SET_SAME_SIGN(a, b);
+ MPFR_UPDATE2_RND_MODE(rnd_mode, MPFR_SIGN(b));
+ /* now rnd_mode is either MPFR_RNDN, MPFR_RNDZ or MPFR_RNDA */
+ /* Note: exponents can be negative, but the unsigned subtraction is
+ a modular subtraction, so that one gets the correct result. */
+ diff_exp = (mpfr_uexp_t) exp - MPFR_GET_EXP(c);
+
+ /*
+ * 1. Compute the significant part A', the non-significant bits of A
+ * are taken into account.
+ *
+ * 2. Perform the rounding. At each iteration, we remember:
+ * _ r = rounding bit
+ * _ f = following bits (same value)
+ * where the result has the form: [number A]rfff...fff + a remaining
+ * value in the interval [0,2) ulp. We consider the most significant
+ * bits of the remaining value to update the result; a possible carry
+ * is immediately taken into account and A is updated accordingly. As
+ * soon as the bits f don't have the same value, A can be rounded.
+ * Variables:
+ * _ rb = rounding bit (0 or 1).
+ * _ fb = following bits (0 or 1), then sticky bit.
+ * If fb == 0, the only thing that can change is the sticky bit.
+ */
+
+ rb = fb = -1; /* means: not initialized */
+
+ if (MPFR_UNLIKELY (MPFR_UEXP (aq2) <= diff_exp))
+ { /* c does not overlap with a' */
+ if (MPFR_UNLIKELY(an > bn))
+ { /* a has more limbs than b */
+ /* copy b to the most significant limbs of a */
+ MPN_COPY(ap + (an - bn), bp, bn);
+ /* zero the least significant limbs of a */
+ MPN_ZERO(ap, an - bn);
+ }
+ else /* an <= bn */
+ {
+ /* copy the most significant limbs of b to a */
+ MPN_COPY(ap, bp + (bn - an), an);
+ }
+ }
+ else /* aq2 > diff_exp */
+ { /* c overlaps with a' */
+ mp_limb_t *a2p;
+ mp_limb_t cc;
+ mpfr_prec_t dif;
+ mp_size_t difn, k;
+ int shift;
+
+ /* copy c (shifted) into a */
+
+ dif = aq2 - diff_exp;
+ /* dif is the number of bits of c which overlap with a' */
+
+ difn = MPFR_PREC2LIMBS (dif);
+ /* only the highest difn limbs from c have to be considered */
+ if (MPFR_UNLIKELY(difn > cn))
+ {
+ /* c doesn't have enough limbs; take into account the virtual
+ zero limbs now by zeroing the least significant limbs of a' */
+ MPFR_ASSERTD(difn - cn <= an);
+ MPN_ZERO(ap, difn - cn);
+ difn = cn;
+ }
+ k = diff_exp / GMP_NUMB_BITS;
+
+ /* zero the most significant k limbs of a */
+ a2p = ap + (an - k);
+ MPN_ZERO(a2p, k);
+
+ shift = diff_exp % GMP_NUMB_BITS;
+
+ if (MPFR_LIKELY(shift))
+ {
+ MPFR_ASSERTD(a2p - difn >= ap);
+ cc = mpn_rshift(a2p - difn, cp + (cn - difn), difn, shift);
+ if (MPFR_UNLIKELY(a2p - difn > ap))
+ *(a2p - difn - 1) = cc;
+ }
+ else
+ MPN_COPY(a2p - difn, cp + (cn - difn), difn);
+
+ /* add b to a */
+ cc = MPFR_UNLIKELY(an > bn)
+ ? mpn_add_n(ap + (an - bn), ap + (an - bn), bp, bn)
+ : mpn_add_n(ap, ap, bp + (bn - an), an);
+
+ if (MPFR_UNLIKELY(cc)) /* carry */
+ {
+ if (MPFR_UNLIKELY(exp == __gmpfr_emax))
+ {
+ inex = mpfr_overflow (a, rnd_mode, MPFR_SIGN(a));
+ goto end_of_add;
+ }
+ exp++;
+ rb = (ap[0] >> sh) & 1; /* LSB(a) --> rounding bit after the shift */
+ if (MPFR_LIKELY(sh))
+ {
+ mp_limb_t mask, bb;
+
+ mask = MPFR_LIMB_MASK (sh);
+ bb = ap[0] & mask;
+ ap[0] &= (~mask) << 1;
+ if (bb == 0)
+ fb = 0;
+ else if (bb == mask)
+ fb = 1;
+ }
+ mpn_rshift(ap, ap, an, 1);
+ ap[an-1] += MPFR_LIMB_HIGHBIT;
+ if (sh && fb < 0)
+ goto rounding;
+ } /* cc */
+ } /* aq2 > diff_exp */
+
+ /* non-significant bits of a */
+ if (MPFR_LIKELY(rb < 0 && sh))
+ {
+ mp_limb_t mask, bb;
+
+ mask = MPFR_LIMB_MASK (sh);
+ bb = ap[0] & mask;
+ ap[0] &= ~mask;
+ rb = bb >> (sh - 1);
+ if (MPFR_LIKELY(sh > 1))
+ {
+ mask >>= 1;
+ bb &= mask;
+ if (bb == 0)
+ fb = 0;
+ else if (bb == mask)
+ fb = 1;
+ else
+ goto rounding;
+ }
+ }
+
+ /* determine rounding and sticky bits (and possible carry) */
+
+ difw = (mpfr_exp_t) an - (mpfr_exp_t) (diff_exp / GMP_NUMB_BITS);
+ /* difw is the number of limbs from b (regarded as having an infinite
+ precision) that have already been combined with c; -n if the next
+ n limbs from b won't be combined with c. */
+
+ if (MPFR_UNLIKELY(bn > an))
+ { /* there are still limbs from b that haven't been taken into account */
+ mp_size_t bk;
+
+ if (fb == 0 && difw <= 0)
+ {
+ fb = 1; /* c hasn't been taken into account ==> sticky bit != 0 */
+ goto rounding;
+ }
+
+ bk = bn - an; /* index of lowest considered limb from b, > 0 */
+ while (difw < 0)
+ { /* ulp(next limb from b) > msb(c) */
+ mp_limb_t bb;
+
+ bb = bp[--bk];
+
+ MPFR_ASSERTD(fb != 0);
+ if (fb > 0)
+ {
+ if (bb != MP_LIMB_T_MAX)
+ {
+ fb = 1; /* c hasn't been taken into account
+ ==> sticky bit != 0 */
+ goto rounding;
+ }
+ }
+ else /* fb not initialized yet */
+ {
+ if (rb < 0) /* rb not initialized yet */
+ {
+ rb = bb >> (GMP_NUMB_BITS - 1);
+ bb |= MPFR_LIMB_HIGHBIT;
+ }
+ fb = 1;
+ if (bb != MP_LIMB_T_MAX)
+ goto rounding;
+ }
+
+ if (bk == 0)
+ { /* b has entirely been read */
+ fb = 1; /* c hasn't been taken into account
+ ==> sticky bit != 0 */
+ goto rounding;
+ }
+
+ difw++;
+ } /* while */
+ MPFR_ASSERTD(bk > 0 && difw >= 0);
+
+ if (difw <= cn)
+ {
+ mp_size_t ck;
+ mp_limb_t cprev;
+ int difs;
+
+ ck = cn - difw;
+ difs = diff_exp % GMP_NUMB_BITS;
+
+ if (difs == 0 && ck == 0)
+ goto c_read;
+
+ cprev = ck == cn ? 0 : cp[ck];
+
+ if (fb < 0)
+ {
+ mp_limb_t bb, cc;
+
+ if (difs)
+ {
+ cc = cprev << (GMP_NUMB_BITS - difs);
+ if (--ck >= 0)
+ {
+ cprev = cp[ck];
+ cc += cprev >> difs;
+ }
+ }
+ else
+ cc = cp[--ck];
+
+ bb = bp[--bk] + cc;
+
+ if (bb < cc /* carry */
+ && (rb < 0 || (rb ^= 1) == 0)
+ && mpn_add_1(ap, ap, an, MPFR_LIMB_ONE << sh))
+ {
+ if (exp == __gmpfr_emax)
+ {
+ inex = mpfr_overflow (a, rnd_mode, MPFR_SIGN(a));
+ goto end_of_add;
+ }
+ exp++;
+ ap[an-1] = MPFR_LIMB_HIGHBIT;
+ rb = 0;
+ }
+
+ if (rb < 0) /* rb not initialized yet */
+ {
+ rb = bb >> (GMP_NUMB_BITS - 1);
+ bb <<= 1;
+ bb |= bb >> (GMP_NUMB_BITS - 1);
+ }
+
+ fb = bb != 0;
+ if (fb && bb != MP_LIMB_T_MAX)
+ goto rounding;
+ } /* fb < 0 */
+
+ while (bk > 0)
+ {
+ mp_limb_t bb, cc;
+
+ if (difs)
+ {
+ if (ck < 0)
+ goto c_read;
+ cc = cprev << (GMP_NUMB_BITS - difs);
+ if (--ck >= 0)
+ {
+ cprev = cp[ck];
+ cc += cprev >> difs;
+ }
+ }
+ else
+ {
+ if (ck == 0)
+ goto c_read;
+ cc = cp[--ck];
+ }
+
+ bb = bp[--bk] + cc;
+ if (bb < cc) /* carry */
+ {
+ fb ^= 1;
+ if (fb)
+ goto rounding;
+ rb ^= 1;
+ if (rb == 0 && mpn_add_1(ap, ap, an, MPFR_LIMB_ONE << sh))
+ {
+ if (MPFR_UNLIKELY(exp == __gmpfr_emax))
+ {
+ inex = mpfr_overflow (a, rnd_mode, MPFR_SIGN(a));
+ goto end_of_add;
+ }
+ exp++;
+ ap[an-1] = MPFR_LIMB_HIGHBIT;
+ }
+ } /* bb < cc */
+
+ if (!fb && bb != 0)
+ {
+ fb = 1;
+ goto rounding;
+ }
+ if (fb && bb != MP_LIMB_T_MAX)
+ goto rounding;
+ } /* while */
+
+ /* b has entirely been read */
+
+ if (fb || ck < 0)
+ goto rounding;
+ if (difs && cprev << (GMP_NUMB_BITS - difs))
+ {
+ fb = 1;
+ goto rounding;
+ }
+ while (ck)
+ {
+ if (cp[--ck])
+ {
+ fb = 1;
+ goto rounding;
+ }
+ } /* while */
+ } /* difw <= cn */
+ else
+ { /* c has entirely been read */
+ c_read:
+ if (fb < 0) /* fb not initialized yet */
+ {
+ mp_limb_t bb;
+
+ MPFR_ASSERTD(bk > 0);
+ bb = bp[--bk];
+ if (rb < 0) /* rb not initialized yet */
+ {
+ rb = bb >> (GMP_NUMB_BITS - 1);
+ bb &= ~MPFR_LIMB_HIGHBIT;
+ }
+ fb = bb != 0;
+ } /* fb < 0 */
+ if (fb)
+ goto rounding;
+ while (bk)
+ {
+ if (bp[--bk])
+ {
+ fb = 1;
+ goto rounding;
+ }
+ } /* while */
+ } /* difw > cn */
+ } /* bn > an */
+ else if (fb != 1) /* if fb == 1, the sticky bit is 1 (no possible carry) */
+ { /* b has entirely been read */
+ if (difw > cn)
+ { /* c has entirely been read */
+ if (rb < 0)
+ rb = 0;
+ fb = 0;
+ }
+ else if (diff_exp > MPFR_UEXP (aq2))
+ { /* b is followed by at least a zero bit, then by c */
+ if (rb < 0)
+ rb = 0;
+ fb = 1;
+ }
+ else
+ {
+ mp_size_t ck;
+ int difs;
+
+ MPFR_ASSERTD(difw >= 0 && cn >= difw);
+ ck = cn - difw;
+ difs = diff_exp % GMP_NUMB_BITS;
+
+ if (difs == 0 && ck == 0)
+ { /* c has entirely been read */
+ if (rb < 0)
+ rb = 0;
+ fb = 0;
+ }
+ else
+ {
+ mp_limb_t cc;
+
+ cc = difs ? (MPFR_ASSERTD(ck < cn),
+ cp[ck] << (GMP_NUMB_BITS - difs)) : cp[--ck];
+ if (rb < 0)
+ {
+ rb = cc >> (GMP_NUMB_BITS - 1);
+ cc &= ~MPFR_LIMB_HIGHBIT;
+ }
+ while (cc == 0)
+ {
+ if (ck == 0)
+ {
+ fb = 0;
+ goto rounding;
+ }
+ cc = cp[--ck];
+ } /* while */
+ fb = 1;
+ }
+ }
+ } /* fb != 1 */
+
+ rounding:
+ /* rnd_mode should be one of MPFR_RNDN, MPFR_RNDZ or MPFR_RNDA */
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ if (fb == 0)
+ {
+ if (rb == 0)
+ {
+ inex = 0;
+ goto set_exponent;
+ }
+ /* round to even */
+ if (ap[0] & (MPFR_LIMB_ONE << sh))
+ goto rndn_away;
+ else
+ goto rndn_zero;
+ }
+ if (rb == 0)
+ {
+ rndn_zero:
+ inex = MPFR_IS_NEG(a) ? 1 : -1;
+ goto set_exponent;
+ }
+ else
+ {
+ rndn_away:
+ inex = MPFR_IS_POS(a) ? 1 : -1;
+ goto add_one_ulp;
+ }
+ }
+ else if (rnd_mode == MPFR_RNDZ)
+ {
+ inex = rb || fb ? (MPFR_IS_NEG(a) ? 1 : -1) : 0;
+ goto set_exponent;
+ }
+ else
+ {
+ MPFR_ASSERTN (rnd_mode == MPFR_RNDA);
+ inex = rb || fb ? (MPFR_IS_POS(a) ? 1 : -1) : 0;
+ if (inex)
+ goto add_one_ulp;
+ else
+ goto set_exponent;
+ }
+
+ add_one_ulp: /* add one unit in last place to a */
+ if (MPFR_UNLIKELY(mpn_add_1 (ap, ap, an, MPFR_LIMB_ONE << sh)))
+ {
+ if (MPFR_UNLIKELY(exp == __gmpfr_emax))
+ {
+ inex = mpfr_overflow (a, rnd_mode, MPFR_SIGN(a));
+ goto end_of_add;
+ }
+ exp++;
+ ap[an-1] = MPFR_LIMB_HIGHBIT;
+ }
+
+ set_exponent:
+ MPFR_SET_EXP (a, exp);
+
+ end_of_add:
+ MPFR_TMP_FREE(marker);
+ MPFR_RET (inex);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/add1sp.c b/Build/source/libs/mpfr/mpfr-src/src/add1sp.c
new file mode 100644
index 00000000000..1435e317096
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/add1sp.c
@@ -0,0 +1,387 @@
+/* mpfr_add1sp -- internal function to perform a "real" addition
+ All the op must have the same precision
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Check if we have to check the result of mpfr_add1sp with mpfr_add1 */
+#ifdef MPFR_WANT_ASSERT
+# if MPFR_WANT_ASSERT >= 2
+
+int mpfr_add1sp2 (mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t);
+int mpfr_add1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t tmpa, tmpb, tmpc;
+ int inexb, inexc, inexact, inexact2;
+
+ mpfr_init2 (tmpa, MPFR_PREC (a));
+ mpfr_init2 (tmpb, MPFR_PREC (b));
+ mpfr_init2 (tmpc, MPFR_PREC (c));
+
+ inexb = mpfr_set (tmpb, b, MPFR_RNDN);
+ MPFR_ASSERTN (inexb == 0);
+
+ inexc = mpfr_set (tmpc, c, MPFR_RNDN);
+ MPFR_ASSERTN (inexc == 0);
+
+ inexact2 = mpfr_add1 (tmpa, tmpb, tmpc, rnd_mode);
+ inexact = mpfr_add1sp2 (a, b, c, rnd_mode);
+
+ if (mpfr_cmp (tmpa, a) || inexact != inexact2)
+ {
+ fprintf (stderr, "add1 & add1sp return different values for %s\n"
+ "Prec_a = %lu, Prec_b = %lu, Prec_c = %lu\nB = ",
+ mpfr_print_rnd_mode (rnd_mode),
+ (unsigned long) MPFR_PREC (a),
+ (unsigned long) MPFR_PREC (b),
+ (unsigned long) MPFR_PREC (c));
+ mpfr_fprint_binary (stderr, tmpb);
+ fprintf (stderr, "\nC = ");
+ mpfr_fprint_binary (stderr, tmpc);
+ fprintf (stderr, "\n\nadd1 : ");
+ mpfr_fprint_binary (stderr, tmpa);
+ fprintf (stderr, "\nadd1sp: ");
+ mpfr_fprint_binary (stderr, a);
+ fprintf (stderr, "\nInexact sp = %d | Inexact = %d\n",
+ inexact, inexact2);
+ MPFR_ASSERTN (0);
+ }
+ mpfr_clears (tmpa, tmpb, tmpc, (mpfr_ptr) 0);
+ return inexact;
+}
+# define mpfr_add1sp mpfr_add1sp2
+# endif
+#endif
+
+/* Debugging support */
+#ifdef DEBUG
+# undef DEBUG
+# define DEBUG(x) (x)
+#else
+# define DEBUG(x) /**/
+#endif
+
+/* compute sign(b) * (|b| + |c|)
+ Returns 0 iff result is exact,
+ a negative value when the result is less than the exact value,
+ a positive value otherwise. */
+int
+mpfr_add1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mpfr_uexp_t d;
+ mpfr_prec_t p;
+ unsigned int sh;
+ mp_size_t n;
+ mp_limb_t *ap, *cp;
+ mpfr_exp_t bx;
+ mp_limb_t limb;
+ int inexact;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_TMP_MARK(marker);
+
+ MPFR_ASSERTD(MPFR_PREC(a) == MPFR_PREC(b) && MPFR_PREC(b) == MPFR_PREC(c));
+ MPFR_ASSERTD(MPFR_IS_PURE_FP(b));
+ MPFR_ASSERTD(MPFR_IS_PURE_FP(c));
+ MPFR_ASSERTD(MPFR_GET_EXP(b) >= MPFR_GET_EXP(c));
+
+ /* Read prec and num of limbs */
+ p = MPFR_PREC(b);
+ n = MPFR_PREC2LIMBS (p);
+ MPFR_UNSIGNED_MINUS_MODULO(sh, p);
+ bx = MPFR_GET_EXP(b);
+ d = (mpfr_uexp_t) (bx - MPFR_GET_EXP(c));
+
+ DEBUG (printf ("New add1sp with diff=%lu\n", (unsigned long) d));
+
+ if (MPFR_UNLIKELY(d == 0))
+ {
+ /* d==0 */
+ DEBUG( mpfr_print_mant_binary("C= ", MPFR_MANT(c), p) );
+ DEBUG( mpfr_print_mant_binary("B= ", MPFR_MANT(b), p) );
+ bx++; /* exp + 1 */
+ ap = MPFR_MANT(a);
+ limb = mpn_add_n(ap, MPFR_MANT(b), MPFR_MANT(c), n);
+ DEBUG( mpfr_print_mant_binary("A= ", ap, p) );
+ MPFR_ASSERTD(limb != 0); /* There must be a carry */
+ limb = ap[0]; /* Get LSB (In fact, LSW) */
+ mpn_rshift(ap, ap, n, 1); /* Shift mantissa A */
+ ap[n-1] |= MPFR_LIMB_HIGHBIT; /* Set MSB */
+ ap[0] &= ~MPFR_LIMB_MASK(sh); /* Clear LSB bit */
+ if (MPFR_LIKELY((limb&(MPFR_LIMB_ONE<<sh)) == 0)) /* Check exact case */
+ { inexact = 0; goto set_exponent; }
+ /* Zero: Truncate
+ Nearest: Even Rule => truncate or add 1
+ Away: Add 1 */
+ if (MPFR_LIKELY(rnd_mode==MPFR_RNDN))
+ {
+ if (MPFR_LIKELY((ap[0]&(MPFR_LIMB_ONE<<sh))==0))
+ { inexact = -1; goto set_exponent; }
+ else
+ goto add_one_ulp;
+ }
+ MPFR_UPDATE_RND_MODE(rnd_mode, MPFR_IS_NEG(b));
+ if (rnd_mode==MPFR_RNDZ)
+ { inexact = -1; goto set_exponent; }
+ else
+ goto add_one_ulp;
+ }
+ else if (MPFR_UNLIKELY (d >= p))
+ {
+ if (MPFR_LIKELY (d > p))
+ {
+ /* d > p : Copy B in A */
+ /* Away: Add 1
+ Nearest: Trunc
+ Zero: Trunc */
+ if (MPFR_LIKELY (rnd_mode==MPFR_RNDN
+ || MPFR_IS_LIKE_RNDZ (rnd_mode, MPFR_IS_NEG (b))))
+ {
+ copy_set_exponent:
+ ap = MPFR_MANT (a);
+ MPN_COPY (ap, MPFR_MANT(b), n);
+ inexact = -1;
+ goto set_exponent;
+ }
+ else
+ {
+ copy_add_one_ulp:
+ ap = MPFR_MANT(a);
+ MPN_COPY (ap, MPFR_MANT(b), n);
+ goto add_one_ulp;
+ }
+ }
+ else
+ {
+ /* d==p : Copy B in A */
+ /* Away: Add 1
+ Nearest: Even Rule if C is a power of 2, else Add 1
+ Zero: Trunc */
+ if (MPFR_LIKELY(rnd_mode==MPFR_RNDN))
+ {
+ /* Check if C was a power of 2 */
+ cp = MPFR_MANT(c);
+ if (MPFR_UNLIKELY(cp[n-1] == MPFR_LIMB_HIGHBIT))
+ {
+ mp_size_t k = n-1;
+ do {
+ k--;
+ } while (k>=0 && cp[k]==0);
+ if (MPFR_UNLIKELY(k<0))
+ /* Power of 2: Even rule */
+ if ((MPFR_MANT (b)[0]&(MPFR_LIMB_ONE<<sh))==0)
+ goto copy_set_exponent;
+ }
+ /* Not a Power of 2 */
+ goto copy_add_one_ulp;
+ }
+ else if (MPFR_IS_LIKE_RNDZ (rnd_mode, MPFR_IS_NEG (b)))
+ goto copy_set_exponent;
+ else
+ goto copy_add_one_ulp;
+ }
+ }
+ else
+ {
+ mp_limb_t mask;
+ mp_limb_t bcp, bcp1; /* Cp and C'p+1 */
+
+ /* General case: 1 <= d < p */
+ cp = MPFR_TMP_LIMBS_ALLOC (n);
+
+ /* Shift c in temporary allocated place */
+ {
+ mpfr_uexp_t dm;
+ mp_size_t m;
+
+ dm = d % GMP_NUMB_BITS;
+ m = d / GMP_NUMB_BITS;
+ if (MPFR_UNLIKELY(dm == 0))
+ {
+ /* dm = 0 and m > 0: Just copy */
+ MPFR_ASSERTD(m!=0);
+ MPN_COPY(cp, MPFR_MANT(c)+m, n-m);
+ MPN_ZERO(cp+n-m, m);
+ }
+ else if (MPFR_LIKELY(m == 0))
+ {
+ /* dm >=1 and m == 0: just shift */
+ MPFR_ASSERTD(dm >= 1);
+ mpn_rshift(cp, MPFR_MANT(c), n, dm);
+ }
+ else
+ {
+ /* dm > 0 and m > 0: shift and zero */
+ mpn_rshift(cp, MPFR_MANT(c)+m, n-m, dm);
+ MPN_ZERO(cp+n-m, m);
+ }
+ }
+
+ DEBUG( mpfr_print_mant_binary("Before", MPFR_MANT(c), p) );
+ DEBUG( mpfr_print_mant_binary("B= ", MPFR_MANT(b), p) );
+ DEBUG( mpfr_print_mant_binary("After ", cp, p) );
+
+ /* Compute bcp=Cp and bcp1=C'p+1 */
+ if (MPFR_LIKELY (sh > 0))
+ {
+ /* Try to compute them from C' rather than C */
+ bcp = (cp[0] & (MPFR_LIMB_ONE<<(sh-1))) ;
+ if (MPFR_LIKELY(cp[0]&MPFR_LIMB_MASK(sh-1)))
+ bcp1 = 1;
+ else
+ {
+ /* We can't compute C'p+1 from C'. Compute it from C */
+ /* Start from bit x=p-d+sh in mantissa C
+ (+sh since we have already looked sh bits in C'!) */
+ mpfr_prec_t x = p-d+sh-1;
+ if (MPFR_LIKELY(x>p))
+ /* We are already looked at all the bits of c, so C'p+1 = 0*/
+ bcp1 = 0;
+ else
+ {
+ mp_limb_t *tp = MPFR_MANT(c);
+ mp_size_t kx = n-1 - (x / GMP_NUMB_BITS);
+ mpfr_prec_t sx = GMP_NUMB_BITS-1-(x%GMP_NUMB_BITS);
+ DEBUG (printf ("(First) x=%lu Kx=%ld Sx=%lu\n",
+ (unsigned long) x, (long) kx,
+ (unsigned long) sx));
+ /* Looks at the last bits of limb kx (if sx=0 does nothing)*/
+ if (tp[kx] & MPFR_LIMB_MASK(sx))
+ bcp1 = 1;
+ else
+ {
+ /*kx += (sx==0);*/
+ /*If sx==0, tp[kx] hasn't been checked*/
+ do {
+ kx--;
+ } while (kx>=0 && tp[kx]==0);
+ bcp1 = (kx >= 0);
+ }
+ }
+ }
+ }
+ else /* sh == 0 */
+ {
+ /* Compute Cp and C'p+1 from C with sh=0 */
+ mp_limb_t *tp = MPFR_MANT(c);
+ /* Start from bit x=p-d in mantissa C */
+ mpfr_prec_t x = p-d;
+ mp_size_t kx = n-1 - (x / GMP_NUMB_BITS);
+ mpfr_prec_t sx = GMP_NUMB_BITS-1-(x%GMP_NUMB_BITS);
+ MPFR_ASSERTD(p >= d);
+ bcp = tp[kx] & (MPFR_LIMB_ONE<<sx);
+ /* Looks at the last bits of limb kx (If sx=0, does nothing)*/
+ if (tp[kx]&MPFR_LIMB_MASK(sx))
+ bcp1 = 1;
+ else
+ {
+ do {
+ kx--;
+ } while (kx>=0 && tp[kx]==0);
+ bcp1 = (kx>=0);
+ }
+ }
+ DEBUG (printf("sh=%u Cp=%lu C'p+1=%lu\n", sh,
+ (unsigned long) bcp, (unsigned long) bcp1));
+
+ /* Clean shifted C' */
+ mask = ~MPFR_LIMB_MASK(sh);
+ cp[0] &= mask;
+
+ /* Add the mantissa c from b in a */
+ ap = MPFR_MANT(a);
+ limb = mpn_add_n (ap, MPFR_MANT(b), cp, n);
+ DEBUG( mpfr_print_mant_binary("Add= ", ap, p) );
+
+ /* Check for overflow */
+ if (MPFR_UNLIKELY (limb))
+ {
+ limb = ap[0] & (MPFR_LIMB_ONE<<sh); /* Get LSB */
+ mpn_rshift (ap, ap, n, 1); /* Shift mantissa*/
+ bx++; /* Fix exponent */
+ ap[n-1] |= MPFR_LIMB_HIGHBIT; /* Set MSB */
+ ap[0] &= mask; /* Clear LSB bit */
+ bcp1 |= bcp; /* Recompute C'p+1 */
+ bcp = limb; /* Recompute Cp */
+ DEBUG (printf ("(Overflow) Cp=%lu C'p+1=%lu\n",
+ (unsigned long) bcp, (unsigned long) bcp1));
+ DEBUG (mpfr_print_mant_binary ("Add= ", ap, p));
+ }
+
+ /* Round:
+ Zero: Truncate but could be exact.
+ Away: Add 1 if Cp or C'p+1 !=0
+ Nearest: Truncate but could be exact if Cp==0
+ Add 1 if C'p+1 !=0,
+ Even rule else */
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ if (MPFR_LIKELY(bcp == 0))
+ { inexact = MPFR_LIKELY(bcp1) ? -1 : 0; goto set_exponent; }
+ else if (MPFR_UNLIKELY(bcp1==0) && (ap[0]&(MPFR_LIMB_ONE<<sh))==0)
+ { inexact = -1; goto set_exponent; }
+ else
+ goto add_one_ulp;
+ }
+ MPFR_UPDATE_RND_MODE(rnd_mode, MPFR_IS_NEG(b));
+ if (rnd_mode == MPFR_RNDZ)
+ {
+ inexact = MPFR_LIKELY(bcp || bcp1) ? -1 : 0;
+ goto set_exponent;
+ }
+ else
+ {
+ if (MPFR_UNLIKELY(bcp==0 && bcp1==0))
+ { inexact = 0; goto set_exponent; }
+ else
+ goto add_one_ulp;
+ }
+ }
+ MPFR_ASSERTN(0);
+
+ add_one_ulp:
+ /* add one unit in last place to a */
+ DEBUG( printf("AddOneUlp\n") );
+ if (MPFR_UNLIKELY( mpn_add_1(ap, ap, n, MPFR_LIMB_ONE<<sh) ))
+ {
+ /* Case 100000x0 = 0x1111x1 + 1*/
+ DEBUG( printf("Pow of 2\n") );
+ bx++;
+ ap[n-1] = MPFR_LIMB_HIGHBIT;
+ }
+ inexact = 1;
+
+ set_exponent:
+ if (MPFR_UNLIKELY(bx > __gmpfr_emax)) /* Check for overflow */
+ {
+ DEBUG( printf("Overflow\n") );
+ MPFR_TMP_FREE(marker);
+ MPFR_SET_SAME_SIGN(a,b);
+ return mpfr_overflow(a, rnd_mode, MPFR_SIGN(a));
+ }
+ MPFR_SET_EXP (a, bx);
+ MPFR_SET_SAME_SIGN(a,b);
+
+ MPFR_TMP_FREE(marker);
+ MPFR_RET (inexact * MPFR_INT_SIGN (a));
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/add_d.c b/Build/source/libs/mpfr/mpfr-src/src/add_d.c
new file mode 100644
index 00000000000..ee55aed2499
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/add_d.c
@@ -0,0 +1,52 @@
+/* mpfr_add_d -- add a multiple precision floating-point number
+ to a machine double precision float
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_add_d (mpfr_ptr a, mpfr_srcptr b, double c, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t d;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("b[%Pu]=%.*Rg c=%.20g rnd=%d",
+ mpfr_get_prec(b), mpfr_log_prec, b, c, rnd_mode),
+ ("a[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (a), mpfr_log_prec, a, inexact));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ inexact = mpfr_set_d (d, c, rnd_mode);
+ MPFR_ASSERTN (inexact == 0);
+
+ mpfr_clear_flags ();
+ inexact = mpfr_add (a, b, d, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+
+ mpfr_clear (d);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (a, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/add_ui.c b/Build/source/libs/mpfr/mpfr-src/src/add_ui.c
new file mode 100644
index 00000000000..51b996c82b6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/add_ui.c
@@ -0,0 +1,58 @@
+/* mpfr_add_ui -- add a floating-point number with a machine integer
+
+Copyright 2000-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_add_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode)
+{
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg u=%lu rnd=%d",
+ mpfr_get_prec(x), mpfr_log_prec, x, u, rnd_mode),
+ ("y[%Pu]=%.*Rg", mpfr_get_prec (y), mpfr_log_prec, y));
+
+ if (MPFR_LIKELY(u != 0) ) /* if u=0, do nothing */
+ {
+ mpfr_t uu;
+ mp_limb_t up[1];
+ unsigned long cnt;
+ int inex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_TMP_INIT1 (up, uu, GMP_NUMB_BITS);
+ MPFR_ASSERTD (u == (mp_limb_t) u);
+ count_leading_zeros(cnt, (mp_limb_t) u);
+ up[0] = (mp_limb_t) u << cnt;
+
+ /* Optimization note: Exponent save/restore operations may be
+ removed if mpfr_add works even when uu is out-of-range. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
+ inex = mpfr_add(y, x, uu, rnd_mode);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range(y, inex, rnd_mode);
+ }
+ else
+ /* (unsigned long) 0 is assumed to be a real 0 (unsigned) */
+ return mpfr_set (y, x, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/agm.c b/Build/source/libs/mpfr/mpfr-src/src/agm.c
new file mode 100644
index 00000000000..0177e32d5e1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/agm.c
@@ -0,0 +1,319 @@
+/* mpfr_agm -- arithmetic-geometric mean of two floating-point numbers
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* agm(x,y) is between x and y, so we don't need to save exponent range */
+int
+mpfr_agm (mpfr_ptr r, mpfr_srcptr op2, mpfr_srcptr op1, mpfr_rnd_t rnd_mode)
+{
+ int compare, inexact;
+ mp_size_t s;
+ mpfr_prec_t p, q;
+ mp_limb_t *up, *vp, *ufp, *vfp;
+ mpfr_t u, v, uf, vf, sc1, sc2;
+ mpfr_exp_t scaleop = 0, scaleit;
+ unsigned long n; /* number of iterations */
+ MPFR_ZIV_DECL (loop);
+ MPFR_TMP_DECL(marker);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("op2[%Pu]=%.*Rg op1[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (op2), mpfr_log_prec, op2,
+ mpfr_get_prec (op1), mpfr_log_prec, op1, rnd_mode),
+ ("r[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (r), mpfr_log_prec, r, inexact));
+
+ /* Deal with special values */
+ if (MPFR_ARE_SINGULAR (op1, op2))
+ {
+ /* If a or b is NaN, the result is NaN */
+ if (MPFR_IS_NAN(op1) || MPFR_IS_NAN(op2))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ /* now one of a or b is Inf or 0 */
+ /* If a and b is +Inf, the result is +Inf.
+ Otherwise if a or b is -Inf or 0, the result is NaN */
+ else if (MPFR_IS_INF(op1) || MPFR_IS_INF(op2))
+ {
+ if (MPFR_IS_STRICTPOS(op1) && MPFR_IS_STRICTPOS(op2))
+ {
+ MPFR_SET_INF(r);
+ MPFR_SET_SAME_SIGN(r, op1);
+ MPFR_RET(0); /* exact */
+ }
+ else
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ }
+ else /* a and b are neither NaN nor Inf, and one is zero */
+ { /* If a or b is 0, the result is +0 since a sqrt is positive */
+ MPFR_ASSERTD (MPFR_IS_ZERO (op1) || MPFR_IS_ZERO (op2));
+ MPFR_SET_POS (r);
+ MPFR_SET_ZERO (r);
+ MPFR_RET (0); /* exact */
+ }
+ }
+
+ /* If a or b is negative (excluding -Infinity), the result is NaN */
+ if (MPFR_UNLIKELY(MPFR_IS_NEG(op1) || MPFR_IS_NEG(op2)))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+
+ /* Precision of the following calculus */
+ q = MPFR_PREC(r);
+ p = q + MPFR_INT_CEIL_LOG2(q) + 15;
+ MPFR_ASSERTD (p >= 7); /* see algorithms.tex */
+ s = MPFR_PREC2LIMBS (p);
+
+ /* b (op2) and a (op1) are the 2 operands but we want b >= a */
+ compare = mpfr_cmp (op1, op2);
+ if (MPFR_UNLIKELY( compare == 0 ))
+ {
+ mpfr_set (r, op1, rnd_mode);
+ MPFR_RET (0); /* exact */
+ }
+ else if (compare > 0)
+ {
+ mpfr_srcptr t = op1;
+ op1 = op2;
+ op2 = t;
+ }
+
+ /* Now b (=op2) > a (=op1) */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ MPFR_TMP_MARK(marker);
+
+ /* Main loop */
+ MPFR_ZIV_INIT (loop, p);
+ for (;;)
+ {
+ mpfr_prec_t eq;
+ unsigned long err = 0; /* must be set to 0 at each Ziv iteration */
+ MPFR_BLOCK_DECL (flags);
+
+ /* Init temporary vars */
+ MPFR_TMP_INIT (up, u, p, s);
+ MPFR_TMP_INIT (vp, v, p, s);
+ MPFR_TMP_INIT (ufp, uf, p, s);
+ MPFR_TMP_INIT (vfp, vf, p, s);
+
+ /* Calculus of un and vn */
+ retry:
+ MPFR_BLOCK (flags,
+ mpfr_mul (u, op1, op2, MPFR_RNDN);
+ /* mpfr_mul(...): faster since PREC(op) < PREC(u) */
+ mpfr_add (v, op1, op2, MPFR_RNDN);
+ /* mpfr_add with !=prec is still good */);
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags) || MPFR_UNDERFLOW (flags)))
+ {
+ mpfr_exp_t e1 , e2;
+
+ MPFR_ASSERTN (scaleop == 0);
+ e1 = MPFR_GET_EXP (op1);
+ e2 = MPFR_GET_EXP (op2);
+
+ /* Let's determine scaleop to avoid an overflow/underflow. */
+ if (MPFR_OVERFLOW (flags))
+ {
+ /* Let's recall that emin <= e1 <= e2 <= emax.
+ There has been an overflow. Thus e2 >= emax/2.
+ If the mpfr_mul overflowed, then e1 + e2 > emax.
+ If the mpfr_add overflowed, then e2 = emax.
+ We want: (e1 + scale) + (e2 + scale) <= emax,
+ i.e. scale <= (emax - e1 - e2) / 2. Let's take
+ scale = min(floor((emax - e1 - e2) / 2), -1).
+ This is OK, as:
+ 1. emin <= scale <= -1.
+ 2. e1 + scale >= emin. Indeed:
+ * If e1 + e2 > emax, then
+ e1 + scale >= e1 + (emax - e1 - e2) / 2 - 1
+ >= (emax + e1 - emax) / 2 - 1
+ >= e1 / 2 - 1 >= emin.
+ * Otherwise, mpfr_mul didn't overflow, therefore
+ mpfr_add overflowed and e2 = emax, so that
+ e1 > emin (see restriction below).
+ e1 + scale > emin - 1, thus e1 + scale >= emin.
+ 3. e2 + scale <= emax, since scale < 0. */
+ if (e1 + e2 > MPFR_EXT_EMAX)
+ {
+ scaleop = - (((e1 + e2) - MPFR_EXT_EMAX + 1) / 2);
+ MPFR_ASSERTN (scaleop < 0);
+ }
+ else
+ {
+ /* The addition necessarily overflowed. */
+ MPFR_ASSERTN (e2 == MPFR_EXT_EMAX);
+ /* The case where e1 = emin and e2 = emax is not supported
+ here. This would mean that the precision of e2 would be
+ huge (and possibly not supported in practice anyway). */
+ MPFR_ASSERTN (e1 > MPFR_EXT_EMIN);
+ scaleop = -1;
+ }
+
+ }
+ else /* underflow only (in the multiplication) */
+ {
+ /* We have e1 + e2 <= emin (so, e1 <= e2 <= 0).
+ We want: (e1 + scale) + (e2 + scale) >= emin + 1,
+ i.e. scale >= (emin + 1 - e1 - e2) / 2. let's take
+ scale = ceil((emin + 1 - e1 - e2) / 2). This is OK, as:
+ 1. 1 <= scale <= emax.
+ 2. e1 + scale >= emin + 1 >= emin.
+ 3. e2 + scale <= scale <= emax. */
+ MPFR_ASSERTN (e1 <= e2 && e2 <= 0);
+ scaleop = (MPFR_EXT_EMIN + 2 - e1 - e2) / 2;
+ MPFR_ASSERTN (scaleop > 0);
+ }
+
+ MPFR_ALIAS (sc1, op1, MPFR_SIGN (op1), e1 + scaleop);
+ MPFR_ALIAS (sc2, op2, MPFR_SIGN (op2), e2 + scaleop);
+ op1 = sc1;
+ op2 = sc2;
+ MPFR_LOG_MSG (("Exception in pre-iteration, scale = %"
+ MPFR_EXP_FSPEC "d\n", scaleop));
+ goto retry;
+ }
+
+ mpfr_clear_flags ();
+ mpfr_sqrt (u, u, MPFR_RNDN);
+ mpfr_div_2ui (v, v, 1, MPFR_RNDN);
+
+ scaleit = 0;
+ n = 1;
+ while (mpfr_cmp2 (u, v, &eq) != 0 && eq <= p - 2)
+ {
+ MPFR_BLOCK_DECL (flags2);
+
+ MPFR_LOG_MSG (("Iteration n = %lu\n", n));
+
+ retry2:
+ mpfr_add (vf, u, v, MPFR_RNDN); /* No overflow? */
+ mpfr_div_2ui (vf, vf, 1, MPFR_RNDN);
+ /* See proof in algorithms.tex */
+ if (4*eq > p)
+ {
+ mpfr_t w;
+ MPFR_BLOCK_DECL (flags3);
+
+ MPFR_LOG_MSG (("4*eq > p\n", 0));
+
+ /* vf = V(k) */
+ mpfr_init2 (w, (p + 1) / 2);
+ MPFR_BLOCK
+ (flags3,
+ mpfr_sub (w, v, u, MPFR_RNDN); /* e = V(k-1)-U(k-1) */
+ mpfr_sqr (w, w, MPFR_RNDN); /* e = e^2 */
+ mpfr_div_2ui (w, w, 4, MPFR_RNDN); /* e*= (1/2)^2*1/4 */
+ mpfr_div (w, w, vf, MPFR_RNDN); /* 1/4*e^2/V(k) */
+ );
+ if (MPFR_LIKELY (! MPFR_UNDERFLOW (flags3)))
+ {
+ mpfr_sub (v, vf, w, MPFR_RNDN);
+ err = MPFR_GET_EXP (vf) - MPFR_GET_EXP (v); /* 0 or 1 */
+ mpfr_clear (w);
+ break;
+ }
+ /* There has been an underflow because of the cancellation
+ between V(k-1) and U(k-1). Let's use the conventional
+ method. */
+ MPFR_LOG_MSG (("4*eq > p -> underflow\n", 0));
+ mpfr_clear (w);
+ mpfr_clear_underflow ();
+ }
+ /* U(k) increases, so that U.V can overflow (but not underflow). */
+ MPFR_BLOCK (flags2, mpfr_mul (uf, u, v, MPFR_RNDN););
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags2)))
+ {
+ mpfr_exp_t scale2;
+
+ scale2 = - (((MPFR_GET_EXP (u) + MPFR_GET_EXP (v))
+ - MPFR_EXT_EMAX + 1) / 2);
+ MPFR_EXP (u) += scale2;
+ MPFR_EXP (v) += scale2;
+ scaleit += scale2;
+ MPFR_LOG_MSG (("Overflow in iteration n = %lu, scaleit = %"
+ MPFR_EXP_FSPEC "d (%" MPFR_EXP_FSPEC "d)\n",
+ n, scaleit, scale2));
+ mpfr_clear_overflow ();
+ goto retry2;
+ }
+ mpfr_sqrt (u, uf, MPFR_RNDN);
+ mpfr_swap (v, vf);
+ n ++;
+ }
+
+ MPFR_LOG_MSG (("End of iterations (n = %lu)\n", n));
+
+ /* the error on v is bounded by (18n+51) ulps, or twice if there
+ was an exponent loss in the final subtraction */
+ err += MPFR_INT_CEIL_LOG2(18 * n + 51); /* 18n+51 should not overflow
+ since n is about log(p) */
+ /* we should have n+2 <= 2^(p/4) [see algorithms.tex] */
+ if (MPFR_LIKELY (MPFR_INT_CEIL_LOG2(n + 2) <= p / 4 &&
+ MPFR_CAN_ROUND (v, p - err, q, rnd_mode)))
+ break; /* Stop the loop */
+
+ /* Next iteration */
+ MPFR_ZIV_NEXT (loop, p);
+ s = MPFR_PREC2LIMBS (p);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ if (MPFR_UNLIKELY ((__gmpfr_flags & (MPFR_FLAGS_ALL ^ MPFR_FLAGS_INEXACT))
+ != 0))
+ {
+ MPFR_ASSERTN (! mpfr_overflow_p ()); /* since mpfr_clear_flags */
+ MPFR_ASSERTN (! mpfr_underflow_p ()); /* since mpfr_clear_flags */
+ MPFR_ASSERTN (! mpfr_divby0_p ()); /* since mpfr_clear_flags */
+ MPFR_ASSERTN (! mpfr_nanflag_p ()); /* since mpfr_clear_flags */
+ }
+
+ /* Setting of the result */
+ inexact = mpfr_set (r, v, rnd_mode);
+ MPFR_EXP (r) -= scaleop + scaleit;
+
+ /* Let's clean */
+ MPFR_TMP_FREE(marker);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ /* From the definition of the AGM, underflow and overflow
+ are not possible. */
+ return mpfr_check_range (r, inexact, rnd_mode);
+ /* agm(u,v) can be exact for u, v rational only for u=v.
+ Proof (due to Nicolas Brisebarre): it suffices to consider
+ u=1 and v<1. Then 1/AGM(1,v) = 2F1(1/2,1/2,1;1-v^2),
+ and a theorem due to G.V. Chudnovsky states that for x a
+ non-zero algebraic number with |x|<1, then
+ 2F1(1/2,1/2,1;x) and 2F1(-1/2,1/2,1;x) are algebraically
+ independent over Q. */
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ai.c b/Build/source/libs/mpfr/mpfr-src/src/ai.c
new file mode 100644
index 00000000000..cbab7cfcbe0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ai.c
@@ -0,0 +1,664 @@
+/* mpfr_ai -- Airy function Ai
+
+Copyright 2010-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Reminder and notations:
+ -----------------------
+
+ Ai is the solution of:
+ / y'' - x*y = 0
+ { Ai(0) = 1/ ( 9^(1/3)*Gamma(2/3) )
+ \ Ai'(0) = -1/ ( 3^(1/3)*Gamma(1/3) )
+
+ Series development:
+ Ai(x) = sum (a_i*x^i)
+ = sum (t_i)
+
+ Recurrences:
+ a_(i+3) = a_i / ((i+2)*(i+3))
+ t_(i+3) = t_i * x^3 / ((i+2)*(i+3))
+
+ Values:
+ a_0 = Ai(0) ~ 0.355
+ a_1 = Ai'(0) ~ -0.259
+*/
+
+
+/* Airy function Ai evaluated by the most naive algorithm */
+static int
+mpfr_ai1 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ mpfr_prec_t wprec; /* working precision */
+ mpfr_prec_t prec; /* target precision */
+ mpfr_prec_t err; /* used to estimate the evaluation error */
+ mpfr_prec_t correct_bits; /* estimates the number of correct bits*/
+ unsigned long int k;
+ unsigned long int cond; /* condition number of the series */
+ unsigned long int assumed_exponent; /* used as a lowerbound of |EXP(Ai(x))| */
+ int r;
+ mpfr_t s; /* used to store the partial sum */
+ mpfr_t ti, tip1; /* used to store successive values of t_i */
+ mpfr_t x3; /* used to store x^3 */
+ mpfr_t tmp_sp, tmp2_sp; /* small precision variables */
+ unsigned long int x3u; /* used to store ceil(x^3) */
+ mpfr_t temp1, temp2;
+ int test1, test2;
+
+ /* Logging */
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
+ ("y[%Pu]=%.*Rg", mpfr_get_prec (y), mpfr_log_prec, y) );
+
+ /* Special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ return mpfr_set_ui (y, 0, rnd);
+ }
+
+
+ /* Save current exponents range */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO (x)))
+ {
+ mpfr_t y1, y2;
+ prec = MPFR_PREC (y) + 3;
+ mpfr_init2 (y1, prec);
+ mpfr_init2 (y2, prec);
+ MPFR_ZIV_INIT (loop, prec);
+
+ /* ZIV loop */
+ for (;;)
+ {
+ mpfr_gamma_one_and_two_third (y1, y2, prec); /* y2 = Gamma(2/3)(1 + delta1), |delta1| <= 2^{1-prec}. */
+
+ r = mpfr_set_ui (y1, 9, MPFR_RNDN);
+ MPFR_ASSERTD (r == 0);
+ mpfr_cbrt (y1, y1, MPFR_RNDN); /* y1 = cbrt(9)(1 + delta2), |delta2| <= 2^{-prec}. */
+ mpfr_mul (y1, y1, y2, MPFR_RNDN);
+ mpfr_ui_div (y1, 1, y1, MPFR_RNDN);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (y1, prec - 3, MPFR_PREC (y), rnd)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ }
+ r = mpfr_set (y, y1, rnd);
+ MPFR_ZIV_FREE (loop);
+ MPFR_SAVE_EXPO_FREE (expo);
+ mpfr_clear (y1);
+ mpfr_clear (y2);
+ return mpfr_check_range (y, r, rnd);
+ }
+
+ /* FIXME: underflow for large values of |x| ? */
+
+
+ /* Set initial precision */
+ /* If we compute sum(i=0, N-1, t_i), the relative error is bounded by */
+ /* 2*(4N)*2^(1-wprec)*C(|x|)/Ai(x) */
+ /* where C(|x|) = 1 if 0<=x<=1 */
+ /* and C(|x|) = (1/2)*x^(-1/4)*exp(2/3 x^(3/2)) if x >= 1 */
+
+ /* A priori, we do not know N, so we estimate it to ~ prec */
+ /* If 0<=x<=1, we estimate Ai(x) ~ 1/8 */
+ /* if 1<=x, we estimate Ai(x) ~ (1/4)*x^(-1/4)*exp(-2/3 * x^(3/2)) */
+ /* if x<=0, ????? */
+
+ /* We begin with 11 guard bits */
+ prec = MPFR_PREC (y)+11;
+ MPFR_ZIV_INIT (loop, prec);
+
+ /* The working precision is heuristically chosen in order to obtain */
+ /* approximately prec correct bits in the sum. To sum up: the sum */
+ /* is stopped when the *exact* sum gives ~ prec correct bit. And */
+ /* when it is stopped, the accuracy of the computed sum, with respect*/
+ /* to the exact one should be ~prec bits. */
+ mpfr_init2 (tmp_sp, MPFR_SMALL_PRECISION);
+ mpfr_init2 (tmp2_sp, MPFR_SMALL_PRECISION);
+ mpfr_abs (tmp_sp, x, MPFR_RNDU);
+ mpfr_pow_ui (tmp_sp, tmp_sp, 3, MPFR_RNDU);
+ mpfr_sqrt (tmp_sp, tmp_sp, MPFR_RNDU); /* tmp_sp ~ x^3/2 */
+
+ /* 0.96179669392597567 >~ 2/3 * log2(e). See algorithms.tex */
+ mpfr_set_str (tmp2_sp, "0.96179669392597567", 10, MPFR_RNDU);
+ mpfr_mul (tmp2_sp, tmp_sp, tmp2_sp, MPFR_RNDU);
+
+ /* cond represents the number of lost bits in the evaluation of the sum */
+ if ( (MPFR_IS_ZERO (x)) || (MPFR_GET_EXP (x) <= 0) )
+ cond = 0;
+ else
+ cond = mpfr_get_ui (tmp2_sp, MPFR_RNDU) - (MPFR_GET_EXP (x)-1)/4 - 1;
+
+ /* The variable assumed_exponent is used to store the maximal assumed */
+ /* exponent of Ai(x). More precisely, we assume that |Ai(x)| will be */
+ /* greater than 2^{-assumed_exponent}. */
+ if (MPFR_IS_ZERO (x))
+ assumed_exponent = 2;
+ else
+ {
+ if (MPFR_IS_POS (x))
+ {
+ if (MPFR_GET_EXP (x) <= 0)
+ assumed_exponent = 3;
+ else
+ assumed_exponent = (2 + (MPFR_GET_EXP (x)/4 + 1)
+ + mpfr_get_ui (tmp2_sp, MPFR_RNDU));
+ }
+ /* We do not know Ai (x) yet */
+ /* We cover the case when EXP (Ai (x))>=-10 */
+ else
+ assumed_exponent = 10;
+ }
+
+ wprec = prec + MPFR_INT_CEIL_LOG2 (prec) + 5 + cond + assumed_exponent;
+
+ mpfr_init (ti);
+ mpfr_init (tip1);
+ mpfr_init (temp1);
+ mpfr_init (temp2);
+ mpfr_init (x3);
+ mpfr_init (s);
+
+ /* ZIV loop */
+ for (;;)
+ {
+ MPFR_LOG_MSG (("Working precision: %Pu\n", wprec));
+ mpfr_set_prec (ti, wprec);
+ mpfr_set_prec (tip1, wprec);
+ mpfr_set_prec (x3, wprec);
+ mpfr_set_prec (s, wprec);
+
+ mpfr_sqr (x3, x, MPFR_RNDU);
+ mpfr_mul (x3, x3, x, (MPFR_IS_POS (x)?MPFR_RNDU:MPFR_RNDD)); /* x3=x^3 */
+ if (MPFR_IS_NEG (x))
+ MPFR_CHANGE_SIGN (x3);
+ x3u = mpfr_get_ui (x3, MPFR_RNDU); /* x3u >= ceil(x^3) */
+ if (MPFR_IS_NEG (x))
+ MPFR_CHANGE_SIGN (x3);
+
+ mpfr_gamma_one_and_two_third (temp1, temp2, wprec);
+ mpfr_set_ui (ti, 9, MPFR_RNDN);
+ mpfr_cbrt (ti, ti, MPFR_RNDN);
+ mpfr_mul (ti, ti, temp2, MPFR_RNDN);
+ mpfr_ui_div (ti, 1, ti , MPFR_RNDN); /* ti = 1/( Gamma (2/3)*9^(1/3) ) */
+
+ mpfr_set_ui (tip1, 3, MPFR_RNDN);
+ mpfr_cbrt (tip1, tip1, MPFR_RNDN);
+ mpfr_mul (tip1, tip1, temp1, MPFR_RNDN);
+ mpfr_neg (tip1, tip1, MPFR_RNDN);
+ mpfr_div (tip1, x, tip1, MPFR_RNDN); /* tip1 = -x/(Gamma (1/3)*3^(1/3)) */
+
+ mpfr_add (s, ti, tip1, MPFR_RNDN);
+
+
+ /* Evaluation of the series */
+ k = 2;
+ for (;;)
+ {
+ mpfr_mul (ti, ti, x3, MPFR_RNDN);
+ mpfr_mul (tip1, tip1, x3, MPFR_RNDN);
+
+ mpfr_div_ui2 (ti, ti, k, (k+1), MPFR_RNDN);
+ mpfr_div_ui2 (tip1, tip1, (k+1), (k+2), MPFR_RNDN);
+
+ k += 3;
+ mpfr_add (s, s, ti, MPFR_RNDN);
+ mpfr_add (s, s, tip1, MPFR_RNDN);
+
+ /* FIXME: if s==0 */
+ test1 = MPFR_IS_ZERO (ti)
+ || (MPFR_GET_EXP (ti) + (mpfr_exp_t)prec + 3 <= MPFR_GET_EXP (s));
+ test2 = MPFR_IS_ZERO (tip1)
+ || (MPFR_GET_EXP (tip1) + (mpfr_exp_t)prec + 3 <= MPFR_GET_EXP (s));
+
+ if ( test1 && test2 && (x3u <= k*(k+1)/2) )
+ break; /* FIXME: if k*(k+1) overflows */
+ }
+
+ MPFR_LOG_MSG (("Truncation rank: %lu\n", k));
+
+ err = 4 + MPFR_INT_CEIL_LOG2 (k) + cond - MPFR_GET_EXP (s);
+
+ /* err is the number of bits lost due to the evaluation error */
+ /* wprec-(prec+1): number of bits lost due to the approximation error */
+ MPFR_LOG_MSG (("Roundoff error: %Pu\n", err));
+ MPFR_LOG_MSG (("Approxim error: %Pu\n", wprec-prec-1));
+
+ if (wprec < err+1)
+ correct_bits=0;
+ else
+ {
+ if (wprec < err+prec+1)
+ correct_bits = wprec - err - 1;
+ else
+ correct_bits = prec;
+ }
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, correct_bits, MPFR_PREC (y), rnd)))
+ break;
+
+ if (correct_bits == 0)
+ {
+ assumed_exponent *= 2;
+ MPFR_LOG_MSG (("Not a single bit correct (assumed_exponent=%lu)\n",
+ assumed_exponent));
+ wprec = prec + 5 + MPFR_INT_CEIL_LOG2 (k) + cond + assumed_exponent;
+ }
+ else
+ {
+ if (correct_bits < prec)
+ { /* The precision was badly chosen */
+ MPFR_LOG_MSG (("Bad assumption on the exponent of Ai(x)", 0));
+ MPFR_LOG_MSG ((" (E=%ld)\n", (long) MPFR_GET_EXP (s)));
+ wprec = prec + err + 1;
+ }
+ else
+ { /* We are really in a bad case of the TMD */
+ MPFR_ZIV_NEXT (loop, prec);
+
+ /* We update wprec */
+ /* We assume that K will not be multiplied by more than 4 */
+ wprec = prec + (MPFR_INT_CEIL_LOG2 (k)+2) + 5 + cond
+ - MPFR_GET_EXP (s);
+ }
+ }
+
+ } /* End of ZIV loop */
+
+ MPFR_ZIV_FREE (loop);
+
+ r = mpfr_set (y, s, rnd);
+
+ mpfr_clear (ti);
+ mpfr_clear (tip1);
+ mpfr_clear (temp1);
+ mpfr_clear (temp2);
+ mpfr_clear (x3);
+ mpfr_clear (s);
+ mpfr_clear (tmp_sp);
+ mpfr_clear (tmp2_sp);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, r, rnd);
+}
+
+
+/* Airy function Ai evaluated by Smith algorithm */
+static int
+mpfr_ai2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ mpfr_prec_t wprec; /* working precision */
+ mpfr_prec_t prec; /* target precision */
+ mpfr_prec_t err; /* used to estimate the evaluation error */
+ mpfr_prec_t correctBits; /* estimates the number of correct bits*/
+ unsigned long int i, j, L, t;
+ unsigned long int cond; /* condition number of the series */
+ unsigned long int assumed_exponent; /* used as a lowerbound of |EXP(Ai(x))| */
+ int r; /* returned ternary value */
+ mpfr_t s; /* used to store the partial sum */
+ mpfr_t u0, u1;
+ mpfr_t *z; /* used to store the (x^3j) */
+ mpfr_t result;
+ mpfr_t tmp_sp, tmp2_sp; /* small precision variables */
+ unsigned long int x3u; /* used to store ceil (x^3) */
+ mpfr_t temp1, temp2;
+ int test0, test1;
+
+ /* Logging */
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
+ ("y[%Pu]=%.*Rg", mpfr_get_prec (y), mpfr_log_prec, y));
+
+ /* Special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ return mpfr_set_ui (y, 0, rnd);
+ }
+
+ /* Save current exponents range */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* FIXME: underflow for large values of |x| */
+
+
+ /* Set initial precision */
+ /* See the analysis for the naive evaluation */
+
+ /* We begin with 11 guard bits */
+ prec = MPFR_PREC (y) + 11;
+ MPFR_ZIV_INIT (loop, prec);
+
+ mpfr_init2 (tmp_sp, MPFR_SMALL_PRECISION);
+ mpfr_init2 (tmp2_sp, MPFR_SMALL_PRECISION);
+ mpfr_abs (tmp_sp, x, MPFR_RNDU);
+ mpfr_pow_ui (tmp_sp, tmp_sp, 3, MPFR_RNDU);
+ mpfr_sqrt (tmp_sp, tmp_sp, MPFR_RNDU); /* tmp_sp ~ x^3/2 */
+
+ /* 0.96179669392597567 >~ 2/3 * log2(e). See algorithms.tex */
+ mpfr_set_str (tmp2_sp, "0.96179669392597567", 10, MPFR_RNDU);
+ mpfr_mul (tmp2_sp, tmp_sp, tmp2_sp, MPFR_RNDU);
+
+ /* cond represents the number of lost bits in the evaluation of the sum */
+ if ( (MPFR_IS_ZERO (x)) || (MPFR_GET_EXP (x) <= 0) )
+ cond = 0;
+ else
+ cond = mpfr_get_ui (tmp2_sp, MPFR_RNDU) - (MPFR_GET_EXP (x) - 1)/4 - 1;
+
+ /* This variable is used to store the maximal assumed exponent of */
+ /* Ai (x). More precisely, we assume that |Ai (x)| will be greater than */
+ /* 2^{-assumedExp}. */
+ if (MPFR_IS_ZERO (x))
+ assumed_exponent = 2;
+ else
+ {
+ if (MPFR_IS_POS (x))
+ {
+ if (MPFR_GET_EXP (x) <= 0)
+ assumed_exponent = 3;
+ else
+ assumed_exponent = (2 + (MPFR_GET_EXP (x)/4 + 1)
+ + mpfr_get_ui (tmp2_sp, MPFR_RNDU));
+ }
+ /* We do not know Ai (x) yet */
+ /* We cover the case when EXP (Ai (x))>=-10 */
+ else
+ assumed_exponent = 10;
+ }
+
+ wprec = prec + MPFR_INT_CEIL_LOG2 (prec) + 6 + cond + assumed_exponent;
+
+ /* We assume that the truncation rank will be ~ prec */
+ L = __gmpfr_isqrt (prec);
+ MPFR_LOG_MSG (("size of blocks L = %lu\n", L));
+
+ z = (mpfr_t *) (*__gmp_allocate_func) ( (L + 1) * sizeof (mpfr_t) );
+ MPFR_ASSERTN (z != NULL);
+ for (j=0; j<=L; j++)
+ mpfr_init (z[j]);
+
+ mpfr_init (s);
+ mpfr_init (u0); mpfr_init (u1);
+ mpfr_init (result);
+ mpfr_init (temp1);
+ mpfr_init (temp2);
+
+ /* ZIV loop */
+ for (;;)
+ {
+ MPFR_LOG_MSG (("working precision: %Pu\n", wprec));
+
+ for (j=0; j<=L; j++)
+ mpfr_set_prec (z[j], wprec);
+ mpfr_set_prec (s, wprec);
+ mpfr_set_prec (u0, wprec); mpfr_set_prec (u1, wprec);
+ mpfr_set_prec (result, wprec);
+
+ mpfr_set_ui (u0, 1, MPFR_RNDN);
+ mpfr_set (u1, x, MPFR_RNDN);
+
+ mpfr_set_ui (z[0], 1, MPFR_RNDU);
+ mpfr_sqr (z[1], u1, MPFR_RNDU);
+ mpfr_mul (z[1], z[1], x, (MPFR_IS_POS (x) ? MPFR_RNDU : MPFR_RNDD) );
+
+ if (MPFR_IS_NEG (x))
+ MPFR_CHANGE_SIGN (z[1]);
+ x3u = mpfr_get_ui (z[1], MPFR_RNDU); /* x3u >= ceil (x^3) */
+ if (MPFR_IS_NEG (x))
+ MPFR_CHANGE_SIGN (z[1]);
+
+ for (j=2; j<=L ;j++)
+ {
+ if (j%2 == 0)
+ mpfr_sqr (z[j], z[j/2], MPFR_RNDN);
+ else
+ mpfr_mul (z[j], z[j-1], z[1], MPFR_RNDN);
+ }
+
+ mpfr_gamma_one_and_two_third (temp1, temp2, wprec);
+ mpfr_set_ui (u0, 9, MPFR_RNDN);
+ mpfr_cbrt (u0, u0, MPFR_RNDN);
+ mpfr_mul (u0, u0, temp2, MPFR_RNDN);
+ mpfr_ui_div (u0, 1, u0 , MPFR_RNDN); /* u0 = 1/( Gamma (2/3)*9^(1/3) ) */
+
+ mpfr_set_ui (u1, 3, MPFR_RNDN);
+ mpfr_cbrt (u1, u1, MPFR_RNDN);
+ mpfr_mul (u1, u1, temp1, MPFR_RNDN);
+ mpfr_neg (u1, u1, MPFR_RNDN);
+ mpfr_div (u1, x, u1, MPFR_RNDN); /* u1 = -x/(Gamma (1/3)*3^(1/3)) */
+
+ mpfr_set_ui (result, 0, MPFR_RNDN);
+ t = 0;
+
+ /* Evaluation of the series by Smith' method */
+ for (i=0; ; i++)
+ {
+ t += 3 * L;
+
+ /* k = 0 */
+ t -= 3;
+ mpfr_set (s, z[L-1], MPFR_RNDN);
+ for (j=L-2; ; j--)
+ {
+ t -= 3;
+ mpfr_div_ui2 (s, s, (t+2), (t+3), MPFR_RNDN);
+ mpfr_add (s, s, z[j], MPFR_RNDN);
+ if (j==0)
+ break;
+ }
+ mpfr_mul (s, s, u0, MPFR_RNDN);
+ mpfr_add (result, result, s, MPFR_RNDN);
+
+ mpfr_mul (u0, u0, z[L], MPFR_RNDN);
+ for (j=0; j<=L-1; j++)
+ {
+ mpfr_div_ui2 (u0, u0, (t + 2), (t + 3), MPFR_RNDN);
+ t += 3;
+ }
+
+ t++;
+
+ /* k = 1 */
+ t -= 3;
+ mpfr_set (s, z[L-1], MPFR_RNDN);
+ for (j=L-2; ; j--)
+ {
+ t -= 3;
+ mpfr_div_ui2 (s, s, (t + 2), (t + 3), MPFR_RNDN);
+ mpfr_add (s, s, z[j], MPFR_RNDN);
+ if (j==0)
+ break;
+ }
+ mpfr_mul (s, s, u1, MPFR_RNDN);
+ mpfr_add (result, result, s, MPFR_RNDN);
+
+ mpfr_mul (u1, u1, z[L], MPFR_RNDN);
+ for (j=0; j<=L-1; j++)
+ {
+ mpfr_div_ui2 (u1, u1, (t + 2), (t + 3), MPFR_RNDN);
+ t += 3;
+ }
+
+ t++;
+
+ /* k = 2 */
+ t++;
+
+ /* End of the loop over k */
+ t -= 3;
+
+ test0 = MPFR_IS_ZERO (u0) ||
+ MPFR_GET_EXP (u0) + (mpfr_exp_t)prec + 4 <= MPFR_GET_EXP (result);
+ test1 = MPFR_IS_ZERO (u1) ||
+ MPFR_GET_EXP (u1) + (mpfr_exp_t)prec + 4 <= MPFR_GET_EXP (result);
+
+ if ( test0 && test1 && (x3u <= (t + 2) * (t + 3) / 2) )
+ break;
+ }
+
+ MPFR_LOG_MSG (("Truncation rank: %lu\n", t));
+
+ err = (5 + MPFR_INT_CEIL_LOG2 (L+1) + MPFR_INT_CEIL_LOG2 (i+1)
+ + cond - MPFR_GET_EXP (result));
+
+ /* err is the number of bits lost due to the evaluation error */
+ /* wprec-(prec+1): number of bits lost due to the approximation error */
+ MPFR_LOG_MSG (("Roundoff error: %Pu\n", err));
+ MPFR_LOG_MSG (("Approxim error: %Pu\n", wprec - prec - 1));
+
+ if (wprec < err+1)
+ correctBits = 0;
+ else
+ {
+ if (wprec < err+prec+1)
+ correctBits = wprec - err - 1;
+ else
+ correctBits = prec;
+ }
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (result, correctBits,
+ MPFR_PREC (y), rnd)))
+ break;
+
+ for (j=0; j<=L; j++)
+ mpfr_clear (z[j]);
+ (*__gmp_free_func) (z, (L + 1) * sizeof (mpfr_t));
+ L = __gmpfr_isqrt (t);
+ MPFR_LOG_MSG (("size of blocks L = %lu\n", L));
+ z = (mpfr_t *) (*__gmp_allocate_func) ( (L + 1) * sizeof (mpfr_t));
+ MPFR_ASSERTN (z != NULL);
+ for (j=0; j<=L; j++)
+ mpfr_init (z[j]);
+
+ if (correctBits == 0)
+ {
+ assumed_exponent *= 2;
+ MPFR_LOG_MSG (("Not a single bit correct (assumed_exponent=%lu)\n",
+ assumed_exponent));
+ wprec = prec + 6 + MPFR_INT_CEIL_LOG2 (t) + cond + assumed_exponent;
+ }
+ else
+ {
+ if (correctBits < prec)
+ { /* The precision was badly chosen */
+ MPFR_LOG_MSG (("Bad assumption on the exponent of Ai (x)", 0));
+ MPFR_LOG_MSG ((" (E=%ld)\n", (long) (MPFR_GET_EXP (result))));
+ wprec = prec + err + 1;
+ }
+ else
+ { /* We are really in a bad case of the TMD */
+ MPFR_ZIV_NEXT (loop, prec);
+
+ /* We update wprec */
+ /* We assume that t will not be multiplied by more than 4 */
+ wprec = (prec + (MPFR_INT_CEIL_LOG2 (t) + 2) + 6 + cond
+ - MPFR_GET_EXP (result));
+ }
+ }
+ } /* End of ZIV loop */
+
+ MPFR_ZIV_FREE (loop);
+ MPFR_SAVE_EXPO_FREE (expo);
+
+ r = mpfr_set (y, result, rnd);
+
+ mpfr_clear (tmp_sp);
+ mpfr_clear (tmp2_sp);
+ for (j=0; j<=L; j++)
+ mpfr_clear (z[j]);
+ (*__gmp_free_func) (z, (L + 1) * sizeof (mpfr_t));
+
+ mpfr_clear (s);
+ mpfr_clear (u0); mpfr_clear (u1);
+ mpfr_clear (result);
+ mpfr_clear (temp1);
+ mpfr_clear (temp2);
+
+ return r;
+}
+
+/* We consider that the boundary between the area where the naive method
+ should preferably be used and the area where Smith' method should preferably
+ be used has the following form:
+ it is a triangle defined by two lines (one for the negative values of x, and
+ one for the positive values of x) crossing at x=0.
+
+ More precisely,
+
+ * If x<0 and MPFR_AI_THRESHOLD1*x + MPFR_AI_THRESHOLD2*prec > MPFR_AI_SCALE,
+ use Smith' algorithm;
+ * If x>0 and MPFR_AI_THRESHOLD3*x + MPFR_AI_THRESHOLD2*prec > MPFR_AI_SCALE,
+ use Smith' algorithm;
+ * otherwise, use the naive method.
+*/
+
+#define MPFR_AI_SCALE 1048576
+
+int
+mpfr_ai (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ mpfr_t temp1, temp2;
+ int use_ai2;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ /* The exponent range must be large enough for the computation of temp1. */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (temp1, MPFR_SMALL_PRECISION);
+ mpfr_init2 (temp2, MPFR_SMALL_PRECISION);
+
+ mpfr_set (temp1, x, MPFR_RNDN);
+ mpfr_set_si (temp2, MPFR_AI_THRESHOLD2, MPFR_RNDN);
+ mpfr_mul_ui (temp2, temp2, MPFR_PREC (y) > ULONG_MAX ?
+ ULONG_MAX : (unsigned long) MPFR_PREC (y), MPFR_RNDN);
+
+ if (MPFR_IS_NEG (x))
+ mpfr_mul_si (temp1, temp1, MPFR_AI_THRESHOLD1, MPFR_RNDN);
+ else
+ mpfr_mul_si (temp1, temp1, MPFR_AI_THRESHOLD3, MPFR_RNDN);
+
+ mpfr_add (temp1, temp1, temp2, MPFR_RNDN);
+ mpfr_clear (temp2);
+
+ use_ai2 = mpfr_cmp_si (temp1, MPFR_AI_SCALE) > 0;
+ mpfr_clear (temp1);
+
+ MPFR_SAVE_EXPO_FREE (expo); /* Ignore all previous exceptions. */
+
+ return use_ai2 ? mpfr_ai2 (y, x, rnd) : mpfr_ai1 (y, x, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/amd/amdfam10/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/amd/amdfam10/mparam.h
new file mode 100644
index 00000000000..4a3e407b225
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/amd/amdfam10/mparam.h
@@ -0,0 +1,236 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.6.1 */
+/* contributed by Jim Cloos <cloos at jhcloos dot com> with GMP 5.0.2 on a
+ "2009 or 2010 vintage phenom-II", where __amd64, __amd64__,
+ __k8, __k8__, __x86_64 and __x86_64__ are also defined.
+*/
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,9,10,11, \
+ 12,12,12,14,14,14,16,16,18,18,19,20,18,22,20,20, \
+ 20,20,20,20,22,22,22,24,28,28,28,28,28,28,32,32, \
+ 30,32,32,32,32,32,32,38,38,38,38,40,40,40,40,40, \
+ 40,40,44,44,48,48,44,46,48,48,56,56,56,56,56,56, \
+ 56,56,56,60,64,60,64,64,64,64,64,64,64,64,64,64, \
+ 60,64,64,72,64,64,72,72,64,64,64,72,80,72,80,76, \
+ 76,80,76,80,80,80,80,76,80,79,80,80,80,80,80,80, \
+ 81,80,86,93,90,87,93,93,93,93,92,93,93,92,93,92, \
+ 93,93,93,93,102,105,105,104,105,105,105,105,105,105,111,116, \
+ 111,110,111,117,117,111,114,116,117,117,117,117,117,116,116,117, \
+ 116,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, \
+ 117,117,117,117,117,117,117,117,117,148,148,156,148,148,148,148, \
+ 148,156,156,156,155,156,156,156,156,156,156,156,156,156,155,156, \
+ 156,156,156,156,172,156,172,172,172,156,172,156,172,172,172,172, \
+ 172,172,172,172,172,172,172,180,172,180,172,172,172,188,188,172, \
+ 188,188,188,188,188,188,179,188,188,188,188,188,188,188,188,188, \
+ 188,220,220,220,220,188,220,220,220,220,220,220,220,220,220,220, \
+ 220,220,220,220,220,220,220,220,220,220,220,220,220,219,220,220, \
+ 220,220,220,220,236,220,220,220,252,252,236,252,252,252,252,236, \
+ 236,236,252,236,252,252,236,252,236,252,252,252,252,251,250,252, \
+ 252,252,252,252,252,252,252,252,252,252,252,252,251,252,252,251, \
+ 252,252,252,252,252,252,252,252,252,252,252,252,252,252,284,284, \
+ 252,284,284,284,284,284,284,284,284,284,284,284,284,284,283,284, \
+ 284,283,284,284,300,300,300,284,284,300,284,284,298,300,316,316, \
+ 300,284,300,316,300,316,300,284,316,316,316,316,300,316,300,316, \
+ 316,300,316,300,316,316,315,316,316,316,316,316,316,316,316,316, \
+ 316,316,316,316,313,316,316,316,316,316,316,316,320,316,320,368, \
+ 316,316,316,368,368,368,367,368,368,368,368,368,368,368,368,368, \
+ 367,367,368,368,368,368,368,368,368,368,368,368,368,368,368,368, \
+ 368,368,368,366,368,368,367,368,368,367,368,368,368,368,368,368, \
+ 367,366,367,368,368,367,368,368,368,368,368,368,368,368,368,368, \
+ 368,368,368,368,368,368,368,368,416,368,368,368,368,368,368,416, \
+ 368,416,415,416,416,368,416,416,416,415,415,416,416,416,416,416, \
+ 416,416,415,416,416,415,416,416,440,416,415,416,416,415,416,415, \
+ 416,416,416,474,415,416,416,415,416,416,416,416,416,416,474,474, \
+ 488,474,440,440,488,488,504,473,504,474,504,504,503,503,503,503, \
+ 503,504,501,504,504,503,474,474,503,504,504,503,504,488,488,488, \
+ 503,503,504,504,504,504,504,504,501,503,504,503,504,504,499,504, \
+ 504,503,504,504,504,504,503,504,504,504,488,504,504,504,474,504, \
+ 501,504,504,501,504,503,504,504,504,504,504,504,504,504,503,504, \
+ 504,503,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,503,568,568,568,504,504,504,504,568,504, \
+ 568,567,568,568,568,568,567,568,567,568,567,600,568,600,568,568, \
+ 568,568,568,567,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,567,568,568,568,568,568,568,568,568, \
+ 568,568,568,632,600,568,568,568,565,568,568,568,632,568,568,600, \
+ 600,631,600,632,600,632,632,600,600,632,600,600,632,600,600,600, \
+ 632,616,600,632,600,632,632,600,600,600,600,600,600,632,600,632, \
+ 632,616,632,632,632,616,632,632,632,627,631,629,632,632,631,632, \
+ 632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632, \
+ 632,632,632,632,687,629,688,632,632,632,632,632,632,632,632,632, \
+ 688,712,632,688,712,688,712,712,688,688,688,711,712,712,680,736, \
+ 712,712,712,688,688,712,712,712,712,712,712,728,712,736,736,711, \
+ 733,736,735,711,728,728,736,728,712,736,736,710,734,736,736,712, \
+ 712,736,712,712,719,728,712,712,712,734,733,726,736,736,736,735, \
+ 736,736,736,712,736,736,736,736,736,736,727,736,736,736,735,736, \
+ 731,736,736,736,736,736,736,736,733,712,736,736,736,736,736,712, \
+ 712,736,736,784,712,712,736,725,760,760,736,727,736,830,736,784, \
+ 728,736,727,783,832,736,734,830,736,736,831,736,736,830,829,832, \
+ 832,832,831,736,782,784,832,828,736,824,736,832,832,831,736,824, \
+ 824,832,832,832,832,832,832,825,832,832,832,824,832,832,832,828, \
+ 822,824,831,829,832,827,832,832,832,831,832,829,829,832,824,832, \
+ 830,832,832,832,832,832,830,832,832,832,832,828,855,832,830,830 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,-1,-1,-1,-1,-1,-1,7,8,9,8,9,9, \
+ 11,11,11,13,13,14,15,16,17,17,19,19,16,19,17,19, \
+ 19,18,19,19,21,21,21,23,23,25,25,23,25,25,25,25, \
+ 28,27,27,29,29,28,31,31,34,34,34,34,38,36,38,38, \
+ 42,42,42,42,42,42,44,46,42,46,44,50,46,50,42,50, \
+ 44,44,46,50,50,50,50,50,50,50,50,50,50,50,50,50, \
+ 52,50,54,54,54,54,56,56,56,56,58,56,56,58,58,60, \
+ 60,62,62,67,62,68,72,68,68,72,68,76,72,72,72,76, \
+ 76,76,76,76,84,72,84,76,76,76,84,76,76,84,84,84, \
+ 92,84,84,84,84,84,92,92,92,92,92,92,92,92,92,100, \
+ 92,92,100,100,92,100,100,100,100,100,100,92,100,100,92,100, \
+ 100,100,92,92,100,92,100,104,100,108,100,100,100,108,104,100, \
+ 100,104,100,108,108,108,112,108,112,112,112,123,112,123,112,135, \
+ 116,123,123,135,123,135,135,135,135,135,135,135,135,135,135,135, \
+ 135,135,147,135,135,135,135,147,147,147,147,147,147,147,147,147, \
+ 147,147,147,147,147,147,147,147,147,147,147,159,147,147,147,147, \
+ 165,147,147,159,153,147,147,147,165,159,147,147,165,153,147,159, \
+ 165,165,165,165,165,171,171,159,165,159,165,165,165,165,165,165, \
+ 171,165,171,171,165,177,171,171,189,183,171,165,165,165,183,165, \
+ 165,165,183,183,186,189,165,189,165,171,165,165,189,165,183,183, \
+ 183,189,183,201,201,189,189,183,189,183,195,189,189,189,183,213, \
+ 183,183,195,195,213,189,189,189,201,201,189,195,213,225,225,201, \
+ 201,213,213,195,213,201,225,225,225,225,225,224,225,225,213,225, \
+ 225,225,225,225,225,225,225,225,225,225,225,225,225,225,249,225, \
+ 249,249,248,225,249,249,249,249,249,249,225,249,249,248,249,249, \
+ 249,249,249,248,249,249,249,249,249,249,249,249,249,249,249,249, \
+ 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, \
+ 273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273, \
+ 273,273,273,273,273,273,273,273,273,273,297,297,297,297,297,296, \
+ 297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297, \
+ 297,297,297,297,297,297,297,297,297,273,273,273,273,273,273,296, \
+ 273,309,297,321,321,297,297,297,297,297,297,296,297,297,297,296, \
+ 297,296,297,297,297,297,297,297,297,297,297,297,297,297,309,297, \
+ 297,297,309,297,297,297,297,297,297,297,321,297,321,333,297,366, \
+ 333,333,333,366,333,296,333,333,333,297,333,333,333,297,297,321, \
+ 321,345,402,345,402,402,402,402,402,402,402,402,402,402,402,402, \
+ 401,401,402,402,402,402,402,402,402,402,402,402,401,402,402,401, \
+ 402,402,402,402,401,402,402,402,402,402,401,402,402,401,401,402, \
+ 401,401,393,402,402,438,401,402,402,401,401,402,401,402,402,402, \
+ 402,401,402,402,402,402,402,402,402,402,402,401,402,401,402,401, \
+ 402,402,400,402,402,402,402,402,402,402,438,438,438,438,438,438, \
+ 438,438,402,438,402,402,402,402,438,438,402,438,401,402,438,438, \
+ 438,438,438,438,438,438,401,437,438,402,401,402,438,401,402,402, \
+ 402,402,402,402,401,437,438,438,438,437,438,438,401,402,402,438, \
+ 438,438,402,402,402,402,401,402,402,437,438,438,438,438,438,438, \
+ 438,438,438,438,437,437,438,438,438,438,438,438,438,437,437,438, \
+ 437,438,438,438,438,402,438,402,438,438,438,438,438,438,437,438, \
+ 456,438,438,438,438,437,438,438,438,438,437,438,438,438,437,438, \
+ 438,438,438,473,437,456,438,438,438,438,438,437,438,438,438,438, \
+ 438,438,437,438,438,438,438,438,456,474,455,456,456,474,473,492, \
+ 456,474,456,474,474,474,474,474,536,512,474,512,474,536,474,474, \
+ 536,474,536,536,474,474,536,536,536,536,536,536,536,536,536,536, \
+ 536,534,536,536,536,535,536,536,536,536,535,536,536,536,536,536, \
+ 536,535,536,535,536,536,512,536,536,536,536,536,536,535,536,534, \
+ 535,584,536,536,536,534,535,536,536,536,536,536,536,536,536,534, \
+ 536,536,536,536,535,536,584,535,536,584,536,536,536,536,584,584, \
+ 584,584,536,584,584,584,584,584,584,584,583,584,582,584,584,584, \
+ 584,584,584,584,584,582,583,584,584,584,584,584,584,584,584,584, \
+ 584,583,584,584,696,584,584,583,584,584,696,726,696,584,584,584, \
+ 728,696,696,696,584,728,696,584,696,696,694,696,696,696,727,584, \
+ 695,694,584,696,696,695,728,696,696,696,696,696,694,696,727,695, \
+ 696,695,695,696,696,728,696,696,695,696,696,696,696,696,696,696, \
+ 727,696,696,696,696,695,696,728,727,696,695,727,696,726,727,726, \
+ 727,728,728,727,694,727,728,728,728,727,727,728,727,728,727,728 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,9,10,11,10,13,14,15, \
+ 14,15,18,19,18,14,15,18,18,18,19,17,18,19,18,19, \
+ 22,21,23,21,22,22,23,25,26,27,26,27,27,27,30,30, \
+ 30,34,30,34,32,33,34,31,30,34,37,34,38,38,38,38, \
+ 38,38,42,43,42,42,39,38,42,44,43,42,40,45,46,46, \
+ 46,45,46,43,44,50,48,48,48,46,53,51,50,50,50,50, \
+ 53,51,53,53,53,53,55,55,55,55,55,55,60,64,60,60, \
+ 62,63,64,65,60,64,68,72,64,68,68,64,64,68,72,66, \
+ 67,69,71,72,76,80,71,72,76,74,74,76,76,77,76,80, \
+ 79,84,84,84,78,84,88,88,92,84,80,92,92,80,88,84, \
+ 92,88,91,92,92,92,93,95,92,90,92,92,92,92,92,96, \
+ 96,96,92,92,92,92,96,96,102,96,95,110,96,96,100,100, \
+ 112,100,100,106,106,110,112,110,110,111,110,120,110,110,112,120, \
+ 110,120,120,120,112,120,128,128,128,128,124,128,128,120,128,128, \
+ 127,128,124,128,128,128,128,126,128,128,128,128,136,140,128,128, \
+ 128,128,136,144,128,128,144,144,128,144,144,144,144,128,152,152, \
+ 152,152,152,160,160,152,144,144,152,151,144,143,152,144,144,152, \
+ 152,144,152,152,152,152,151,152,160,158,144,160,160,160,160,160, \
+ 152,160,152,152,152,160,152,160,160,156,158,160,160,160,160,160, \
+ 160,160,160,160,168,160,160,160,160,160,159,160,160,160,176,176, \
+ 180,176,176,184,184,186,184,184,184,184,186,184,186,172,176,192, \
+ 184,184,184,184,185,176,176,185,184,185,186,183,184,184,181,191, \
+ 192,184,184,185,192,192,192,186,192,192,192,192,192,191,196,192, \
+ 192,192,192,192,196,190,192,192,200,192,198,220,222,204,200,222, \
+ 220,220,222,222,224,222,222,219,222,222,224,224,220,222,220,224, \
+ 220,221,222,220,232,222,221,232,222,220,224,232,220,232,222,232, \
+ 224,220,220,222,222,222,221,222,220,220,222,222,224,224,224,222, \
+ 220,224,224,232,224,222,222,232,224,222,223,224,224,224,231,232, \
+ 256,232,231,232,239,232,239,234,238,238,239,232,239,232,256,256, \
+ 288,288,248,256,256,256,256,256,256,239,255,256,256,256,256,256, \
+ 256,256,256,256,256,256,296,256,254,256,256,272,272,272,256,256, \
+ 288,272,256,256,280,296,288,280,288,288,296,280,288,288,288,294, \
+ 296,296,294,304,288,287,288,296,304,304,288,303,304,296,288,312, \
+ 312,312,312,288,288,312,288,288,312,320,305,288,320,320,288,312, \
+ 311,312,312,312,304,304,312,304,319,296,288,310,312,288,288,320, \
+ 304,304,304,288,300,312,309,304,304,311,288,296,296,320,312,311, \
+ 296,320,312,304,304,312,312,320,296,320,312,296,305,312,304,303, \
+ 304,312,303,312,304,311,312,312,320,312,311,320,320,320,320,320, \
+ 312,320,312,312,312,320,312,312,320,320,319,320,320,320,320,320, \
+ 320,320,320,320,320,320,320,320,320,320,320,320,320,320,352,336, \
+ 344,352,352,344,360,360,343,336,352,366,370,352,360,368,376,360, \
+ 360,360,367,368,360,352,371,360,368,368,372,352,352,352,352,352, \
+ 384,370,360,368,384,372,375,360,368,368,368,368,368,368,384,372, \
+ 352,372,352,368,366,376,352,367,384,368,360,368,360,384,371,376, \
+ 360,366,368,368,360,369,371,367,368,369,384,376,368,372,372,384, \
+ 440,368,376,384,372,376,440,440,376,440,368,369,384,370,440,440, \
+ 440,392,440,440,384,384,440,440,448,440,440,440,440,440,440,440, \
+ 440,440,384,440,439,440,384,384,440,440,440,440,440,440,439,448, \
+ 440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, \
+ 440,440,440,440,440,440,439,440,440,440,440,440,440,440,440,440, \
+ 440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,480, \
+ 440,440,440,440,468,480,440,440,440,440,440,464,440,440,440,440, \
+ 480,440,440,440,440,448,439,440,440,440,440,440,440,448,440,448, \
+ 512,439,440,448,440,440,440,438,440,440,440,440,496,440,465,440, \
+ 440,466,440,440,440,440,512,440,440,440,440,464,440,440,448,466, \
+ 512,496,512,512,512,448,512,447,448,468,472,448,480,464,480,512, \
+ 466,466,496,468,512,468,496,480,512,512,496,467,472,512,512,512, \
+ 512,468,512,512,512,512,512,478,512,472,512,512,512,496,512,512, \
+ 512,512,512,512,496,480,496,496,512,512,512,496,480,512,544,480, \
+ 576,512,512,576,512,512,512,576,512,512,496,496,512,480,576,576, \
+ 512,510,496,568,576,576,496,560,576,511,512,576,576,512,512,576, \
+ 560,496,576,512,512,512,512,512,512,576,576,512,512,576,512,512, \
+ 512,512,576,512,512,512,508,512,576,512,576,576,512,576,592,512, \
+ 568,512,576,568,576,576,576,512,576,576,592,576,592,512,608,576 \
+
+#define MPFR_MUL_THRESHOLD 17 /* limbs */
+#define MPFR_SQR_THRESHOLD 19 /* limbs */
+#define MPFR_DIV_THRESHOLD 28 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 1031 /* bits */
+#define MPFR_EXP_THRESHOLD 10625 /* bits */
+#define MPFR_SINCOS_THRESHOLD 26682 /* bits */
+#define MPFR_AI_THRESHOLD1 -11328 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 1045
+#define MPFR_AI_THRESHOLD3 17871
+/* Tuneup completed successfully, took 562 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/amd/athlon/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/amd/athlon/mparam.h
new file mode 100644
index 00000000000..38236c4ab24
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/amd/athlon/mparam.h
@@ -0,0 +1,90 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,-1,0,-1,0,-1,-1,0,-1,-1,0,0,0,0,10, \
+ 0,12,13,14,15,16,0,0,0,0,0,19,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32, \
+ 30,32,30,34,32,32,36,34,36,36,38,38,42,38,38,42, \
+ 40,38,42,46,42,42,42,44,44,44,44,44,48,50,46,46, \
+ 60,50,50,48,50,56,56,56,56,56,56,56,60,60,64,60, \
+ 64,64,60,60,60,72,64,64,68,72,76,72,76,72,72,76, \
+ 75,76,76,72,76,72,75,72,72,72,84,76,84,75,72,76, \
+ 84,80,76,84,84,76,76,76,76,88,84,88,80,84,83,96, \
+ 84,96,92,84,88,91,92,88,92,90,96,96,92,91,92,96, \
+ 96,120,95,100,112,120,100,119,112,120,120,112,119,112,119,119, \
+ 120,118,119,119,119,118,119,120,128,127,120,128,128,120,120,127, \
+ 120,128,128,128,128,120,128,127,120,128,128,127,128,127,144,136, \
+ 128,144,152,152,152,136,144,144,144,136,151,152,144,152,128,151, \
+ 144,152,144,144,151,144,150,150,136,151,152,143,143,143,142,168, \
+ 144,144,168,151,168,144,152,151,152,152,160,152,151,152,160,151, \
+ 152,151,152,167,152,152,166,152,167,160,168,204,160,160,168,168, \
+ 204,176,202,167,168,166,167,168,204,184,202,204,204,204,204,192, \
+ 184,192,204,202,202,216,204,227,202,204,216,203,203,204,203,227, \
+ 202,204,202,202,202,203,202,215,204,202,203,202,202,215,228,214, \
+ 226,214,228,214,228,215,228,216,226,214,228,225,226,228,226,226, \
+ 226,215,216,216,226,225,226,227,216,227,240,216,252,252,226,227, \
+ 228,239,227,250,227,226,227,227,252,238,228,239,252,227,228,228, \
+ 252,226,246,228,227,227,252,247,250,263,262,250,252,250,250,252, \
+ 250,288,288,250,250,250,251,264,264,271,287,276,250,288,252,286, \
+ 251,287,288,251,276,274,288,262,263,263,282,252,288,252,276,284, \
+ 287,274,264,274,288,275,275,274,274,288,276,264,273,286,274,276, \
+ 300,287,288,286,286,276,288,285,275,300,275,273,275,299,300,299, \
+ 279,336,336,286,287,284,360,359,336,335,288,360,333,359,334,335, \
+ 335,287,359,335,336,336,359,333,334,359,360,288,360,332,335,336, \
+ 335,336,336,333,336,335,336,359,334,334,335,360,336,334,356,357, \
+ 335,336,358,359,359,336,335,336,334,355,384,356,354,384,334,357, \
+ 336,359,384,359,360,356,384,382,336,383,384,384,354,355,383,384, \
+ 382,359,384,382,382,383,383,359,381,382,383,356,384,382,381,384, \
+ 357,384,358,357,358,358,380,383,382,382,383,360,360,381,382,360, \
+ 377,360,378,360,360,381,382,383,381,380,383,383,360,382,383,380, \
+ 383,383,384,381,379,360,381,381,382,431,380,380,378,380,384,381, \
+ 382,382,384,407,384,382,379,384,430,431,383,384,408,384,456,431, \
+ 431,455,431,428,384,454,455,403,432,383,407,430,430,456,408,427, \
+ 455,455,456,455,432,431,431,429,455,432,432,424,430,427,427,429, \
+ 452,454,426,455,456,431,430,454,452,454,431,456,431,428,455,430, \
+ 454,430,432,455,454,442,443,432,443,431,451,452,456,430,451,456, \
+ 444,455,449,456,432,454,449,454,502,432,448,504,450,503,503,453, \
+ 454,502,446,452,453,454,455,499,504,453,456,504,454,453,503,455, \
+ 456,456,500,478,502,454,456,499,478,454,480,499,501,496,502,455, \
+ 499,502,503,456,478,500,501,500,479,503,504,451,452,479,454,455, \
+ 502,503,504,504,454,499,503,501,454,503,456,503,504,501,455,502, \
+ 503,503,502,504,610,503,504,574,480,551,528,504,609,576,480,503, \
+ 496,502,503,552,551,552,551,503,504,503,610,608,609,610,611,608, \
+ 608,551,648,611,612,550,576,572,608,611,610,606,608,611,610,574, \
+ 575,576,606,607,606,606,608,606,606,575,576,604,604,604,608,609, \
+ 606,606,606,608,604,604,611,604,604,576,610,606,610,606,604,610, \
+ 606,612,604,608,610,609,604,608,606,647,612,610,604,606,648,610, \
+ 610,606,646,608,604,647,606,647,606,609,610,647,648,609,641,611, \
+ 643,611,643,648,643,640,646,611,644,644,645,611,642,646,611,612, \
+ 640,647,610,611,610,611,606,647,648,647,648,644,682,642,682,683, \
+ 610,611,680,678,642,681,682,647,682,612,682,648,611,665,680,683, \
+ 609,646,666,676,680,646,679,647,646,646,648,679,684,611,612,643, \
+ 684,645,646,647,683,647,608,645,682,647,682,646,610,648,682,610, \
+ 684,612,612,683,684,647,647,646,680,646,646,745,648,646,644,647, \
+ 648,647,678,646,647,683,642,682,682,684,646,645,642,647,646,677, \
+ 646,647,683,678,680,646,646,643,681,647,683,645,666,755,756,645, \
+ 643,647,646,647,647,648,674,755,756,674,647,643,680,682,684,680, \
+ 680,682,682,675,682,677,666,683,680,682,682,684,680,681,674,674 \
+
+#define MPFR_MUL_THRESHOLD 19
+#define MPFR_EXP_2_THRESHOLD 411 /* bits */
+#define MPFR_EXP_THRESHOLD 45200 /* bits */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/amd/k8/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/amd/k8/mparam.h
new file mode 100644
index 00000000000..1f818869c0d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/amd/k8/mparam.h
@@ -0,0 +1,236 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.3.2 */
+/* gcc11.fsffrance.org (Dual-Core AMD Opteron(tm) Processor 2212)
+ with gmp 5.0.2.
+ Keith Briggs sent similar parameters obtained on a AMD Athlon
+ (__tune_k8__, __x86_64, __amd64, __k8) */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,11,11, \
+ 12,12,11,15,14,14,15,16,18,18,19,20,18,19,19,20, \
+ 22,22,23,24,26,30,28,28,32,30,30,32,32,30,32,32, \
+ 32,30,30,32,32,38,32,32,36,40,40,40,36,38,40,38, \
+ 40,44,40,44,44,44,44,48,48,46,48,48,56,56,56,56, \
+ 56,56,56,60,64,60,60,64,64,64,64,64,64,64,64,64, \
+ 72,72,72,72,72,72,72,72,72,72,72,72,80,80,80,80, \
+ 80,80,80,80,80,80,80,80,80,80,80,80,93,80,93,93, \
+ 93,76,80,93,80,93,93,90,93,93,93,93,93,93,93,93, \
+ 93,93,111,105,93,117,105,105,117,117,111,117,117,105,117,117, \
+ 117,105,117,117,117,117,117,117,117,117,117,117,117,117,117,117, \
+ 117,117,117,117,116,117,116,117,117,117,117,117,117,117,117,117, \
+ 117,117,140,117,140,140,140,140,140,148,148,147,140,156,156,156, \
+ 148,148,156,148,156,156,156,156,156,155,156,155,156,155,156,156, \
+ 156,156,156,156,156,156,156,156,172,172,172,156,172,172,172,172, \
+ 172,172,172,172,180,180,180,180,180,180,180,188,188,188,188,188, \
+ 180,188,188,188,188,187,188,188,188,188,188,188,188,188,188,188, \
+ 188,188,188,188,188,188,188,188,188,188,188,188,188,220,220,204, \
+ 220,220,220,219,220,220,220,220,220,219,220,219,220,219,220,220, \
+ 220,236,236,220,236,219,233,236,233,252,236,252,236,252,252,236, \
+ 235,236,236,252,252,236,236,252,252,236,252,252,236,251,250,251, \
+ 252,252,251,252,252,252,252,252,252,252,252,252,252,252,252,252, \
+ 252,252,284,252,284,284,284,284,284,252,284,284,284,284,284,284, \
+ 283,284,284,284,284,284,284,284,284,284,284,283,284,284,284,284, \
+ 284,284,283,284,284,284,284,284,284,284,284,284,284,300,284,300, \
+ 300,316,300,300,300,316,300,300,316,316,316,316,316,316,316,316, \
+ 316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316, \
+ 316,315,316,316,315,316,316,316,315,316,316,316,316,316,316,316, \
+ 316,316,316,368,316,316,367,368,368,368,368,368,368,368,368,368, \
+ 368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, \
+ 368,368,368,368,368,368,367,368,368,368,368,367,368,367,367,368, \
+ 368,367,367,368,367,368,368,367,368,368,368,367,368,368,368,368, \
+ 367,368,416,415,416,416,416,416,416,416,415,416,416,416,416,416, \
+ 416,416,416,416,416,416,415,416,415,416,415,416,416,416,416,416, \
+ 416,415,416,416,415,416,416,415,416,416,440,416,416,416,440,416, \
+ 415,416,415,416,464,464,464,464,464,464,463,464,464,464,463,464, \
+ 464,464,464,464,464,463,464,464,474,474,464,464,473,474,474,504, \
+ 474,474,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,503,504,504,504,504,504,504, \
+ 503,504,504,504,504,504,503,504,504,504,504,504,503,504,504,503, \
+ 504,504,504,504,504,504,504,504,503,504,504,504,504,504,503,504, \
+ 504,504,504,504,568,568,568,504,568,568,568,568,568,568,568,568, \
+ 568,567,568,568,568,567,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,567,567,568,566,568,568,568,567, \
+ 568,568,568,568,568,568,568,568,568,568,567,568,568,567,568,568, \
+ 568,568,568,568,567,568,568,566,567,568,568,568,568,568,568,568, \
+ 568,567,568,568,567,568,567,568,567,568,567,568,567,568,632,568, \
+ 600,632,632,600,631,632,632,632,632,631,600,600,632,632,600,631, \
+ 632,632,632,632,632,632,631,632,632,632,631,632,631,632,632,632, \
+ 632,632,631,632,632,631,632,632,632,631,632,632,632,632,631,632, \
+ 632,632,632,632,630,632,632,632,632,632,631,632,631,632,631,632, \
+ 632,632,632,632,632,632,632,632,631,632,632,632,632,632,632,631, \
+ 632,632,632,631,632,632,632,736,632,631,632,736,632,632,632,632, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,734,736,736,735,736,736,735,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,735,736,736,736,736,736,736,736,735,736, \
+ 736,736,735,736,735,736,736,736,735,736,736,736,736,736,736,736, \
+ 736,736,736,735,736,736,736,735,736,736,736,736,736,735,736,736, \
+ 736,736,736,736,736,736,736,736,736,735,736,735,736,832,736,832, \
+ 832,832,832,832,831,832,832,831,832,832,832,832,832,832,831,832, \
+ 831,832,831,832,832,831,832,832,832,832,832,832,831,832,832,832, \
+ 831,832,832,832,832,832,831,832,832,832,832,832,831,832,831,832, \
+ 832,832,831,832,831,832,831,832,832,832,832,832,832,832,831,832 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,-1,-1,-1,-1,-1,7,7,8,9,9,11, \
+ 11,11,11,11,13,13,15,15,17,17,18,17,17,17,18,20, \
+ 20,21,23,23,20,21,23,23,24,25,23,23,24,25,26,25, \
+ 28,27,28,29,28,31,34,31,34,34,34,34,34,34,34,34, \
+ 40,34,40,36,40,42,40,42,40,40,42,42,48,48,46,46, \
+ 42,46,48,48,46,50,46,52,54,54,48,56,54,50,54,52, \
+ 50,54,54,52,54,54,58,58,62,64,58,58,58,64,62,64, \
+ 58,64,66,72,68,68,68,68,68,62,66,72,72,72,68,68, \
+ 72,72,68,72,72,72,72,72,80,84,80,80,80,84,80,80, \
+ 80,84,84,84,84,84,92,80,80,84,92,84,92,92,92,96, \
+ 100,92,100,92,96,92,92,96,100,100,96,96,96,100,100,96, \
+ 96,96,92,92,96,96,108,100,96,100,100,112,112,112,112,112, \
+ 112,112,108,112,100,104,112,116,104,116,116,108,112,112,112,116, \
+ 112,112,112,112,112,141,135,141,116,135,135,135,141,141,141,141, \
+ 141,141,141,141,141,141,135,135,141,141,147,141,141,141,140,141, \
+ 141,141,147,147,141,147,147,147,147,147,147,147,147,147,147,159, \
+ 153,147,147,159,159,159,159,159,159,159,159,159,165,171,171,171, \
+ 165,170,171,171,165,171,171,171,165,171,171,171,183,171,171,171, \
+ 183,183,171,183,171,183,183,183,183,183,183,183,189,189,183,195, \
+ 171,171,188,171,171,195,171,171,171,195,195,182,195,177,182,183, \
+ 183,181,182,183,183,189,183,194,195,195,194,195,195,195,195,195, \
+ 195,195,213,195,195,195,195,195,189,195,195,195,195,195,195,195, \
+ 212,195,213,195,195,195,213,195,195,195,195,195,195,213,213,201, \
+ 195,195,195,213,213,213,213,213,212,213,213,213,213,213,213,213, \
+ 237,212,213,213,213,213,213,225,213,213,213,249,213,249,237,237, \
+ 237,237,237,249,237,237,237,237,249,237,249,237,237,237,249,249, \
+ 249,236,237,249,249,249,249,249,249,249,249,249,249,249,249,249, \
+ 249,273,273,273,273,273,273,272,273,273,273,273,273,273,273,273, \
+ 273,273,273,273,273,273,273,285,273,284,285,285,285,285,297,284, \
+ 285,297,285,297,297,297,297,297,297,297,297,296,297,296,297,296, \
+ 297,297,297,297,297,297,297,273,297,273,309,273,273,273,273,320, \
+ 321,321,321,285,285,285,285,285,284,285,297,285,297,297,297,297, \
+ 297,297,333,297,297,297,296,297,309,297,297,297,297,285,309,348, \
+ 297,297,348,348,285,321,297,321,321,297,320,321,321,297,297,321, \
+ 297,321,333,366,333,333,309,333,333,333,332,333,297,321,321,321, \
+ 321,348,321,345,348,348,348,366,348,347,348,365,366,365,333,366, \
+ 402,366,333,366,366,366,366,402,366,365,366,366,366,366,366,366, \
+ 366,348,420,420,348,420,419,420,419,420,420,420,366,366,420,366, \
+ 366,365,366,402,366,366,366,366,402,402,402,401,402,402,402,401, \
+ 420,401,402,402,420,420,420,420,402,420,420,420,420,419,420,419, \
+ 420,419,420,420,402,401,420,402,402,420,402,420,402,401,420,420, \
+ 420,420,420,420,420,402,420,420,402,420,420,420,420,420,420,420, \
+ 420,420,420,420,420,420,420,420,420,419,420,420,438,420,420,438, \
+ 420,420,420,420,420,420,438,420,437,438,438,420,438,438,420,420, \
+ 438,420,420,438,438,420,420,420,438,420,420,420,420,419,420,420, \
+ 420,420,420,420,474,419,420,420,420,438,419,456,438,474,438,437, \
+ 438,438,438,438,438,420,438,420,438,438,438,420,420,419,420,420, \
+ 438,420,438,419,420,420,420,420,420,419,420,474,420,420,438,420, \
+ 438,473,474,474,474,473,438,474,474,438,438,437,438,438,438,438, \
+ 438,438,474,437,437,474,560,456,473,474,535,536,474,560,536,536, \
+ 560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560, \
+ 560,560,559,560,560,560,560,560,560,560,560,560,560,560,560,560, \
+ 559,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560, \
+ 560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560, \
+ 559,560,560,560,560,560,560,560,559,560,559,560,560,560,560,559, \
+ 559,560,559,560,560,560,560,560,560,559,560,560,559,560,559,560, \
+ 560,560,559,560,560,560,560,559,560,560,560,560,560,560,560,560, \
+ 560,560,560,560,560,560,560,560,560,560,559,584,560,560,560,560, \
+ 559,560,560,559,560,560,560,560,560,560,559,559,560,560,560,560, \
+ 560,560,559,560,560,560,560,560,560,583,560,560,584,560,584,584, \
+ 584,560,583,583,584,584,582,584,584,584,583,584,584,584,584,584, \
+ 727,584,728,632,728,560,727,728,728,560,584,560,560,727,728,728, \
+ 727,728,728,728,608,728,728,724,728,728,760,727,728,727,728,728, \
+ 728,759,728,696,728,728,728,728,728,727,759,760,727,760,760,727 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, \
+ 14,15,18,19,18,14,22,18,18,18,18,20,18,18,20,22, \
+ 22,22,23,24,26,26,26,28,24,30,28,28,28,30,30,32, \
+ 32,34,32,34,32,34,34,31,32,37,32,37,32,33,34,35, \
+ 39,37,37,39,39,37,39,39,39,39,39,39,43,44,46,46, \
+ 47,45,46,48,52,48,50,50,48,46,50,50,52,56,54,50, \
+ 60,60,60,56,56,64,61,60,56,64,60,64,64,64,64,60, \
+ 64,64,64,63,64,64,64,64,64,64,70,64,64,68,78,66, \
+ 74,69,70,74,70,69,74,78,78,74,74,74,74,78,78,79, \
+ 78,78,78,78,78,78,78,78,78,78,88,88,88,88,88,88, \
+ 92,92,88,91,92,88,95,96,96,96,96,92,92,88,92,112, \
+ 112,112,112,108,112,112,112,112,120,112,112,112,120,112,120,112, \
+ 112,120,120,120,104,112,112,128,112,112,112,120,112,112,120,120, \
+ 128,120,120,120,112,120,128,128,128,120,128,128,128,128,128,128, \
+ 128,128,120,128,128,128,128,128,120,128,128,128,128,128,128,128, \
+ 128,128,128,128,128,128,126,128,128,128,127,128,128,128,144,148, \
+ 136,136,144,144,140,141,140,148,148,151,144,148,148,160,156,148, \
+ 160,160,160,160,156,156,156,148,148,156,148,160,160,160,148,156, \
+ 148,148,148,156,156,156,156,160,156,156,158,156,156,157,160,156, \
+ 156,160,160,158,156,156,158,158,159,160,159,160,160,160,184,183, \
+ 184,184,180,184,184,176,184,184,184,184,186,184,184,184,184,184, \
+ 184,184,186,186,192,184,184,186,184,184,186,183,184,185,186,184, \
+ 184,184,186,185,216,184,192,186,208,192,192,184,208,216,224,209, \
+ 208,216,224,222,224,216,208,224,224,224,208,224,210,224,216,234, \
+ 208,216,216,208,224,216,216,224,224,222,224,224,224,216,224,224, \
+ 224,221,224,216,232,224,224,224,224,224,224,224,208,224,222,224, \
+ 224,224,216,224,232,224,224,216,224,256,224,256,224,248,224,224, \
+ 224,224,224,224,224,222,224,232,222,224,224,224,224,224,230,232, \
+ 256,234,232,240,240,233,240,233,248,240,240,240,240,238,240,256, \
+ 248,240,248,256,256,256,256,256,256,248,256,256,256,256,256,256, \
+ 256,256,256,256,256,256,248,256,248,256,248,248,256,256,256,256, \
+ 256,256,256,256,280,296,280,280,256,288,296,280,256,280,280,296, \
+ 296,296,280,280,280,296,296,296,280,280,280,296,280,296,295,312, \
+ 312,312,312,296,312,311,312,312,312,296,296,312,296,296,312,312, \
+ 312,296,312,312,296,311,312,312,312,312,312,312,312,312,312,296, \
+ 296,312,311,296,312,312,312,312,312,312,312,312,296,312,312,312, \
+ 312,312,312,312,312,312,312,312,296,312,312,312,312,312,312,312, \
+ 312,312,312,312,311,311,312,312,312,312,312,312,312,312,312,312, \
+ 312,312,312,312,312,312,312,312,312,312,312,312,312,312,320,316, \
+ 320,319,319,320,320,320,319,320,319,320,360,320,320,320,352,360, \
+ 368,352,368,368,369,372,344,370,372,366,369,352,370,370,370,360, \
+ 360,360,360,368,360,372,372,360,370,368,372,367,368,360,370,368, \
+ 372,371,370,372,372,372,371,368,368,368,370,370,368,368,368,372, \
+ 370,372,367,368,368,370,368,368,360,368,360,368,370,368,368,367, \
+ 360,368,368,368,372,368,372,368,368,368,372,371,368,416,368,367, \
+ 372,368,372,372,372,370,440,372,368,416,368,368,368,433,448,369, \
+ 440,416,415,416,440,448,440,440,448,448,440,448,440,440,448,416, \
+ 416,416,415,440,417,416,416,418,432,418,417,448,416,432,416,432, \
+ 416,420,440,448,408,416,432,448,416,448,448,448,440,440,440,440, \
+ 448,440,440,440,440,448,416,448,440,416,448,416,448,448,440,448, \
+ 416,440,416,419,417,448,416,420,416,432,433,420,417,432,416,424, \
+ 440,440,440,440,448,437,440,440,448,440,440,448,448,448,448,432, \
+ 480,440,440,440,448,448,448,448,448,448,440,448,445,432,448,448, \
+ 448,439,448,448,468,448,448,440,440,440,448,448,468,496,480,448, \
+ 440,448,440,468,440,496,440,466,448,448,448,468,448,440,448,448, \
+ 448,496,496,496,496,448,448,496,448,468,468,448,448,468,480,467, \
+ 468,512,496,512,512,496,496,480,512,480,496,512,512,512,496,512, \
+ 512,496,496,496,512,512,512,512,512,496,512,512,496,496,496,496, \
+ 512,512,496,512,496,496,496,496,512,512,512,496,480,496,496,496, \
+ 496,496,512,512,512,512,496,496,512,496,496,496,512,480,496,544, \
+ 512,496,496,496,576,512,496,560,496,496,512,561,496,560,496,560, \
+ 560,496,512,512,512,496,512,512,512,576,512,512,512,512,512,512, \
+ 512,512,512,512,560,512,560,512,576,512,576,592,512,560,591,512, \
+ 592,512,576,512,576,592,592,624,592,576,560,512,592,576,592,592 \
+
+#define MPFR_MUL_THRESHOLD 19 /* limbs */
+#define MPFR_SQR_THRESHOLD 18 /* limbs */
+#define MPFR_DIV_THRESHOLD 34 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 1031 /* bits */
+#define MPFR_EXP_THRESHOLD 11014 /* bits */
+#define MPFR_SINCOS_THRESHOLD 26907 /* bits */
+#define MPFR_AI_THRESHOLD1 -12404 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 1024
+#define MPFR_AI_THRESHOLD3 19611
+/* Tuneup completed successfully, took 759 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/arm/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/arm/mparam.h
new file mode 100644
index 00000000000..7b73c9a7d12
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/arm/mparam.h
@@ -0,0 +1,232 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2010-10-15, gcc 4.4.4 */
+/* gcc57.fsffrance.org (Feroceon 88FR131 rev 1 (v5l)) with gmp 5.0.1 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 62,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, \
+ 76,76,76,84,84,84,88,88,88,92,88,92,92,92,92,92, \
+ 92,92,92,92,92,92,92,92,92,92,92,92,92,92,100,100, \
+ 104,108,104,108,108,108,108,108,108,108,108,108,108,108,108,108, \
+ 108,108,108,108,108,108,108,108,120,116,120,120,129,129,129,135, \
+ 135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135, \
+ 135,135,135,135,135,135,135,147,147,147,147,147,147,153,153,153, \
+ 159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159, \
+ 159,159,159,159,159,159,159,159,159,171,171,171,171,177,177,177, \
+ 183,177,183,183,183,183,183,183,183,183,183,183,183,183,183,183, \
+ 183,183,183,183,183,183,183,183,204,204,204,204,204,204,212,212, \
+ 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, \
+ 212,212,212,212,212,212,212,212,212,212,212,228,228,228,228,228, \
+ 228,228,236,236,236,236,236,244,244,244,244,244,244,244,244,244, \
+ 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, \
+ 244,244,244,244,260,260,244,244,243,244,244,244,244,244,244,244, \
+ 244,244,244,244,244,284,284,284,284,284,284,284,284,300,300,300, \
+ 300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300, \
+ 300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300, \
+ 300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300, \
+ 300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300, \
+ 300,332,332,332,332,332,332,332,332,332,332,332,332,332,332,348, \
+ 348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348, \
+ 348,364,364,364,364,364,364,364,348,364,364,364,364,348,364,364, \
+ 364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, \
+ 364,364,364,364,364,364,364,364,366,364,364,364,364,364,364,364, \
+ 364,364,390,364,390,390,390,390,390,390,390,390,390,390,390,426, \
+ 426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, \
+ 426,426,426,426,426,426,426,450,426,450,450,450,450,450,450,450, \
+ 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450, \
+ 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450, \
+ 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450, \
+ 450,450,450,450,474,450,474,498,498,498,498,498,498,498,498,498, \
+ 498,498,498,498,498,498,498,498,497,498,497,498,498,498,498,498, \
+ 498,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522, \
+ 522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522, \
+ 546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546, \
+ 546,546,546,546,545,546,568,568,568,546,568,568,568,568,568,568, \
+ 568,568,568,568,568,600,600,600,600,568,600,600,600,568,568,600, \
+ 600,600,600,600,600,600,600,598,600,600,600,600,600,600,600,600, \
+ 599,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,600,632,600,600,600,600, \
+ 632,632,600,600,632,632,600,632,664,664,664,664,664,664,664,664, \
+ 664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664, \
+ 664,664,664,664,664,664,664,664,664,664,664,664,696,696,696,696, \
+ 696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696, \
+ 696,696,696,696,696,696,696,696,695,696,728,696,728,728,727,728, \
+ 728,728,728,728,728,727,728,728,727,728,728,728,728,728,727,728, \
+ 728,727,728,727,728,728,728,728,728,728,727,728,728,727,727,728, \
+ 728,727,728,728,728,728,727,728,728,728,728,728,728,728,728,728, \
+ 728,728,728,728,728,727,728,728,727,728,728,728,728,728,728,728, \
+ 728,728,728,727,727,728,728,728,728,727,728,728,728,728,728,728, \
+ 728,728,728,727,728,728,728,728,728,728,727,728,728,728,728,792, \
+ 792,792,792,792,728,728,760,760,760,728,792,792,760,792,792,760, \
+ 760,760,824,792,824,792,824,792,824,792,824,824,824,824,824,824, \
+ 823,824,824,824,792,792,824,792,824,792,792,792,824,824,792,856 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,12,12,13,13,14,14,15,15,16,16,17,17, \
+ 18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25, \
+ 26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33, \
+ 34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41, \
+ 42,42,43,43,44,44,47,45,46,46,47,47,48,48,49,49, \
+ 50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57, \
+ 58,58,59,59,60,60,61,61,62,62,63,63,64,64,67,65, \
+ 66,66,67,67,68,68,69,69,70,70,71,71,73,72,75,73, \
+ 74,74,75,77,76,76,82,77,82,82,82,82,82,82,82,82, \
+ 82,82,86,86,90,90,90,85,90,90,90,90,90,90,90,94, \
+ 90,94,98,94,98,98,98,98,98,98,98,98,98,98,98,102, \
+ 106,106,106,102,106,106,106,106,106,106,106,110,106,114,114,110, \
+ 110,114,114,114,114,114,114,118,114,114,114,118,122,122,122,118, \
+ 122,122,122,122,122,122,122,126,130,130,126,119,130,120,130,121, \
+ 122,122,123,123,124,124,125,125,126,126,127,128,128,128,130,130, \
+ 130,132,131,132,134,132,141,136,141,138,147,144,147,144,147,144, \
+ 147,150,147,150,153,150,153,156,153,156,159,156,159,156,147,145, \
+ 147,150,147,150,148,150,153,156,153,156,159,156,159,156,159,162, \
+ 159,162,159,162,159,162,165,168,165,168,165,168,171,174,171,174, \
+ 171,174,177,174,171,180,177,174,177,180,183,180,183,180,183,186, \
+ 183,186,183,186,183,180,189,180,195,180,183,180,183,180,183,186, \
+ 183,186,183,186,189,192,195,192,189,192,195,192,195,198,195,198, \
+ 195,198,195,198,201,204,201,204,207,204,207,204,207,210,207,210, \
+ 207,210,207,210,207,220,224,220,223,228,224,224,224,228,204,228, \
+ 204,228,232,228,204,228,232,236,232,236,240,236,240,240,240,244, \
+ 240,240,243,244,240,244,228,244,228,248,228,252,228,252,228,256, \
+ 228,256,236,256,236,240,240,239,244,240,240,240,240,243,244,248, \
+ 244,243,248,248,248,248,252,248,252,256,256,256,256,256,256,256, \
+ 256,256,260,259,260,264,260,264,260,267,268,272,268,272,276,248, \
+ 252,256,256,256,260,259,256,256,256,255,260,264,260,264,260,267, \
+ 260,267,272,272,264,272,272,272,272,272,276,272,276,272,276,275, \
+ 276,280,276,280,284,280,284,288,284,280,292,288,288,291,292,287, \
+ 288,288,292,296,292,291,292,308,308,304,300,308,300,308,308,308, \
+ 308,308,304,308,316,308,316,315,324,324,324,323,324,324,324,324, \
+ 324,323,324,323,324,328,324,323,324,323,336,336,342,336,342,336, \
+ 342,336,342,348,342,348,348,348,348,323,348,353,348,360,354,360, \
+ 360,360,360,360,354,360,366,360,360,360,366,360,366,360,366,372, \
+ 366,372,366,372,378,372,372,372,378,384,378,360,378,384,390,384, \
+ 384,384,384,384,384,384,384,384,390,396,366,372,372,372,372,372, \
+ 378,396,378,384,384,384,384,384,384,384,390,384,424,384,424,423, \
+ 424,423,424,423,424,423,424,432,424,432,424,432,432,432,424,432, \
+ 432,432,432,448,432,432,440,448,440,432,440,448,424,448,448,448, \
+ 448,448,448,432,424,432,432,432,456,432,432,432,432,432,432,432, \
+ 440,432,440,448,448,448,448,448,448,448,448,448,456,448,456,448, \
+ 456,448,456,464,456,464,456,464,464,464,464,464,472,464,464,464, \
+ 464,472,480,464,472,464,480,480,472,480,480,480,480,480,480,480, \
+ 480,480,480,480,488,480,488,464,488,487,496,496,504,496,488,496, \
+ 496,472,504,496,504,512,512,512,512,512,504,512,512,512,512,512, \
+ 512,512,512,512,512,512,512,496,520,488,496,496,496,496,496,496, \
+ 503,504,536,504,496,504,511,504,512,504,512,512,512,512,512,512, \
+ 544,512,512,512,544,528,552,520,528,520,528,520,528,528,528,520, \
+ 528,528,528,536,528,528,528,544,544,536,512,544,544,528,544,544, \
+ 544,552,512,552,512,520,512,520,519,520,528,528,528,528,560,520, \
+ 528,528,528,520,528,536,528,536,528,544,528,536,544,536,544,544, \
+ 544,552,544,552,544,544,544,544,544,544,544,544,560,552,551,560, \
+ 560,552,560,552,560,560,560,560,560,568,576,568,576,568,560,568, \
+ 576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,584, \
+ 576,592,592,584,592,584,592,592,592,544,592,592,592,544,608,600, \
+ 616,600,608,608,616,600,616,552,616,616,616,616,608,616,648,616, \
+ 616,616,648,632,648,632,576,664,631,632,648,632,648,632,648,648, \
+ 647,648,647,648,647,648,647,648,648,648,648,648,647,648,648,648, \
+ 648,648,648,648,648,664,648,648,648,664,616,664,663,664,663,664, \
+ 608,664,616,664,616,664,616,664,608,632,616,616,680,632,616,632 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, \
+ 16,17,18,17,18,17,13,16,16,16,19,18,19,19,20,20, \
+ 23,24,21,24,25,24,27,25,24,26,25,28,27,29,31,31, \
+ 29,31,32,32,32,33,29,34,33,33,34,37,32,36,37,37, \
+ 39,36,36,38,41,41,41,42,42,43,43,45,44,44,44,43, \
+ 45,45,48,44,47,48,47,52,47,49,51,52,49,52,53,49, \
+ 55,57,53,56,57,57,57,59,58,62,56,59,56,63,63,60, \
+ 58,65,64,66,64,60,67,67,62,68,66,66,67,69,65,71, \
+ 70,73,69,68,73,72,73,69,75,75,71,74,75,73,73,78, \
+ 76,75,77,81,80,80,77,77,81,84,85,84,84,80,81,86, \
+ 83,85,85,86,88,88,85,91,87,89,89,93,91,89,89,95, \
+ 96,95,91,91,92,92,96,93,99,99,96,96,97,96,101,100, \
+ 98,107,100,106,104,101,101,101,105,107,109,103,110,107,105,108, \
+ 106,109,111,112,114,109,116,109,116,114,113,117,116,114,115,113, \
+ 114,116,120,120,121,118,117,122,125,118,120,119,125,120,121,121, \
+ 125,125,123,124,125,125,125,125,127,126,127,128,128,131,129,129, \
+ 130,130,131,131,132,132,133,133,134,134,135,144,136,143,145,148, \
+ 143,144,152,152,152,148,149,152,152,152,151,149,160,152,152,152, \
+ 151,151,152,152,168,152,152,150,152,151,152,159,152,160,160,153, \
+ 167,176,159,160,168,160,159,168,167,167,167,168,175,160,178,166, \
+ 165,168,176,168,167,176,168,176,179,168,184,184,180,176,184,169, \
+ 175,175,182,174,175,176,183,184,184,176,192,178,184,183,182,183, \
+ 183,183,184,191,183,186,184,192,184,184,191,199,199,200,200,192, \
+ 192,192,200,208,199,197,200,202,207,208,208,198,210,208,199,209, \
+ 215,208,208,216,208,216,204,215,200,208,211,200,206,207,216,208, \
+ 202,207,208,208,216,208,208,207,214,209,216,216,212,208,218,215, \
+ 214,216,216,211,216,215,216,216,216,224,216,224,218,216,224,218, \
+ 230,224,224,238,222,232,224,226,236,222,228,232,232,238,240,240, \
+ 226,240,230,239,240,239,240,239,240,232,240,231,232,240,233,240, \
+ 240,239,238,240,240,240,246,258,240,238,239,239,240,255,241,258, \
+ 242,254,258,252,253,257,257,252,258,258,252,258,248,254,252,264, \
+ 263,257,262,266,256,266,253,258,264,258,258,270,266,262,258,257, \
+ 258,258,272,259,264,265,284,304,263,266,264,288,304,304,270,282, \
+ 300,304,288,288,288,294,288,292,302,300,286,304,302,288,300,304, \
+ 302,298,304,288,304,304,304,300,288,304,316,304,300,314,288,300, \
+ 312,302,304,304,306,302,303,300,304,304,311,304,316,300,336,318, \
+ 304,318,304,312,316,300,304,308,304,312,320,318,320,336,304,316, \
+ 299,336,318,318,318,304,340,336,320,304,304,336,324,348,305,316, \
+ 334,316,352,336,336,336,318,336,340,336,354,318,320,352,352,352, \
+ 318,336,328,318,352,336,358,330,342,360,366,366,350,334,348,336, \
+ 354,350,348,340,336,352,352,352,336,352,332,350,366,336,351,366, \
+ 352,366,352,352,352,336,336,348,353,336,351,366,366,360,366,346, \
+ 350,362,366,352,366,366,352,364,353,356,348,366,368,352,365,348, \
+ 353,366,350,366,352,352,364,372,354,352,372,352,362,352,368,365, \
+ 354,354,366,372,366,368,364,370,368,368,366,372,368,368,366,366, \
+ 368,405,374,364,366,384,372,366,366,368,367,390,368,400,372,400, \
+ 371,392,413,399,380,400,404,417,415,386,384,400,392,400,405,407, \
+ 399,421,408,400,406,408,415,421,416,400,419,415,406,416,412,408, \
+ 422,408,416,431,416,421,404,416,400,416,417,431,415,392,424,424, \
+ 415,432,421,416,432,432,408,399,415,416,400,424,422,408,420,431, \
+ 423,432,417,416,415,432,413,414,432,424,424,416,416,432,415,409, \
+ 416,424,416,430,415,431,423,432,423,424,424,420,416,431,417,436, \
+ 420,430,424,430,428,420,421,424,428,431,464,430,424,439,428,448, \
+ 432,431,432,433,436,440,464,469,468,453,431,440,448,440,449,463, \
+ 464,439,440,468,480,447,448,463,468,440,472,470,480,464,470,480, \
+ 464,471,471,464,479,460,464,461,488,478,468,480,479,464,488,463, \
+ 450,478,464,469,464,471,488,465,478,488,477,480,481,472,480,488, \
+ 496,468,480,479,488,480,488,469,463,488,480,480,464,477,480,481, \
+ 504,472,480,516,504,504,504,478,480,479,488,516,480,483,485,516, \
+ 488,488,488,516,504,488,481,484,480,516,512,528,504,480,532,503, \
+ 488,504,516,536,488,528,516,488,532,516,528,501,512,504,516,504, \
+ 528,492,520,516,516,504,525,496,516,520,516,512,520,532,528,516, \
+ 516,524,512,508,520,528,516,532,532,516,533,516,528,504,528,516, \
+ 532,576,532,515,516,600,528,517,516,600,600,532,516,600,600,524 \
+
+#define MPFR_MUL_THRESHOLD 16 /* limbs */
+#define MPFR_SQR_THRESHOLD 31 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 469 /* bits */
+#define MPFR_EXP_THRESHOLD 5484 /* bits */
+#define MPFR_SINCOS_THRESHOLD 23806 /* bits */
+#define MPFR_AI_THRESHOLD1 -24060 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 2314
+#define MPFR_AI_THRESHOLD3 40340
+/* Tuneup completed successfully, took 8148 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/asin.c b/Build/source/libs/mpfr/mpfr-src/src/asin.c
new file mode 100644
index 00000000000..6aae6812dec
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/asin.c
@@ -0,0 +1,125 @@
+/* mpfr_asin -- arc-sinus of a floating-point number
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_asin (mpfr_ptr asin, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t xp;
+ int compared, inexact;
+ mpfr_prec_t prec;
+ mpfr_exp_t xp_exp;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("asin[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (asin), mpfr_log_prec, asin,
+ inexact));
+
+ /* Special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x) || MPFR_IS_INF (x))
+ {
+ MPFR_SET_NAN (asin);
+ MPFR_RET_NAN;
+ }
+ else /* x = 0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (asin);
+ MPFR_SET_SAME_SIGN (asin, x);
+ MPFR_RET (0); /* exact result */
+ }
+ }
+
+ /* asin(x) = x + x^3/6 + ... so the error is < 2^(3*EXP(x)-2) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (asin, x, -2 * MPFR_GET_EXP (x), 2, 1,
+ rnd_mode, {});
+
+ /* Set x_p=|x| (x is a normal number) */
+ mpfr_init2 (xp, MPFR_PREC (x));
+ inexact = mpfr_abs (xp, x, MPFR_RNDN);
+ MPFR_ASSERTD (inexact == 0);
+
+ compared = mpfr_cmp_ui (xp, 1);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (MPFR_UNLIKELY (compared >= 0))
+ {
+ mpfr_clear (xp);
+ if (compared > 0) /* asin(x) = NaN for |x| > 1 */
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ MPFR_SET_NAN (asin);
+ MPFR_RET_NAN;
+ }
+ else /* x = 1 or x = -1 */
+ {
+ if (MPFR_IS_POS (x)) /* asin(+1) = Pi/2 */
+ inexact = mpfr_const_pi (asin, rnd_mode);
+ else /* asin(-1) = -Pi/2 */
+ {
+ inexact = -mpfr_const_pi (asin, MPFR_INVERT_RND(rnd_mode));
+ MPFR_CHANGE_SIGN (asin);
+ }
+ mpfr_div_2ui (asin, asin, 1, rnd_mode);
+ }
+ }
+ else
+ {
+ /* Compute exponent of 1 - ABS(x) */
+ mpfr_ui_sub (xp, 1, xp, MPFR_RNDD);
+ MPFR_ASSERTD (MPFR_GET_EXP (xp) <= 0);
+ MPFR_ASSERTD (MPFR_GET_EXP (x) <= 0);
+ xp_exp = 2 - MPFR_GET_EXP (xp);
+
+ /* Set up initial prec */
+ prec = MPFR_PREC (asin) + 10 + xp_exp;
+
+ /* use asin(x) = atan(x/sqrt(1-x^2)) */
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ mpfr_set_prec (xp, prec);
+ mpfr_sqr (xp, x, MPFR_RNDN);
+ mpfr_ui_sub (xp, 1, xp, MPFR_RNDN);
+ mpfr_sqrt (xp, xp, MPFR_RNDN);
+ mpfr_div (xp, x, xp, MPFR_RNDN);
+ mpfr_atan (xp, xp, MPFR_RNDN);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (xp, prec - xp_exp,
+ MPFR_PREC (asin), rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (asin, xp, rnd_mode);
+
+ mpfr_clear (xp);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (asin, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/asinh.c b/Build/source/libs/mpfr/mpfr-src/src/asinh.c
new file mode 100644
index 00000000000..276aa27d719
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/asinh.c
@@ -0,0 +1,119 @@
+/* mpfr_asinh -- inverse hyperbolic sine
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of asinh is done by *
+ * asinh = ln(x + sqrt(x^2 + 1)) */
+
+int
+mpfr_asinh (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ int signx, neg;
+ mpfr_prec_t Ny, Nt;
+ mpfr_t t; /* auxiliary variables */
+ mpfr_exp_t err;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ else /* x is necessarily 0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y); /* asinh(0) = 0 */
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ }
+
+ /* asinh(x) = x - x^3/6 + ... so the error is < 2^(3*EXP(x)-2) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -2 * MPFR_GET_EXP (x), 2, 0,
+ rnd_mode, {});
+
+ Ny = MPFR_PREC (y); /* Precision of output variable */
+
+ signx = MPFR_SIGN (x);
+ neg = MPFR_IS_NEG (x);
+
+ /* General case */
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + 4 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* initialize intermediary variables */
+ mpfr_init2 (t, Nt);
+
+ /* First computation of asinh */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute asinh */
+ mpfr_mul (t, x, x, MPFR_RNDD); /* x^2 */
+ mpfr_add_ui (t, t, 1, MPFR_RNDD); /* x^2+1 */
+ mpfr_sqrt (t, t, MPFR_RNDN); /* sqrt(x^2+1) */
+ (neg ? mpfr_sub : mpfr_add) (t, t, x, MPFR_RNDN); /* sqrt(x^2+1)+x */
+ mpfr_log (t, t, MPFR_RNDN); /* ln(sqrt(x^2+1)+x)*/
+
+ if (MPFR_LIKELY (MPFR_IS_PURE_FP (t)))
+ {
+ /* error estimate -- see algorithms.tex */
+ err = Nt - (MAX (4 - MPFR_GET_EXP (t), 0) + 1);
+ if (MPFR_LIKELY (MPFR_IS_ZERO (t)
+ || MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ break;
+ }
+
+ /* actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set4 (y, t, rnd_mode, signx);
+
+ mpfr_clear (t);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/atan.c b/Build/source/libs/mpfr/mpfr-src/src/atan.c
new file mode 100644
index 00000000000..5fb1c8a4673
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/atan.c
@@ -0,0 +1,437 @@
+/* mpfr_atan -- arc-tangent of a floating-point number
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* If x = p/2^r, put in y an approximation of atan(x)/x using 2^m terms
+ for the series expansion, with an error of at most 1 ulp.
+ Assumes |x| < 1.
+
+ If X=x^2, we want 1 - X/3 + X^2/5 - ... + (-1)^k*X^k/(2k+1) + ...
+
+ Assume p is non-zero.
+
+ When we sum terms up to x^k/(2k+1), the denominator Q[0] is
+ 3*5*7*...*(2k+1) ~ (2k/e)^k.
+*/
+static void
+mpfr_atan_aux (mpfr_ptr y, mpz_ptr p, long r, int m, mpz_t *tab)
+{
+ mpz_t *S, *Q, *ptoj;
+ unsigned long n, i, k, j, l;
+ mpfr_exp_t diff, expo;
+ int im, done;
+ mpfr_prec_t mult, *accu, *log2_nb_terms;
+ mpfr_prec_t precy = MPFR_PREC(y);
+
+ MPFR_ASSERTD(mpz_cmp_ui (p, 0) != 0);
+
+ accu = (mpfr_prec_t*) (*__gmp_allocate_func) ((2 * m + 2) * sizeof (mpfr_prec_t));
+ log2_nb_terms = accu + m + 1;
+
+ /* Set Tables */
+ S = tab; /* S */
+ ptoj = S + 1*(m+1); /* p^2^j Precomputed table */
+ Q = S + 2*(m+1); /* Product of Odd integer table */
+
+ /* From p to p^2, and r to 2r */
+ mpz_mul (p, p, p);
+ MPFR_ASSERTD (2 * r > r);
+ r = 2 * r;
+
+ /* Normalize p */
+ n = mpz_scan1 (p, 0);
+ mpz_tdiv_q_2exp (p, p, n); /* exact */
+ MPFR_ASSERTD (r > n);
+ r -= n;
+ /* since |p/2^r| < 1, and p is a non-zero integer, necessarily r > 0 */
+
+ MPFR_ASSERTD (mpz_sgn (p) > 0);
+ MPFR_ASSERTD (m > 0);
+
+ /* check if p=1 (special case) */
+ l = 0;
+ /*
+ We compute by binary splitting, with X = x^2 = p/2^r:
+ P(a,b) = p if a+1=b, P(a,c)*P(c,b) otherwise
+ Q(a,b) = (2a+1)*2^r if a+1=b [except Q(0,1)=1], Q(a,c)*Q(c,b) otherwise
+ S(a,b) = p*(2a+1) if a+1=b, Q(c,b)*S(a,c)+Q(a,c)*P(a,c)*S(c,b) otherwise
+ Then atan(x)/x ~ S(0,i)/Q(0,i) for i so that (p/2^r)^i/i is small enough.
+ The factor 2^(r*(b-a)) in Q(a,b) is implicit, thus we have to take it
+ into account when we compute with Q.
+ */
+ accu[0] = 0; /* accu[k] = Mult[0] + ... + Mult[k], where Mult[j] is the
+ number of bits of the corresponding term S[j]/Q[j] */
+ if (mpz_cmp_ui (p, 1) != 0)
+ {
+ /* p <> 1: precompute ptoj table */
+ mpz_set (ptoj[0], p);
+ for (im = 1 ; im <= m ; im ++)
+ mpz_mul (ptoj[im], ptoj[im - 1], ptoj[im - 1]);
+ /* main loop */
+ n = 1UL << m;
+ /* the ith term being X^i/(2i+1) with X=p/2^r, we can stop when
+ p^i/2^(r*i) < 2^(-precy), i.e. r*i > precy + log2(p^i) */
+ for (i = k = done = 0; (i < n) && (done == 0); i += 2, k ++)
+ {
+ /* initialize both S[k],Q[k] and S[k+1],Q[k+1] */
+ mpz_set_ui (Q[k+1], 2 * i + 3); /* Q(i+1,i+2) */
+ mpz_mul_ui (S[k+1], p, 2 * i + 1); /* S(i+1,i+2) */
+ mpz_mul_2exp (S[k], Q[k+1], r);
+ mpz_sub (S[k], S[k], S[k+1]); /* S(i,i+2) */
+ mpz_mul_ui (Q[k], Q[k+1], 2 * i + 1); /* Q(i,i+2) */
+ log2_nb_terms[k] = 1; /* S[k]/Q[k] corresponds to 2 terms */
+ for (j = (i + 2) >> 1, l = 1; (j & 1) == 0; l ++, j >>= 1, k --)
+ {
+ /* invariant: S[k-1]/Q[k-1] and S[k]/Q[k] correspond
+ to 2^l terms each. We combine them into S[k-1]/Q[k-1] */
+ MPFR_ASSERTD (k > 0);
+ mpz_mul (S[k], S[k], Q[k-1]);
+ mpz_mul (S[k], S[k], ptoj[l]);
+ mpz_mul (S[k-1], S[k-1], Q[k]);
+ mpz_mul_2exp (S[k-1], S[k-1], r << l);
+ mpz_add (S[k-1], S[k-1], S[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ log2_nb_terms[k-1] = l + 1;
+ /* now S[k-1]/Q[k-1] corresponds to 2^(l+1) terms */
+ MPFR_MPZ_SIZEINBASE2(mult, ptoj[l+1]);
+ /* FIXME: precompute bits(ptoj[l+1]) outside the loop? */
+ mult = (r << (l + 1)) - mult - 1;
+ accu[k-1] = (k == 1) ? mult : accu[k-2] + mult;
+ if (accu[k-1] > precy)
+ done = 1;
+ }
+ }
+ }
+ else /* special case p=1: the ith term being X^i/(2i+1) with X=1/2^r,
+ we can stop when r*i > precy i.e. i > precy/r */
+ {
+ n = 1UL << m;
+ for (i = k = 0; (i < n) && (i <= precy / r); i += 2, k ++)
+ {
+ mpz_set_ui (Q[k + 1], 2 * i + 3);
+ mpz_mul_2exp (S[k], Q[k+1], r);
+ mpz_sub_ui (S[k], S[k], 1 + 2 * i);
+ mpz_mul_ui (Q[k], Q[k + 1], 1 + 2 * i);
+ log2_nb_terms[k] = 1; /* S[k]/Q[k] corresponds to 2 terms */
+ for (j = (i + 2) >> 1, l = 1; (j & 1) == 0; l++, j >>= 1, k --)
+ {
+ MPFR_ASSERTD (k > 0);
+ mpz_mul (S[k], S[k], Q[k-1]);
+ mpz_mul (S[k-1], S[k-1], Q[k]);
+ mpz_mul_2exp (S[k-1], S[k-1], r << l);
+ mpz_add (S[k-1], S[k-1], S[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ log2_nb_terms[k-1] = l + 1;
+ }
+ }
+ }
+
+ /* we need to combine S[0]/Q[0]...S[k-1]/Q[k-1] */
+ l = 0; /* number of terms accumulated in S[k]/Q[k] */
+ while (k > 1)
+ {
+ k --;
+ /* combine S[k-1]/Q[k-1] and S[k]/Q[k] */
+ j = log2_nb_terms[k-1];
+ mpz_mul (S[k], S[k], Q[k-1]);
+ if (mpz_cmp_ui (p, 1) != 0)
+ mpz_mul (S[k], S[k], ptoj[j]);
+ mpz_mul (S[k-1], S[k-1], Q[k]);
+ l += 1 << log2_nb_terms[k];
+ mpz_mul_2exp (S[k-1], S[k-1], r * l);
+ mpz_add (S[k-1], S[k-1], S[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ }
+ (*__gmp_free_func) (accu, (2 * m + 2) * sizeof (mpfr_prec_t));
+
+ MPFR_MPZ_SIZEINBASE2 (diff, S[0]);
+ diff -= 2 * precy;
+ expo = diff;
+ if (diff >= 0)
+ mpz_tdiv_q_2exp (S[0], S[0], diff);
+ else
+ mpz_mul_2exp (S[0], S[0], -diff);
+
+ MPFR_MPZ_SIZEINBASE2 (diff, Q[0]);
+ diff -= precy;
+ expo -= diff;
+ if (diff >= 0)
+ mpz_tdiv_q_2exp (Q[0], Q[0], diff);
+ else
+ mpz_mul_2exp (Q[0], Q[0], -diff);
+
+ mpz_tdiv_q (S[0], S[0], Q[0]);
+ mpfr_set_z (y, S[0], MPFR_RNDD);
+ MPFR_SET_EXP (y, MPFR_EXP(y) + expo - r * (i - 1));
+}
+
+int
+mpfr_atan (mpfr_ptr atan, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t xp, arctgt, sk, tmp, tmp2;
+ mpz_t ukz;
+ mpz_t *tabz;
+ mpfr_exp_t exptol;
+ mpfr_prec_t prec, realprec, est_lost, lost;
+ unsigned long twopoweri, log2p, red;
+ int comparaison, inexact;
+ int i, n0, oldn0;
+ MPFR_GROUP_DECL (group);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("atan[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (atan), mpfr_log_prec, atan, inexact));
+
+ /* Singular cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (atan);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ MPFR_SAVE_EXPO_MARK (expo);
+ if (MPFR_IS_POS (x)) /* arctan(+inf) = Pi/2 */
+ inexact = mpfr_const_pi (atan, rnd_mode);
+ else /* arctan(-inf) = -Pi/2 */
+ {
+ inexact = -mpfr_const_pi (atan,
+ MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (atan);
+ }
+ mpfr_div_2ui (atan, atan, 1, rnd_mode); /* exact (no exceptions) */
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (atan, inexact, rnd_mode);
+ }
+ else /* x is necessarily 0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (atan);
+ MPFR_SET_SAME_SIGN (atan, x);
+ MPFR_RET (0);
+ }
+ }
+
+ /* atan(x) = x - x^3/3 + x^5/5...
+ so the error is < 2^(3*EXP(x)-1)
+ so `EXP(x)-(3*EXP(x)-1)` = -2*EXP(x)+1 */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (atan, x, -2 * MPFR_GET_EXP (x), 1, 0,
+ rnd_mode, {});
+
+ /* Set x_p=|x| */
+ MPFR_TMP_INIT_ABS (xp, x);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Other simple case arctan(-+1)=-+pi/4 */
+ comparaison = mpfr_cmp_ui (xp, 1);
+ if (MPFR_UNLIKELY (comparaison == 0))
+ {
+ int neg = MPFR_IS_NEG (x);
+ inexact = mpfr_const_pi (atan, MPFR_IS_POS (x) ? rnd_mode
+ : MPFR_INVERT_RND (rnd_mode));
+ if (neg)
+ {
+ inexact = -inexact;
+ MPFR_CHANGE_SIGN (atan);
+ }
+ mpfr_div_2ui (atan, atan, 2, rnd_mode); /* exact (no exceptions) */
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (atan, inexact, rnd_mode);
+ }
+
+ realprec = MPFR_PREC (atan) + MPFR_INT_CEIL_LOG2 (MPFR_PREC (atan)) + 4;
+ prec = realprec + GMP_NUMB_BITS;
+
+ /* Initialisation */
+ mpz_init (ukz);
+ MPFR_GROUP_INIT_4 (group, prec, sk, tmp, tmp2, arctgt);
+ oldn0 = 0;
+ tabz = (mpz_t *) 0;
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ /* First, if |x| < 1, we need to have more prec to be able to round (sup)
+ n0 = ceil(log(prec_requested + 2 + 1+ln(2.4)/ln(2))/log(2)) */
+ mpfr_prec_t sup;
+ sup = MPFR_GET_EXP (xp) < 0 ? 2 - MPFR_GET_EXP (xp) : 1; /* sup >= 1 */
+
+ n0 = MPFR_INT_CEIL_LOG2 ((realprec + sup) + 3);
+ /* since realprec >= 4, n0 >= ceil(log2(8)) >= 3, thus 3*n0 > 2 */
+ prec = (realprec + sup) + 1 + MPFR_INT_CEIL_LOG2 (3*n0-2);
+
+ /* the number of lost bits due to argument reduction is
+ 9 - 2 * EXP(sk), which we estimate by 9 + 2*ceil(log2(p))
+ since we manage that sk < 1/p */
+ if (MPFR_PREC (atan) > 100)
+ {
+ log2p = MPFR_INT_CEIL_LOG2(prec) / 2 - 3;
+ est_lost = 9 + 2 * log2p;
+ prec += est_lost;
+ }
+ else
+ log2p = est_lost = 0; /* don't reduce the argument */
+
+ /* Initialisation */
+ MPFR_GROUP_REPREC_4 (group, prec, sk, tmp, tmp2, arctgt);
+ if (MPFR_LIKELY (oldn0 == 0))
+ {
+ oldn0 = 3 * (n0 + 1);
+ tabz = (mpz_t *) (*__gmp_allocate_func) (oldn0 * sizeof (mpz_t));
+ for (i = 0; i < oldn0; i++)
+ mpz_init (tabz[i]);
+ }
+ else if (MPFR_UNLIKELY (oldn0 < 3 * (n0 + 1)))
+ {
+ tabz = (mpz_t *) (*__gmp_reallocate_func)
+ (tabz, oldn0 * sizeof (mpz_t), 3 * (n0 + 1)*sizeof (mpz_t));
+ for (i = oldn0; i < 3 * (n0 + 1); i++)
+ mpz_init (tabz[i]);
+ oldn0 = 3 * (n0 + 1);
+ }
+
+ /* The mpfr_ui_div below mustn't underflow. This is guaranteed by
+ MPFR_SAVE_EXPO_MARK, but let's check that for maintainability. */
+ MPFR_ASSERTD (__gmpfr_emax <= 1 - __gmpfr_emin);
+
+ if (comparaison > 0) /* use atan(xp) = Pi/2 - atan(1/xp) */
+ mpfr_ui_div (sk, 1, xp, MPFR_RNDN);
+ else
+ mpfr_set (sk, xp, MPFR_RNDN);
+
+ /* now 0 < sk <= 1 */
+
+ /* Argument reduction: atan(x) = 2 atan((sqrt(1+x^2)-1)/x).
+ We want |sk| < k/sqrt(p) where p is the target precision. */
+ lost = 0;
+ for (red = 0; MPFR_GET_EXP(sk) > - (mpfr_exp_t) log2p; red ++)
+ {
+ lost = 9 - 2 * MPFR_EXP(sk);
+ mpfr_mul (tmp, sk, sk, MPFR_RNDN);
+ mpfr_add_ui (tmp, tmp, 1, MPFR_RNDN);
+ mpfr_sqrt (tmp, tmp, MPFR_RNDN);
+ mpfr_sub_ui (tmp, tmp, 1, MPFR_RNDN);
+ if (red == 0 && comparaison > 0)
+ /* use xp = 1/sk */
+ mpfr_mul (sk, tmp, xp, MPFR_RNDN);
+ else
+ mpfr_div (sk, tmp, sk, MPFR_RNDN);
+ }
+
+ /* we started from x0 = 1/|x| if |x| > 1, and |x| otherwise, thus
+ we had x0 = min(|x|, 1/|x|) <= 1, and applied 'red' times the
+ argument reduction x -> (sqrt(1+x^2)-1)/x, which keeps 0 < x < 1,
+ thus 0 < sk <= 1, and sk=1 can occur only if red=0 */
+
+ /* If sk=1, then if |x| < 1, we have 1 - 2^(-prec-1) <= |x| < 1,
+ or if |x| > 1, we have 1 - 2^(-prec-1) <= 1/|x| < 1, thus in all
+ cases ||x| - 1| <= 2^(-prec), from which it follows
+ |atan|x| - Pi/4| <= 2^(-prec), given the Taylor expansion
+ atan(1+x) = Pi/4 + x/2 - x^2/4 + ...
+ Since Pi/4 = 0.785..., the error is at most one ulp.
+ */
+ if (MPFR_UNLIKELY(mpfr_cmp_ui (sk, 1) == 0))
+ {
+ mpfr_const_pi (arctgt, MPFR_RNDN); /* 1/2 ulp extra error */
+ mpfr_div_2ui (arctgt, arctgt, 2, MPFR_RNDN); /* exact */
+ realprec = prec - 2;
+ goto can_round;
+ }
+
+ /* Assignation */
+ MPFR_SET_ZERO (arctgt);
+ twopoweri = 1 << 0;
+ MPFR_ASSERTD (n0 >= 4);
+ for (i = 0 ; i < n0; i++)
+ {
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO (sk)))
+ break;
+ /* Calculation of trunc(tmp) --> mpz */
+ mpfr_mul_2ui (tmp, sk, twopoweri, MPFR_RNDN);
+ mpfr_trunc (tmp, tmp);
+ if (!MPFR_IS_ZERO (tmp))
+ {
+ /* tmp = ukz*2^exptol */
+ exptol = mpfr_get_z_2exp (ukz, tmp);
+ /* since the s_k are decreasing (see algorithms.tex),
+ and s_0 = min(|x|, 1/|x|) < 1, we have sk < 1,
+ thus exptol < 0 */
+ MPFR_ASSERTD (exptol < 0);
+ mpz_tdiv_q_2exp (ukz, ukz, (unsigned long int) (-exptol));
+ /* since tmp is a non-zero integer, and tmp = ukzold*2^exptol,
+ we now have ukz = tmp, thus ukz is non-zero */
+ /* Calculation of arctan(Ak) */
+ mpfr_set_z (tmp, ukz, MPFR_RNDN);
+ mpfr_div_2ui (tmp, tmp, twopoweri, MPFR_RNDN);
+ mpfr_atan_aux (tmp2, ukz, twopoweri, n0 - i, tabz);
+ mpfr_mul (tmp2, tmp2, tmp, MPFR_RNDN);
+ /* Addition */
+ mpfr_add (arctgt, arctgt, tmp2, MPFR_RNDN);
+ /* Next iteration */
+ mpfr_sub (tmp2, sk, tmp, MPFR_RNDN);
+ mpfr_mul (sk, sk, tmp, MPFR_RNDN);
+ mpfr_add_ui (sk, sk, 1, MPFR_RNDN);
+ mpfr_div (sk, tmp2, sk, MPFR_RNDN);
+ }
+ twopoweri <<= 1;
+ }
+ /* Add last step (Arctan(sk) ~= sk */
+ mpfr_add (arctgt, arctgt, sk, MPFR_RNDN);
+
+ /* argument reduction */
+ mpfr_mul_2exp (arctgt, arctgt, red, MPFR_RNDN);
+
+ if (comparaison > 0)
+ { /* atan(x) = Pi/2-atan(1/x) for x > 0 */
+ mpfr_const_pi (tmp, MPFR_RNDN);
+ mpfr_div_2ui (tmp, tmp, 1, MPFR_RNDN);
+ mpfr_sub (arctgt, tmp, arctgt, MPFR_RNDN);
+ }
+ MPFR_SET_POS (arctgt);
+
+ can_round:
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (arctgt, realprec + est_lost - lost,
+ MPFR_PREC (atan), rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, realprec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set4 (atan, arctgt, rnd_mode, MPFR_SIGN (x));
+
+ for (i = 0 ; i < oldn0 ; i++)
+ mpz_clear (tabz[i]);
+ mpz_clear (ukz);
+ (*__gmp_free_func) (tabz, oldn0 * sizeof (mpz_t));
+ MPFR_GROUP_CLEAR (group);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (atan, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/atan2.c b/Build/source/libs/mpfr/mpfr-src/src/atan2.c
new file mode 100644
index 00000000000..9b7b4c3315a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/atan2.c
@@ -0,0 +1,281 @@
+/* mpfr_atan2 -- arc-tan 2 of a floating-point number
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+static int
+pi_div_2ui (mpfr_ptr dest, int i, int neg, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ if (neg) /* -PI/2^i */
+ {
+ inexact = - mpfr_const_pi (dest, MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (dest);
+ }
+ else /* PI/2^i */
+ {
+ inexact = mpfr_const_pi (dest, rnd_mode);
+ }
+ mpfr_div_2ui (dest, dest, i, rnd_mode); /* exact */
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (dest, inexact, rnd_mode);
+}
+
+int
+mpfr_atan2 (mpfr_ptr dest, mpfr_srcptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t tmp, pi;
+ int inexact;
+ mpfr_prec_t prec;
+ mpfr_exp_t e;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("y[%Pu]=%.*Rg x[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y,
+ mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("atan[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (dest), mpfr_log_prec, dest, inexact));
+
+ /* Special cases */
+ if (MPFR_ARE_SINGULAR (x, y))
+ {
+ /* atan2(0, 0) does not raise the "invalid" floating-point
+ exception, nor does atan2(y, 0) raise the "divide-by-zero"
+ floating-point exception.
+ -- atan2(±0, -0) returns ±pi.313)
+ -- atan2(±0, +0) returns ±0.
+ -- atan2(±0, x) returns ±pi, for x < 0.
+ -- atan2(±0, x) returns ±0, for x > 0.
+ -- atan2(y, ±0) returns -pi/2 for y < 0.
+ -- atan2(y, ±0) returns pi/2 for y > 0.
+ -- atan2(±oo, -oo) returns ±3pi/4.
+ -- atan2(±oo, +oo) returns ±pi/4.
+ -- atan2(±oo, x) returns ±pi/2, for finite x.
+ -- atan2(±y, -oo) returns ±pi, for finite y > 0.
+ -- atan2(±y, +oo) returns ±0, for finite y > 0.
+ */
+ if (MPFR_IS_NAN (x) || MPFR_IS_NAN (y))
+ {
+ MPFR_SET_NAN (dest);
+ MPFR_RET_NAN;
+ }
+ if (MPFR_IS_ZERO (y))
+ {
+ if (MPFR_IS_NEG (x)) /* +/- PI */
+ {
+ set_pi:
+ if (MPFR_IS_NEG (y))
+ {
+ inexact = mpfr_const_pi (dest, MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (dest);
+ return -inexact;
+ }
+ else
+ return mpfr_const_pi (dest, rnd_mode);
+ }
+ else /* +/- 0 */
+ {
+ set_zero:
+ MPFR_SET_ZERO (dest);
+ MPFR_SET_SAME_SIGN (dest, y);
+ return 0;
+ }
+ }
+ if (MPFR_IS_ZERO (x))
+ {
+ return pi_div_2ui (dest, 1, MPFR_IS_NEG (y), rnd_mode);
+ }
+ if (MPFR_IS_INF (y))
+ {
+ if (!MPFR_IS_INF (x)) /* +/- PI/2 */
+ return pi_div_2ui (dest, 1, MPFR_IS_NEG (y), rnd_mode);
+ else if (MPFR_IS_POS (x)) /* +/- PI/4 */
+ return pi_div_2ui (dest, 2, MPFR_IS_NEG (y), rnd_mode);
+ else /* +/- 3*PI/4: Ugly since we have to round properly */
+ {
+ mpfr_t tmp2;
+ MPFR_ZIV_DECL (loop2);
+ mpfr_prec_t prec2 = MPFR_PREC (dest) + 10;
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpfr_init2 (tmp2, prec2);
+ MPFR_ZIV_INIT (loop2, prec2);
+ for (;;)
+ {
+ mpfr_const_pi (tmp2, MPFR_RNDN);
+ mpfr_mul_ui (tmp2, tmp2, 3, MPFR_RNDN); /* Error <= 2 */
+ mpfr_div_2ui (tmp2, tmp2, 2, MPFR_RNDN);
+ if (mpfr_round_p (MPFR_MANT (tmp2), MPFR_LIMB_SIZE (tmp2),
+ MPFR_PREC (tmp2) - 2,
+ MPFR_PREC (dest) + (rnd_mode == MPFR_RNDN)))
+ break;
+ MPFR_ZIV_NEXT (loop2, prec2);
+ mpfr_set_prec (tmp2, prec2);
+ }
+ MPFR_ZIV_FREE (loop2);
+ if (MPFR_IS_NEG (y))
+ MPFR_CHANGE_SIGN (tmp2);
+ inexact = mpfr_set (dest, tmp2, rnd_mode);
+ mpfr_clear (tmp2);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (dest, inexact, rnd_mode);
+ }
+ }
+ MPFR_ASSERTD (MPFR_IS_INF (x));
+ if (MPFR_IS_NEG (x))
+ goto set_pi;
+ else
+ goto set_zero;
+ }
+
+ /* When x is a power of two, we call directly atan(y/x) since y/x is
+ exact. */
+ if (MPFR_UNLIKELY (MPFR_IS_POWER_OF_2 (x)))
+ {
+ int r;
+ mpfr_t yoverx;
+ unsigned int saved_flags = __gmpfr_flags;
+
+ mpfr_init2 (yoverx, MPFR_PREC (y));
+ if (MPFR_LIKELY (mpfr_div_2si (yoverx, y, MPFR_GET_EXP (x) - 1,
+ MPFR_RNDN) == 0))
+ {
+ /* Here the flags have not changed due to mpfr_div_2si. */
+ r = mpfr_atan (dest, yoverx, rnd_mode);
+ mpfr_clear (yoverx);
+ return r;
+ }
+ else
+ {
+ /* Division is inexact because of a small exponent range */
+ mpfr_clear (yoverx);
+ __gmpfr_flags = saved_flags;
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Set up initial prec */
+ prec = MPFR_PREC (dest) + 3 + MPFR_INT_CEIL_LOG2 (MPFR_PREC (dest));
+ mpfr_init2 (tmp, prec);
+
+ MPFR_ZIV_INIT (loop, prec);
+ if (MPFR_IS_POS (x))
+ /* use atan2(y,x) = atan(y/x) */
+ for (;;)
+ {
+ int div_inex;
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_BLOCK (flags, div_inex = mpfr_div (tmp, y, x, MPFR_RNDN));
+ if (div_inex == 0)
+ {
+ /* Result is exact. */
+ inexact = mpfr_atan (dest, tmp, rnd_mode);
+ goto end;
+ }
+
+ /* Error <= ulp (tmp) except in case of underflow or overflow. */
+
+ /* If the division underflowed, since |atan(z)/z| < 1, we have
+ an underflow. */
+ if (MPFR_UNDERFLOW (flags))
+ {
+ int sign;
+
+ /* In the case MPFR_RNDN with 2^(emin-2) < |y/x| < 2^(emin-1):
+ The smallest significand value S > 1 of |y/x| is:
+ * 1 / (1 - 2^(-px)) if py <= px,
+ * (1 - 2^(-px) + 2^(-py)) / (1 - 2^(-px)) if py >= px.
+ Therefore S - 1 > 2^(-pz), where pz = max(px,py). We have:
+ atan(|y/x|) > atan(z), where z = 2^(emin-2) * (1 + 2^(-pz)).
+ > z - z^3 / 3.
+ > 2^(emin-2) * (1 + 2^(-pz) - 2^(2 emin - 5))
+ Assuming pz <= -2 emin + 5, we can round away from zero
+ (this is what mpfr_underflow always does on MPFR_RNDN).
+ In the case MPFR_RNDN with |y/x| <= 2^(emin-2), we round
+ toward zero, as |atan(z)/z| < 1. */
+ MPFR_ASSERTN (MPFR_PREC_MAX <=
+ 2 * (mpfr_uexp_t) - MPFR_EMIN_MIN + 5);
+ if (rnd_mode == MPFR_RNDN && MPFR_IS_ZERO (tmp))
+ rnd_mode = MPFR_RNDZ;
+ sign = MPFR_SIGN (tmp);
+ mpfr_clear (tmp);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (dest, rnd_mode, sign);
+ }
+
+ mpfr_atan (tmp, tmp, MPFR_RNDN); /* Error <= 2*ulp (tmp) since
+ abs(D(arctan)) <= 1 */
+ /* TODO: check that the error bound is correct in case of overflow. */
+ /* FIXME: Error <= ulp(tmp) ? */
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (tmp, prec - 2, MPFR_PREC (dest),
+ rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (tmp, prec);
+ }
+ else /* x < 0 */
+ /* Use sign(y)*(PI - atan (|y/x|)) */
+ {
+ mpfr_init2 (pi, prec);
+ for (;;)
+ {
+ mpfr_div (tmp, y, x, MPFR_RNDN); /* Error <= ulp (tmp) */
+ /* If tmp is 0, we have |y/x| <= 2^(-emin-2), thus
+ atan|y/x| < 2^(-emin-2). */
+ MPFR_SET_POS (tmp); /* no error */
+ mpfr_atan (tmp, tmp, MPFR_RNDN); /* Error <= 2*ulp (tmp) since
+ abs(D(arctan)) <= 1 */
+ mpfr_const_pi (pi, MPFR_RNDN); /* Error <= ulp(pi) /2 */
+ e = MPFR_NOTZERO(tmp) ? MPFR_GET_EXP (tmp) : __gmpfr_emin - 1;
+ mpfr_sub (tmp, pi, tmp, MPFR_RNDN); /* see above */
+ if (MPFR_IS_NEG (y))
+ MPFR_CHANGE_SIGN (tmp);
+ /* Error(tmp) <= (1/2+2^(EXP(pi)-EXP(tmp)-1)+2^(e-EXP(tmp)+1))*ulp
+ <= 2^(MAX (MAX (EXP(PI)-EXP(tmp)-1, e-EXP(tmp)+1),
+ -1)+2)*ulp(tmp) */
+ e = MAX (MAX (MPFR_GET_EXP (pi)-MPFR_GET_EXP (tmp) - 1,
+ e - MPFR_GET_EXP (tmp) + 1), -1) + 2;
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (tmp, prec - e, MPFR_PREC (dest),
+ rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (tmp, prec);
+ mpfr_set_prec (pi, prec);
+ }
+ mpfr_clear (pi);
+ }
+ inexact = mpfr_set (dest, tmp, rnd_mode);
+
+ end:
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (tmp);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (dest, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/atanh.c b/Build/source/libs/mpfr/mpfr-src/src/atanh.c
new file mode 100644
index 00000000000..4c440bdae63
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/atanh.c
@@ -0,0 +1,130 @@
+/* mpfr_atanh -- Inverse Hyperbolic Tangente
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of atanh is done by
+ atanh= 1/2*ln(x+1)-1/2*ln(1-x) */
+
+int
+mpfr_atanh (mpfr_ptr y, mpfr_srcptr xt , mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t x, t, te;
+ mpfr_prec_t Nx, Ny, Nt;
+ mpfr_exp_t err;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (xt), mpfr_log_prec, xt, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ /* Special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (xt)))
+ {
+ /* atanh(NaN) = NaN, and atanh(+/-Inf) = NaN since tanh gives a result
+ between -1 and 1 */
+ if (MPFR_IS_NAN (xt) || MPFR_IS_INF (xt))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else /* necessarily xt is 0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (xt));
+ MPFR_SET_ZERO (y); /* atanh(0) = 0 */
+ MPFR_SET_SAME_SIGN (y,xt);
+ MPFR_RET (0);
+ }
+ }
+
+ /* atanh (x) = NaN as soon as |x| > 1, and arctanh(+/-1) = +/-Inf */
+ if (MPFR_UNLIKELY (MPFR_GET_EXP (xt) > 0))
+ {
+ if (MPFR_GET_EXP (xt) == 1 && mpfr_powerof2_raw (xt))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, xt);
+ mpfr_set_divby0 ();
+ MPFR_RET (0);
+ }
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+
+ /* atanh(x) = x + x^3/3 + ... so the error is < 2^(3*EXP(x)-1) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, xt, -2 * MPFR_GET_EXP (xt), 1, 1,
+ rnd_mode, {});
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Compute initial precision */
+ Nx = MPFR_PREC (xt);
+ MPFR_TMP_INIT_ABS (x, xt);
+ Ny = MPFR_PREC (y);
+ Nt = MAX (Nx, Ny);
+ /* the optimal number of bits : see algorithms.ps */
+ Nt = Nt + MPFR_INT_CEIL_LOG2 (Nt) + 4;
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+ mpfr_init2 (te, Nt);
+
+ /* First computation of cosh */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute atanh */
+ mpfr_ui_sub (te, 1, x, MPFR_RNDU); /* (1-xt)*/
+ mpfr_add_ui (t, x, 1, MPFR_RNDD); /* (xt+1)*/
+ mpfr_div (t, t, te, MPFR_RNDN); /* (1+xt)/(1-xt)*/
+ mpfr_log (t, t, MPFR_RNDN); /* ln((1+xt)/(1-xt))*/
+ mpfr_div_2ui (t, t, 1, MPFR_RNDN); /* (1/2)*ln((1+xt)/(1-xt))*/
+
+ /* error estimate: see algorithms.tex */
+ /* FIXME: this does not correspond to the value in algorithms.tex!!! */
+ /* err=Nt-__gmpfr_ceil_log2(1+5*pow(2,1-MPFR_EXP(t)));*/
+ err = Nt - (MAX (4 - MPFR_GET_EXP (t), 0) + 1);
+
+ if (MPFR_LIKELY (MPFR_IS_ZERO (t)
+ || MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ break;
+
+ /* reactualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ mpfr_set_prec (te, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set4 (y, t, rnd_mode, MPFR_SIGN (xt));
+
+ mpfr_clear(t);
+ mpfr_clear(te);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/bernoulli.c b/Build/source/libs/mpfr/mpfr-src/src/bernoulli.c
new file mode 100644
index 00000000000..0bacbb00bf3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/bernoulli.c
@@ -0,0 +1,80 @@
+/* bernoulli -- internal function to compute Bernoulli numbers.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* assuming b[0]...b[2(n-1)] are computed, computes and stores B[2n]*(2n+1)!
+
+ t/(exp(t)-1) = sum(B[j]*t^j/j!, j=0..infinity)
+ thus t = (exp(t)-1) * sum(B[j]*t^j/j!, n=0..infinity).
+ Taking the coefficient of degree n+1 > 1, we get:
+ 0 = sum(1/(n+1-k)!*B[k]/k!, k=0..n)
+ which gives:
+ B[n] = -sum(binomial(n+1,k)*B[k], k=0..n-1)/(n+1).
+
+ Let C[n] = B[n]*(n+1)!.
+ Then C[n] = -sum(binomial(n+1,k)*C[k]*n!/(k+1)!, k=0..n-1),
+ which proves that the C[n] are integers.
+*/
+mpz_t*
+mpfr_bernoulli_internal (mpz_t *b, unsigned long n)
+{
+ if (n == 0)
+ {
+ b = (mpz_t *) (*__gmp_allocate_func) (sizeof (mpz_t));
+ mpz_init_set_ui (b[0], 1);
+ }
+ else
+ {
+ mpz_t t;
+ unsigned long k;
+
+ b = (mpz_t *) (*__gmp_reallocate_func)
+ (b, n * sizeof (mpz_t), (n + 1) * sizeof (mpz_t));
+ mpz_init (b[n]);
+ /* b[n] = -sum(binomial(2n+1,2k)*C[k]*(2n)!/(2k+1)!, k=0..n-1) */
+ mpz_init_set_ui (t, 2 * n + 1);
+ mpz_mul_ui (t, t, 2 * n - 1);
+ mpz_mul_ui (t, t, 2 * n);
+ mpz_mul_ui (t, t, n);
+ mpz_fdiv_q_ui (t, t, 3); /* exact: t=binomial(2*n+1,2*k)*(2*n)!/(2*k+1)!
+ for k=n-1 */
+ mpz_mul (b[n], t, b[n-1]);
+ for (k = n - 1; k-- > 0;)
+ {
+ mpz_mul_ui (t, t, 2 * k + 1);
+ mpz_mul_ui (t, t, 2 * k + 2);
+ mpz_mul_ui (t, t, 2 * k + 2);
+ mpz_mul_ui (t, t, 2 * k + 3);
+ mpz_fdiv_q_ui (t, t, 2 * (n - k) + 1);
+ mpz_fdiv_q_ui (t, t, 2 * (n - k));
+ mpz_addmul (b[n], t, b[k]);
+ }
+ /* take into account C[1] */
+ mpz_mul_ui (t, t, 2 * n + 1);
+ mpz_fdiv_q_2exp (t, t, 1);
+ mpz_sub (b[n], b[n], t);
+ mpz_neg (b[n], b[n]);
+ mpz_clear (t);
+ }
+ return b;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/buildopt.c b/Build/source/libs/mpfr/mpfr-src/src/buildopt.c
new file mode 100644
index 00000000000..c44b97a3d36
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/buildopt.c
@@ -0,0 +1,63 @@
+/* buildopt.c -- functions giving information about options used during the
+ mpfr library compilation
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_buildopt_tls_p (void)
+{
+#ifdef MPFR_USE_THREAD_SAFE
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+int
+mpfr_buildopt_decimal_p (void)
+{
+#ifdef MPFR_WANT_DECIMAL_FLOATS
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+int
+mpfr_buildopt_gmpinternals_p (void)
+{
+#if defined(MPFR_HAVE_GMP_IMPL) || defined(WANT_GMP_INTERNALS)
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+const char *mpfr_buildopt_tune_case (void)
+{
+#ifdef MPFR_TUNE_CASE
+ return MPFR_TUNE_CASE;
+#else
+ return "Generic thresholds";
+#endif
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cache.c b/Build/source/libs/mpfr/mpfr-src/src/cache.c
new file mode 100644
index 00000000000..1ddddf3b86f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cache.c
@@ -0,0 +1,145 @@
+/* mpfr_cache -- cache interface for multiple-precision constants in MPFR.
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#if 0 /* this function is not used/documented/tested so far, it could be
+ useful if some user wants to add a new constant to mpfr, and
+ implement a cache mechanism for that constant */
+void
+mpfr_init_cache (mpfr_cache_t cache, int (*func)(mpfr_ptr, mpfr_rnd_t))
+{
+ MPFR_PREC (cache->x) = 0; /* Invalid prec to detect that the cache is not
+ valid. Maybe add a flag? */
+ cache->func = func;
+}
+#endif
+
+void
+mpfr_clear_cache (mpfr_cache_t cache)
+{
+ if (MPFR_PREC (cache->x) != 0)
+ mpfr_clear (cache->x);
+ MPFR_PREC (cache->x) = 0;
+}
+
+int
+mpfr_cache (mpfr_ptr dest, mpfr_cache_t cache, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t prec = MPFR_PREC (dest);
+ mpfr_prec_t pold = MPFR_PREC (cache->x);
+ int inexact, sign;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (MPFR_UNLIKELY (prec > pold))
+ {
+ /* No previous result in the cache or the precision of the
+ previous result is not sufficient. */
+
+ if (MPFR_UNLIKELY (pold == 0)) /* No previous result. */
+ mpfr_init2 (cache->x, prec);
+
+ /* Update the cache. */
+ pold = prec;
+ /* no need to keep the previous value */
+ mpfr_set_prec (cache->x, pold);
+ cache->inexact = (*cache->func) (cache->x, MPFR_RNDN);
+ }
+
+ /* now pold >= prec is the precision of cache->x */
+
+ /* First, check if the cache has the exact value (unlikely).
+ Else the exact value is between (assuming x=cache->x > 0):
+ x and x+ulp(x) if cache->inexact < 0,
+ x-ulp(x) and x if cache->inexact > 0,
+ and abs(x-exact) <= ulp(x)/2. */
+
+ /* we assume all cached constants are positive */
+ MPFR_ASSERTN (MPFR_IS_POS (cache->x)); /* TODO... */
+ sign = MPFR_SIGN (cache->x);
+ MPFR_SET_EXP (dest, MPFR_GET_EXP (cache->x));
+ MPFR_SET_SIGN (dest, sign);
+
+ /* round cache->x from precision pold down to precision prec */
+ MPFR_RNDRAW_GEN (inexact, dest,
+ MPFR_MANT (cache->x), pold, rnd, sign,
+ if (MPFR_UNLIKELY (cache->inexact == 0))
+ {
+ if ((_sp[0] & _ulp) == 0)
+ {
+ inexact = -sign;
+ goto trunc_doit;
+ }
+ else
+ goto addoneulp;
+ }
+ else if (cache->inexact < 0)
+ goto addoneulp;
+ else /* cache->inexact > 0 */
+ {
+ inexact = -sign;
+ goto trunc_doit;
+ },
+ if (MPFR_UNLIKELY (++MPFR_EXP (dest) > __gmpfr_emax))
+ mpfr_overflow (dest, rnd, sign);
+ );
+
+ if (MPFR_LIKELY (cache->inexact != 0))
+ {
+ switch (rnd)
+ {
+ case MPFR_RNDZ:
+ case MPFR_RNDD:
+ if (MPFR_UNLIKELY (inexact == 0))
+ {
+ inexact = cache->inexact;
+ if (inexact > 0)
+ {
+ mpfr_nextbelow (dest);
+ inexact = -inexact;
+ }
+ }
+ break;
+ case MPFR_RNDU:
+ case MPFR_RNDA:
+ if (MPFR_UNLIKELY (inexact == 0))
+ {
+ inexact = cache->inexact;
+ if (inexact < 0)
+ {
+ mpfr_nextabove (dest);
+ inexact = -inexact;
+ }
+ }
+ break;
+ default: /* MPFR_RNDN */
+ if (MPFR_UNLIKELY(inexact == 0))
+ inexact = cache->inexact;
+ break;
+ }
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (dest, inexact, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cbrt.c b/Build/source/libs/mpfr/mpfr-src/src/cbrt.c
new file mode 100644
index 00000000000..d6858bc92fa
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cbrt.c
@@ -0,0 +1,153 @@
+/* mpfr_cbrt -- cube root function.
+
+Copyright 2002-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of y = x^(1/3) is done as follows:
+
+ Let x = sign * m * 2^(3*e) where m is an integer
+
+ with 2^(3n-3) <= m < 2^(3n) where n = PREC(y)
+
+ and m = s^3 + r where 0 <= r and m < (s+1)^3
+
+ we want that s has n bits i.e. s >= 2^(n-1), or m >= 2^(3n-3)
+ i.e. m must have at least 3n-2 bits
+
+ then x^(1/3) = s * 2^e if r=0
+ x^(1/3) = (s+1) * 2^e if round up
+ x^(1/3) = (s-1) * 2^e if round down
+ x^(1/3) = s * 2^e if nearest and r < 3/2*s^2+3/4*s+1/8
+ (s+1) * 2^e otherwise
+ */
+
+int
+mpfr_cbrt (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpz_t m;
+ mpfr_exp_t e, r, sh;
+ mpfr_prec_t n, size_m, tmp;
+ int inexact, negative;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ /* special values */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ /* case 0: cbrt(+/- 0) = +/- 0 */
+ else /* x is necessarily 0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ }
+
+ /* General case */
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpz_init (m);
+
+ e = mpfr_get_z_2exp (m, x); /* x = m * 2^e */
+ if ((negative = MPFR_IS_NEG(x)))
+ mpz_neg (m, m);
+ r = e % 3;
+ if (r < 0)
+ r += 3;
+ /* x = (m*2^r) * 2^(e-r) = (m*2^r) * 2^(3*q) */
+
+ MPFR_MPZ_SIZEINBASE2 (size_m, m);
+ n = MPFR_PREC (y) + (rnd_mode == MPFR_RNDN);
+
+ /* we want 3*n-2 <= size_m + 3*sh + r <= 3*n
+ i.e. 3*sh + size_m + r <= 3*n */
+ sh = (3 * (mpfr_exp_t) n - (mpfr_exp_t) size_m - r) / 3;
+ sh = 3 * sh + r;
+ if (sh >= 0)
+ {
+ mpz_mul_2exp (m, m, sh);
+ e = e - sh;
+ }
+ else if (r > 0)
+ {
+ mpz_mul_2exp (m, m, r);
+ e = e - r;
+ }
+
+ /* invariant: x = m*2^e, with e divisible by 3 */
+
+ /* we reuse the variable m to store the cube root, since it is not needed
+ any more: we just need to know if the root is exact */
+ inexact = mpz_root (m, m, 3) == 0;
+
+ MPFR_MPZ_SIZEINBASE2 (tmp, m);
+ sh = tmp - n;
+ if (sh > 0) /* we have to flush to 0 the last sh bits from m */
+ {
+ inexact = inexact || ((mpfr_exp_t) mpz_scan1 (m, 0) < sh);
+ mpz_fdiv_q_2exp (m, m, sh);
+ e += 3 * sh;
+ }
+
+ if (inexact)
+ {
+ if (negative)
+ rnd_mode = MPFR_INVERT_RND (rnd_mode);
+ if (rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDA
+ || (rnd_mode == MPFR_RNDN && mpz_tstbit (m, 0)))
+ inexact = 1, mpz_add_ui (m, m, 1);
+ else
+ inexact = -1;
+ }
+
+ /* either inexact is not zero, and the conversion is exact, i.e. inexact
+ is not changed; or inexact=0, and inexact is set only when
+ rnd_mode=MPFR_RNDN and bit (n+1) from m is 1 */
+ inexact += mpfr_set_z (y, m, MPFR_RNDN);
+ MPFR_SET_EXP (y, MPFR_GET_EXP (y) + e / 3);
+
+ if (negative)
+ {
+ MPFR_CHANGE_SIGN (y);
+ inexact = -inexact;
+ }
+
+ mpz_clear (m);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/check.c b/Build/source/libs/mpfr/mpfr-src/src/check.c
new file mode 100644
index 00000000000..10ab789a6e5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/check.c
@@ -0,0 +1,80 @@
+/* mpfr_check -- Check if a floating-point number has not been corrupted.
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/*
+ * Check if x is a valid mpfr_t initializes by mpfr_init
+ * Returns 0 if isn't valid
+ */
+int
+mpfr_check (mpfr_srcptr x)
+{
+ mp_size_t s, i;
+ mp_limb_t tmp;
+ volatile mp_limb_t *xm;
+ int rw;
+
+ /* Check Sign */
+ if (MPFR_SIGN(x) != MPFR_SIGN_POS && MPFR_SIGN(x) != MPFR_SIGN_NEG)
+ return 0;
+ /* Check Precision */
+ if ( (MPFR_PREC(x) < MPFR_PREC_MIN) || (MPFR_PREC(x) > MPFR_PREC_MAX))
+ return 0;
+ /* Check Mantissa */
+ xm = MPFR_MANT(x);
+ if (!xm)
+ return 0;
+ /* Check size of mantissa */
+ s = MPFR_GET_ALLOC_SIZE(x);
+ if (s<=0 || s > MP_SIZE_T_MAX ||
+ MPFR_PREC(x) > ((mpfr_prec_t)s*GMP_NUMB_BITS))
+ return 0;
+ /* Acces all the mp_limb of the mantissa: may do a seg fault */
+ for(i = 0 ; i < s ; i++)
+ tmp = xm[i];
+ /* Check if it isn't singular*/
+ if (! MPFR_IS_SINGULAR (x))
+ {
+ /* Check first mp_limb of mantissa (Must start with a 1 bit) */
+ if ( ((xm[MPFR_LIMB_SIZE(x)-1])>>(GMP_NUMB_BITS-1)) == 0)
+ return 0;
+ /* Check last mp_limb of mantissa */
+ rw = (MPFR_PREC(x) % GMP_NUMB_BITS);
+ if (rw != 0)
+ {
+ tmp = MPFR_LIMB_MASK (GMP_NUMB_BITS - rw);
+ if ((xm[0] & tmp) != 0)
+ return 0;
+ }
+ /* Check exponent range */
+ if ((MPFR_EXP (x) < __gmpfr_emin) || (MPFR_EXP (x) > __gmpfr_emax))
+ return 0;
+ }
+ else
+ {
+ /* Singular value is zero, inf or nan */
+ MPFR_ASSERTD(MPFR_IS_ZERO(x) || MPFR_IS_NAN(x) || MPFR_IS_INF(x));
+ }
+ return 1;
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/clear.c b/Build/source/libs/mpfr/mpfr-src/src/clear.c
new file mode 100644
index 00000000000..65282effbea
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/clear.c
@@ -0,0 +1,31 @@
+/* mpfr_clear -- free the memory space allocated for a floating-point number
+
+Copyright 1999-2001, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_clear (mpfr_ptr m)
+{
+ (*__gmp_free_func) (MPFR_GET_REAL_PTR (m),
+ MPFR_MALLOC_SIZE (MPFR_GET_ALLOC_SIZE (m)));
+ MPFR_MANT (m) = (mp_limb_t *) 0;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/clears.c b/Build/source/libs/mpfr/mpfr-src/src/clears.c
new file mode 100644
index 00000000000..dfa830b4d28
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/clears.c
@@ -0,0 +1,61 @@
+/* mpfr_clears -- free the memory space allocated for several
+ floating-point numbers
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#undef HAVE_STDARG
+#include "config.h" /* for a build within gmp */
+#endif
+
+#if HAVE_STDARG
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
+
+#include "mpfr-impl.h"
+
+void
+#if HAVE_STDARG
+mpfr_clears (mpfr_ptr x, ...)
+#else
+mpfr_clears (va_alist)
+ va_dcl
+#endif
+{
+ va_list arg;
+
+#if HAVE_STDARG
+ va_start (arg, x);
+#else
+ mpfr_ptr x;
+ va_start(arg);
+ x = va_arg (arg, mpfr_ptr);
+#endif
+
+ while (x != 0)
+ {
+ mpfr_clear (x);
+ x = (mpfr_ptr) va_arg (arg, mpfr_ptr);
+ }
+ va_end (arg);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp.c b/Build/source/libs/mpfr/mpfr-src/src/cmp.c
new file mode 100644
index 00000000000..237313ccab8
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp.c
@@ -0,0 +1,104 @@
+/* mpfr_cmp -- compare two floating-point numbers
+
+Copyright 1999, 2001, 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* returns 0 iff b = sign(s) * c
+ a positive value iff b > sign(s) * c
+ a negative value iff b < sign(s) * c
+ returns 0 and sets erange flag if b and/or c is NaN.
+*/
+
+int
+mpfr_cmp3 (mpfr_srcptr b, mpfr_srcptr c, int s)
+{
+ mpfr_exp_t be, ce;
+ mp_size_t bn, cn;
+ mp_limb_t *bp, *cp;
+
+ s = MPFR_MULT_SIGN( s , MPFR_SIGN(c) );
+
+ if (MPFR_ARE_SINGULAR(b, c))
+ {
+ if (MPFR_IS_NAN (b) || MPFR_IS_NAN (c))
+ {
+ MPFR_SET_ERANGE ();
+ return 0;
+ }
+ else if (MPFR_IS_INF(b))
+ {
+ if (MPFR_IS_INF(c) && s == MPFR_SIGN(b) )
+ return 0;
+ else
+ return MPFR_SIGN(b);
+ }
+ else if (MPFR_IS_INF(c))
+ return -s;
+ else if (MPFR_IS_ZERO(b))
+ return MPFR_IS_ZERO(c) ? 0 : -s;
+ else /* necessarily c=0 */
+ return MPFR_SIGN(b);
+ }
+ /* b and c are real numbers */
+ if (s != MPFR_SIGN(b))
+ return MPFR_SIGN(b);
+
+ /* now signs are equal */
+
+ be = MPFR_GET_EXP (b);
+ ce = MPFR_GET_EXP (c);
+ if (be > ce)
+ return s;
+ if (be < ce)
+ return -s;
+
+ /* both signs and exponents are equal */
+
+ bn = (MPFR_PREC(b)-1)/GMP_NUMB_BITS;
+ cn = (MPFR_PREC(c)-1)/GMP_NUMB_BITS;
+
+ bp = MPFR_MANT(b);
+ cp = MPFR_MANT(c);
+
+ for ( ; bn >= 0 && cn >= 0; bn--, cn--)
+ {
+ if (bp[bn] > cp[cn])
+ return s;
+ if (bp[bn] < cp[cn])
+ return -s;
+ }
+ for ( ; bn >= 0; bn--)
+ if (bp[bn])
+ return s;
+ for ( ; cn >= 0; cn--)
+ if (cp[cn])
+ return -s;
+
+ return 0;
+}
+
+#undef mpfr_cmp
+int
+mpfr_cmp (mpfr_srcptr b, mpfr_srcptr c)
+{
+ return mpfr_cmp3 (b, c, 1);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp2.c b/Build/source/libs/mpfr/mpfr-src/src/cmp2.c
new file mode 100644
index 00000000000..917247c0e21
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp2.c
@@ -0,0 +1,243 @@
+/* mpfr_cmp2 -- exponent shift when subtracting two numbers.
+
+Copyright 1999-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* If |b| != |c|, puts the number of canceled bits when one subtracts |c|
+ from |b| in *cancel. Returns the sign of the difference (-1, 0, 1).
+
+ Assumes neither of b or c is NaN, +/- infinity, or +/- 0.
+
+ In other terms, if |b| != |c|, mpfr_cmp2 (b, c) returns
+ EXP(max(|b|,|c|)) - EXP(|b| - |c|).
+*/
+
+int
+mpfr_cmp2 (mpfr_srcptr b, mpfr_srcptr c, mpfr_prec_t *cancel)
+{
+ mp_limb_t *bp, *cp, bb, cc = 0, lastc = 0, dif, high_dif = 0;
+ mp_size_t bn, cn;
+ mpfr_uexp_t diff_exp;
+ mpfr_prec_t res = 0;
+ int sign;
+
+ /* b=c should not happen, since cmp2 is called only from agm (with
+ different variables) and from sub1 (if b=c, then sub1sp would be
+ called instead). So, no need for a particular optimization here. */
+
+ /* the cases b=0 or c=0 are also treated apart in agm and sub
+ (which calls sub1) */
+ MPFR_ASSERTD (MPFR_IS_PURE_FP(b));
+ MPFR_ASSERTD (MPFR_IS_PURE_FP(c));
+
+ if (MPFR_GET_EXP (b) >= MPFR_GET_EXP (c))
+ {
+ sign = 1;
+ diff_exp = (mpfr_uexp_t) MPFR_GET_EXP (b) - MPFR_GET_EXP (c);
+
+ bp = MPFR_MANT(b);
+ cp = MPFR_MANT(c);
+
+ bn = (MPFR_PREC(b) - 1) / GMP_NUMB_BITS;
+ cn = (MPFR_PREC(c) - 1) / GMP_NUMB_BITS; /* # of limbs of c minus 1 */
+
+ if (MPFR_UNLIKELY( diff_exp == 0 ))
+ {
+ while (bn >= 0 && cn >= 0 && bp[bn] == cp[cn])
+ {
+ bn--;
+ cn--;
+ res += GMP_NUMB_BITS;
+ }
+
+ if (MPFR_UNLIKELY (bn < 0))
+ {
+ if (MPFR_LIKELY (cn < 0)) /* b = c */
+ return 0;
+
+ bp = cp;
+ bn = cn;
+ cn = -1;
+ sign = -1;
+ }
+
+ if (MPFR_UNLIKELY (cn < 0))
+ /* c discards exactly the upper part of b */
+ {
+ unsigned int z;
+
+ MPFR_ASSERTD (bn >= 0);
+
+ while (bp[bn] == 0)
+ {
+ if (--bn < 0) /* b = c */
+ return 0;
+ res += GMP_NUMB_BITS;
+ }
+
+ count_leading_zeros(z, bp[bn]); /* bp[bn] <> 0 */
+ *cancel = res + z;
+ return sign;
+ }
+
+ MPFR_ASSERTD (bn >= 0);
+ MPFR_ASSERTD (cn >= 0);
+ MPFR_ASSERTD (bp[bn] != cp[cn]);
+ if (bp[bn] < cp[cn])
+ {
+ mp_limb_t *tp;
+ mp_size_t tn;
+
+ tp = bp; bp = cp; cp = tp;
+ tn = bn; bn = cn; cn = tn;
+ sign = -1;
+ }
+ }
+ } /* MPFR_EXP(b) >= MPFR_EXP(c) */
+ else /* MPFR_EXP(b) < MPFR_EXP(c) */
+ {
+ sign = -1;
+ diff_exp = (mpfr_uexp_t) MPFR_GET_EXP (c) - MPFR_GET_EXP (b);
+
+ bp = MPFR_MANT(c);
+ cp = MPFR_MANT(b);
+
+ bn = (MPFR_PREC(c) - 1) / GMP_NUMB_BITS;
+ cn = (MPFR_PREC(b) - 1) / GMP_NUMB_BITS;
+ }
+
+ /* now we have removed the identical upper limbs of b and c
+ (can happen only when diff_exp = 0), and after the possible
+ swap, we have |b| > |c|: bp[bn] > cc, bn >= 0, cn >= 0,
+ diff_exp = EXP(b) - EXP(c).
+ */
+
+ if (MPFR_LIKELY (diff_exp < GMP_NUMB_BITS))
+ {
+ cc = cp[cn] >> diff_exp;
+ /* warning: a shift by GMP_NUMB_BITS may give wrong results */
+ if (diff_exp)
+ lastc = cp[cn] << (GMP_NUMB_BITS - diff_exp);
+ cn--;
+ }
+ else
+ diff_exp -= GMP_NUMB_BITS; /* cc = 0 */
+
+ dif = bp[bn--] - cc; /* necessarily dif >= 1 */
+ MPFR_ASSERTD(dif >= 1);
+
+ /* now high_dif = 0, dif >= 1, lastc is the neglected part of cp[cn+1] */
+
+ while (MPFR_UNLIKELY ((cn >= 0 || lastc != 0)
+ && (high_dif == 0) && (dif == 1)))
+ { /* dif=1 implies diff_exp = 0 or 1 */
+ bb = (bn >= 0) ? bp[bn] : 0;
+ cc = lastc;
+ if (cn >= 0)
+ {
+ if (diff_exp == 0)
+ {
+ cc += cp[cn];
+ }
+ else /* diff_exp = 1 */
+ {
+ cc += cp[cn] >> 1;
+ lastc = cp[cn] << (GMP_NUMB_BITS - 1);
+ }
+ }
+ else
+ lastc = 0;
+ high_dif = 1 - mpn_sub_n (&dif, &bb, &cc, 1);
+ bn--;
+ cn--;
+ res += GMP_NUMB_BITS;
+ }
+
+ /* (cn<0 and lastc=0) or (high_dif,dif)<>(0,1) */
+
+ if (MPFR_UNLIKELY (high_dif != 0)) /* high_dif == 1 */
+ {
+ res--;
+ MPFR_ASSERTD (res >= 0);
+ if (dif != 0)
+ {
+ *cancel = res;
+ return sign;
+ }
+ }
+ else /* high_dif == 0 */
+ {
+ unsigned int z;
+
+ count_leading_zeros(z, dif); /* dif > 1 here */
+ res += z;
+ if (MPFR_LIKELY(dif != (MPFR_LIMB_ONE << (GMP_NUMB_BITS - z - 1))))
+ { /* dif is not a power of two */
+ *cancel = res;
+ return sign;
+ }
+ }
+
+ /* now result is res + (low(b) < low(c)) */
+ while (MPFR_UNLIKELY (bn >= 0 && (cn >= 0 || lastc != 0)))
+ {
+ if (diff_exp >= GMP_NUMB_BITS)
+ diff_exp -= GMP_NUMB_BITS;
+ else
+ {
+ cc = lastc;
+ if (cn >= 0)
+ {
+ cc += cp[cn] >> diff_exp;
+ if (diff_exp != 0)
+ lastc = cp[cn] << (GMP_NUMB_BITS - diff_exp);
+ }
+ else
+ lastc = 0;
+ cn--;
+ }
+ if (bp[bn] != cc)
+ {
+ *cancel = res + (bp[bn] < cc);
+ return sign;
+ }
+ bn--;
+ }
+
+ if (bn < 0)
+ {
+ if (lastc != 0)
+ res++;
+ else
+ {
+ while (cn >= 0 && cp[cn] == 0)
+ cn--;
+ if (cn >= 0)
+ res++;
+ }
+ }
+
+ *cancel = res;
+ return sign;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp_abs.c b/Build/source/libs/mpfr/mpfr-src/src/cmp_abs.c
new file mode 100644
index 00000000000..62ce27ff1d1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp_abs.c
@@ -0,0 +1,94 @@
+/* mpfr_cmpabs -- compare the absolute values of two FP numbers
+
+Copyright 1999, 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Return a positive value if abs(b) > abs(c), 0 if abs(b) = abs(c), and
+ a negative value if abs(b) < abs(c). Neither b nor c may be NaN. */
+
+int
+mpfr_cmpabs (mpfr_srcptr b, mpfr_srcptr c)
+{
+ mpfr_exp_t be, ce;
+ mp_size_t bn, cn;
+ mp_limb_t *bp, *cp;
+
+ if (MPFR_ARE_SINGULAR (b, c))
+ {
+ if (MPFR_IS_NAN (b) || MPFR_IS_NAN (c))
+ {
+ MPFR_SET_ERANGE ();
+ return 0;
+ }
+ else if (MPFR_IS_INF (b))
+ return ! MPFR_IS_INF (c);
+ else if (MPFR_IS_INF (c))
+ return -1;
+ else if (MPFR_IS_ZERO (c))
+ return ! MPFR_IS_ZERO (b);
+ else /* b == 0 */
+ return -1;
+ }
+
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (b));
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (c));
+
+ /* Now that we know that b and c are pure FP numbers (i.e. they have
+ a meaningful exponent), we use MPFR_EXP instead of MPFR_GET_EXP to
+ allow exponents outside the current exponent range. For instance,
+ this is useful for mpfr_pow, which compares values to __gmpfr_one.
+ This is for internal use only! For compatibility with other MPFR
+ versions, the user must still provide values that are representable
+ in the current exponent range. */
+ be = MPFR_EXP (b);
+ ce = MPFR_EXP (c);
+ if (be > ce)
+ return 1;
+ if (be < ce)
+ return -1;
+
+ /* exponents are equal */
+
+ bn = MPFR_LIMB_SIZE(b)-1;
+ cn = MPFR_LIMB_SIZE(c)-1;
+
+ bp = MPFR_MANT(b);
+ cp = MPFR_MANT(c);
+
+ for ( ; bn >= 0 && cn >= 0; bn--, cn--)
+ {
+ if (bp[bn] > cp[cn])
+ return 1;
+ if (bp[bn] < cp[cn])
+ return -1;
+ }
+
+ for ( ; bn >= 0; bn--)
+ if (bp[bn])
+ return 1;
+
+ for ( ; cn >= 0; cn--)
+ if (cp[cn])
+ return -1;
+
+ return 0;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp_d.c b/Build/source/libs/mpfr/mpfr-src/src/cmp_d.c
new file mode 100644
index 00000000000..70d687a4bd1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp_d.c
@@ -0,0 +1,38 @@
+/* mpfr_cmp_d -- compare a floating-point number with a double
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_cmp_d (mpfr_srcptr b, double d)
+{
+ mpfr_t tmp;
+ int res;
+
+ mpfr_init2 (tmp, IEEE_DBL_MANT_DIG);
+ res = mpfr_set_d (tmp, d, MPFR_RNDN);
+ MPFR_ASSERTD (res == 0);
+ res = mpfr_cmp (b, tmp);
+ mpfr_clear (tmp);
+
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp_ld.c b/Build/source/libs/mpfr/mpfr-src/src/cmp_ld.c
new file mode 100644
index 00000000000..4e9ec0b3bae
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp_ld.c
@@ -0,0 +1,38 @@
+/* mpfr_cmp_d -- compare a floating-point number with a long double
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_cmp_ld (mpfr_srcptr b, long double d)
+{
+ mpfr_t tmp;
+ int res;
+
+ mpfr_init2 (tmp, MPFR_LDBL_MANT_DIG);
+ res = mpfr_set_ld (tmp, d, MPFR_RNDN);
+ MPFR_ASSERTD (res == 0);
+ res = mpfr_cmp (b, tmp);
+ mpfr_clear (tmp);
+
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp_si.c b/Build/source/libs/mpfr/mpfr-src/src/cmp_si.c
new file mode 100644
index 00000000000..1bd8e7b5a2a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp_si.c
@@ -0,0 +1,101 @@
+/* mpfr_cmp_si_2exp -- compare a floating-point number with a signed
+machine integer multiplied by a power of 2
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* returns a positive value if b > i*2^f,
+ a negative value if b < i*2^f,
+ zero if b = i*2^f.
+ b must not be NaN.
+*/
+
+int
+mpfr_cmp_si_2exp (mpfr_srcptr b, long int i, mpfr_exp_t f)
+{
+ int si;
+
+ si = i < 0 ? -1 : 1; /* sign of i */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (b)))
+ {
+ if (MPFR_IS_INF(b))
+ return MPFR_INT_SIGN(b);
+ else if (MPFR_IS_ZERO(b))
+ return i != 0 ? -si : 0;
+ /* NAN */
+ MPFR_SET_ERANGE ();
+ return 0;
+ }
+ else if (MPFR_SIGN(b) != si || i == 0)
+ return MPFR_INT_SIGN (b);
+ else /* b and i are of same sign si */
+ {
+ mpfr_exp_t e;
+ unsigned long ai;
+ int k;
+ mp_size_t bn;
+ mp_limb_t c, *bp;
+
+ ai = SAFE_ABS(unsigned long, i);
+
+ /* ai must be representable in a mp_limb_t */
+ MPFR_ASSERTN(ai == (mp_limb_t) ai);
+
+ e = MPFR_GET_EXP (b); /* 2^(e-1) <= b < 2^e */
+ if (e <= f)
+ return -si;
+ if (f < MPFR_EMAX_MAX - GMP_NUMB_BITS &&
+ e > f + GMP_NUMB_BITS)
+ return si;
+
+ /* now f < e <= f + GMP_NUMB_BITS */
+ c = (mp_limb_t) ai;
+ count_leading_zeros(k, c);
+ if ((int) (e - f) > GMP_NUMB_BITS - k)
+ return si;
+ if ((int) (e - f) < GMP_NUMB_BITS - k)
+ return -si;
+
+ /* now b and i*2^f have the same exponent */
+ c <<= k;
+ bn = (MPFR_PREC(b) - 1) / GMP_NUMB_BITS;
+ bp = MPFR_MANT(b);
+ if (bp[bn] > c)
+ return si;
+ if (bp[bn] < c)
+ return -si;
+
+ /* most significant limbs agree, check remaining limbs from b */
+ while (bn > 0)
+ if (bp[--bn])
+ return si;
+ return 0;
+ }
+}
+
+#undef mpfr_cmp_si
+int
+mpfr_cmp_si (mpfr_srcptr b, long int i)
+{
+ return mpfr_cmp_si_2exp (b, i, 0);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cmp_ui.c b/Build/source/libs/mpfr/mpfr-src/src/cmp_ui.c
new file mode 100644
index 00000000000..e42b43e35a4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cmp_ui.c
@@ -0,0 +1,101 @@
+/* mpfr_cmp_ui_2exp -- compare a floating-point number with an unsigned
+machine integer multiplied by a power of 2
+
+Copyright 1999, 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* returns a positive value if b > i*2^f,
+ a negative value if b < i*2^f,
+ zero if b = i*2^f.
+ b must not be NaN
+*/
+
+int
+mpfr_cmp_ui_2exp (mpfr_srcptr b, unsigned long int i, mpfr_exp_t f)
+{
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(b) ))
+ {
+ if (MPFR_IS_NAN (b))
+ {
+ MPFR_SET_ERANGE ();
+ return 0;
+ }
+ else if (MPFR_IS_INF(b))
+ return MPFR_INT_SIGN (b);
+ else /* since b cannot be NaN, b=0 here */
+ return i != 0 ? -1 : 0;
+ }
+
+ if (MPFR_IS_NEG (b))
+ return -1;
+ /* now b > 0 */
+ else if (MPFR_UNLIKELY(i == 0))
+ return 1;
+ else /* b > 0, i > 0 */
+ {
+ mpfr_exp_t e;
+ int k;
+ mp_size_t bn;
+ mp_limb_t c, *bp;
+
+ /* i must be representable in a mp_limb_t */
+ MPFR_ASSERTN(i == (mp_limb_t) i);
+
+ e = MPFR_GET_EXP (b); /* 2^(e-1) <= b < 2^e */
+ if (e <= f)
+ return -1;
+ if (f < MPFR_EMAX_MAX - GMP_NUMB_BITS &&
+ e > f + GMP_NUMB_BITS)
+ return 1;
+
+ /* now f < e <= f + GMP_NUMB_BITS */
+ c = (mp_limb_t) i;
+ count_leading_zeros(k, c);
+ if ((int) (e - f) > GMP_NUMB_BITS - k)
+ return 1;
+ if ((int) (e - f) < GMP_NUMB_BITS - k)
+ return -1;
+
+ /* now b and i*2^f have the same exponent */
+ c <<= k;
+ bn = (MPFR_PREC(b) - 1) / GMP_NUMB_BITS;
+ bp = MPFR_MANT(b);
+ if (bp[bn] > c)
+ return 1;
+ if (bp[bn] < c)
+ return -1;
+
+ /* most significant limbs agree, check remaining limbs from b */
+ while (bn > 0)
+ if (bp[--bn] != 0)
+ return 1;
+ return 0;
+ }
+}
+
+#undef mpfr_cmp_ui
+int
+mpfr_cmp_ui (mpfr_srcptr b, unsigned long int i)
+{
+ return mpfr_cmp_ui_2exp (b, i, 0);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/comparisons.c b/Build/source/libs/mpfr/mpfr-src/src/comparisons.c
new file mode 100644
index 00000000000..ca7fa90f460
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/comparisons.c
@@ -0,0 +1,78 @@
+/* comparison predicates
+
+Copyright 2002-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Note: these functions currently use mpfr_cmp; they could have their
+ own code to be faster. */
+
+/* = < > unordered
+ * mpfr_greater_p 0 0 1 0
+ * mpfr_greaterequal_p 1 0 1 0
+ * mpfr_less_p 0 1 0 0
+ * mpfr_lessequal_p 1 1 0 0
+ * mpfr_lessgreater_p 0 1 1 0
+ * mpfr_equal_p 1 0 0 0
+ * mpfr_unordered_p 0 0 0 1
+ */
+
+int
+mpfr_greater_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y) ? 0 : (mpfr_cmp (x, y) > 0);
+}
+
+int
+mpfr_greaterequal_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y) ? 0 : (mpfr_cmp (x, y) >= 0);
+}
+
+int
+mpfr_less_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y) ? 0 : (mpfr_cmp (x, y) < 0);
+}
+
+int
+mpfr_lessequal_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y) ? 0 : (mpfr_cmp (x, y) <= 0);
+}
+
+int
+mpfr_lessgreater_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y) ? 0 : (mpfr_cmp (x, y) != 0);
+}
+
+int
+mpfr_equal_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y) ? 0 : (mpfr_cmp (x, y) == 0);
+}
+
+int
+mpfr_unordered_p (mpfr_srcptr x, mpfr_srcptr y)
+{
+ return MPFR_IS_NAN(x) || MPFR_IS_NAN(y);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/const_catalan.c b/Build/source/libs/mpfr/mpfr-src/src/const_catalan.c
new file mode 100644
index 00000000000..0e4402d7643
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/const_catalan.c
@@ -0,0 +1,153 @@
+/* mpfr_const_catalan -- compute Catalan's constant.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Declare the cache */
+MPFR_DECL_INIT_CACHE(__gmpfr_cache_const_catalan, mpfr_const_catalan_internal);
+
+/* Set User Interface */
+#undef mpfr_const_catalan
+int
+mpfr_const_catalan (mpfr_ptr x, mpfr_rnd_t rnd_mode) {
+ return mpfr_cache (x, __gmpfr_cache_const_catalan, rnd_mode);
+}
+
+/* return T, Q such that T/Q = sum(k!^2/(2k)!/(2k+1)^2, k=n1..n2-1) */
+static void
+S (mpz_t T, mpz_t P, mpz_t Q, unsigned long n1, unsigned long n2)
+{
+ if (n2 == n1 + 1)
+ {
+ if (n1 == 0)
+ {
+ mpz_set_ui (P, 1);
+ mpz_set_ui (Q, 1);
+ }
+ else
+ {
+ mpz_set_ui (P, 2 * n1 - 1);
+ mpz_mul_ui (P, P, n1);
+ mpz_ui_pow_ui (Q, 2 * n1 + 1, 2);
+ mpz_mul_2exp (Q, Q, 1);
+ }
+ mpz_set (T, P);
+ }
+ else
+ {
+ unsigned long m = (n1 + n2) / 2;
+ mpz_t T2, P2, Q2;
+ S (T, P, Q, n1, m);
+ mpz_init (T2);
+ mpz_init (P2);
+ mpz_init (Q2);
+ S (T2, P2, Q2, m, n2);
+ mpz_mul (T, T, Q2);
+ mpz_mul (T2, T2, P);
+ mpz_add (T, T, T2);
+ mpz_mul (P, P, P2);
+ mpz_mul (Q, Q, Q2);
+ mpz_clear (T2);
+ mpz_clear (P2);
+ mpz_clear (Q2);
+ }
+}
+
+/* Don't need to save/restore exponent range: the cache does it.
+ Catalan's constant is G = sum((-1)^k/(2*k+1)^2, k=0..infinity).
+ We compute it using formula (31) of Victor Adamchik's page
+ "33 representations for Catalan's constant"
+ http://www-2.cs.cmu.edu/~adamchik/articles/catalan/catalan.htm
+
+ G = Pi/8*log(2+sqrt(3)) + 3/8*sum(k!^2/(2k)!/(2k+1)^2,k=0..infinity)
+*/
+int
+mpfr_const_catalan_internal (mpfr_ptr g, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t x, y, z;
+ mpz_t T, P, Q;
+ mpfr_prec_t pg, p;
+ int inex;
+ MPFR_ZIV_DECL (loop);
+ MPFR_GROUP_DECL (group);
+
+ MPFR_LOG_FUNC (("rnd_mode=%d", rnd_mode),
+ ("g[%Pu]=%.*Rg inex=%d", mpfr_get_prec (g), mpfr_log_prec, g, inex));
+
+ /* Here are the WC (max prec = 100.000.000)
+ Once we have found a chain of 11, we only look for bigger chain.
+ Found 3 '1' at 0
+ Found 5 '1' at 9
+ Found 6 '0' at 34
+ Found 9 '1' at 176
+ Found 11 '1' at 705
+ Found 12 '0' at 913
+ Found 14 '1' at 12762
+ Found 15 '1' at 152561
+ Found 16 '0' at 171725
+ Found 18 '0' at 525355
+ Found 20 '0' at 529245
+ Found 21 '1' at 6390133
+ Found 22 '0' at 7806417
+ Found 25 '1' at 11936239
+ Found 27 '1' at 51752950
+ */
+ pg = MPFR_PREC (g);
+ p = pg + MPFR_INT_CEIL_LOG2 (pg) + 7;
+
+ MPFR_GROUP_INIT_3 (group, p, x, y, z);
+ mpz_init (T);
+ mpz_init (P);
+ mpz_init (Q);
+
+ MPFR_ZIV_INIT (loop, p);
+ for (;;) {
+ mpfr_sqrt_ui (x, 3, MPFR_RNDU);
+ mpfr_add_ui (x, x, 2, MPFR_RNDU);
+ mpfr_log (x, x, MPFR_RNDU);
+ mpfr_const_pi (y, MPFR_RNDU);
+ mpfr_mul (x, x, y, MPFR_RNDN);
+ S (T, P, Q, 0, (p - 1) / 2);
+ mpz_mul_ui (T, T, 3);
+ mpfr_set_z (y, T, MPFR_RNDU);
+ mpfr_set_z (z, Q, MPFR_RNDD);
+ mpfr_div (y, y, z, MPFR_RNDN);
+ mpfr_add (x, x, y, MPFR_RNDN);
+ mpfr_div_2ui (x, x, 3, MPFR_RNDN);
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (x, p - 5, pg, rnd_mode)))
+ break;
+
+ MPFR_ZIV_NEXT (loop, p);
+ MPFR_GROUP_REPREC_3 (group, p, x, y, z);
+ }
+ MPFR_ZIV_FREE (loop);
+ inex = mpfr_set (g, x, rnd_mode);
+
+ MPFR_GROUP_CLEAR (group);
+ mpz_clear (T);
+ mpz_clear (P);
+ mpz_clear (Q);
+
+ return inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/const_euler.c b/Build/source/libs/mpfr/mpfr-src/src/const_euler.c
new file mode 100644
index 00000000000..802561fbed4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/const_euler.c
@@ -0,0 +1,221 @@
+/* mpfr_const_euler -- Euler's constant
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Declare the cache */
+MPFR_DECL_INIT_CACHE(__gmpfr_cache_const_euler, mpfr_const_euler_internal);
+
+/* Set User Interface */
+#undef mpfr_const_euler
+int
+mpfr_const_euler (mpfr_ptr x, mpfr_rnd_t rnd_mode) {
+ return mpfr_cache (x, __gmpfr_cache_const_euler, rnd_mode);
+}
+
+
+static void mpfr_const_euler_S2 (mpfr_ptr, unsigned long);
+static void mpfr_const_euler_R (mpfr_ptr, unsigned long);
+
+int
+mpfr_const_euler_internal (mpfr_t x, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t prec = MPFR_PREC(x), m, log2m;
+ mpfr_t y, z;
+ unsigned long n;
+ int inexact;
+ MPFR_ZIV_DECL (loop);
+
+ log2m = MPFR_INT_CEIL_LOG2 (prec);
+ m = prec + 2 * log2m + 23;
+
+ mpfr_init2 (y, m);
+ mpfr_init2 (z, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_exp_t exp_S, err;
+ /* since prec >= 1, we have m >= 24 here, which ensures n >= 9 below */
+ n = 1 + (unsigned long) ((double) m * LOG2 / 2.0);
+ MPFR_ASSERTD (n >= 9);
+ mpfr_const_euler_S2 (y, n); /* error <= 3 ulps */
+ exp_S = MPFR_EXP(y);
+ mpfr_set_ui (z, n, MPFR_RNDN);
+ mpfr_log (z, z, MPFR_RNDD); /* error <= 1 ulp */
+ mpfr_sub (y, y, z, MPFR_RNDN); /* S'(n) - log(n) */
+ /* the error is less than 1/2 + 3*2^(exp_S-EXP(y)) + 2^(EXP(z)-EXP(y))
+ <= 1/2 + 2^(exp_S+2-EXP(y)) + 2^(EXP(z)-EXP(y))
+ <= 1/2 + 2^(1+MAX(exp_S+2,EXP(z))-EXP(y)) */
+ err = 1 + MAX(exp_S + 2, MPFR_EXP(z)) - MPFR_EXP(y);
+ err = (err >= -1) ? err + 1 : 0; /* error <= 2^err ulp(y) */
+ exp_S = MPFR_EXP(y);
+ mpfr_const_euler_R (z, n); /* err <= ulp(1/2) = 2^(-m) */
+ mpfr_sub (y, y, z, MPFR_RNDN);
+ /* err <= 1/2 ulp(y) + 2^(-m) + 2^(err + exp_S - EXP(y)) ulp(y).
+ Since the result is between 0.5 and 1, ulp(y) = 2^(-m).
+ So we get 3/2*ulp(y) + 2^(err + exp_S - EXP(y)) ulp(y).
+ 3/2 + 2^e <= 2^(e+1) for e>=1, and <= 2^2 otherwise */
+ err = err + exp_S - MPFR_EXP(y);
+ err = (err >= 1) ? err + 1 : 2;
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (y, m - err, prec, rnd)))
+ break;
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (y, m);
+ mpfr_set_prec (z, m);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (x, y, rnd);
+
+ mpfr_clear (y);
+ mpfr_clear (z);
+
+ return inexact; /* always inexact */
+}
+
+static void
+mpfr_const_euler_S2_aux (mpz_t P, mpz_t Q, mpz_t T, unsigned long n,
+ unsigned long a, unsigned long b, int need_P)
+{
+ if (a + 1 == b)
+ {
+ mpz_set_ui (P, n);
+ if (a > 1)
+ mpz_mul_si (P, P, 1 - (long) a);
+ mpz_set (T, P);
+ mpz_set_ui (Q, a);
+ mpz_mul_ui (Q, Q, a);
+ }
+ else
+ {
+ unsigned long c = (a + b) / 2;
+ mpz_t P2, Q2, T2;
+ mpfr_const_euler_S2_aux (P, Q, T, n, a, c, 1);
+ mpz_init (P2);
+ mpz_init (Q2);
+ mpz_init (T2);
+ mpfr_const_euler_S2_aux (P2, Q2, T2, n, c, b, 1);
+ mpz_mul (T, T, Q2);
+ mpz_mul (T2, T2, P);
+ mpz_add (T, T, T2);
+ if (need_P)
+ mpz_mul (P, P, P2);
+ mpz_mul (Q, Q, Q2);
+ mpz_clear (P2);
+ mpz_clear (Q2);
+ mpz_clear (T2);
+ /* divide by 2 if possible */
+ {
+ unsigned long v2;
+ v2 = mpz_scan1 (P, 0);
+ c = mpz_scan1 (Q, 0);
+ if (c < v2)
+ v2 = c;
+ c = mpz_scan1 (T, 0);
+ if (c < v2)
+ v2 = c;
+ if (v2)
+ {
+ mpz_tdiv_q_2exp (P, P, v2);
+ mpz_tdiv_q_2exp (Q, Q, v2);
+ mpz_tdiv_q_2exp (T, T, v2);
+ }
+ }
+ }
+}
+
+/* computes S(n) = sum(n^k*(-1)^(k-1)/k!/k, k=1..ceil(4.319136566 * n))
+ using binary splitting.
+ We have S(n) = sum(f(k), k=1..N) with N=ceil(4.319136566 * n)
+ and f(k) = n^k*(-1)*(k-1)/k!/k,
+ thus f(k)/f(k-1) = -n*(k-1)/k^2
+*/
+static void
+mpfr_const_euler_S2 (mpfr_t x, unsigned long n)
+{
+ mpz_t P, Q, T;
+ unsigned long N = (unsigned long) (ALPHA * (double) n + 1.0);
+ mpz_init (P);
+ mpz_init (Q);
+ mpz_init (T);
+ mpfr_const_euler_S2_aux (P, Q, T, n, 1, N + 1, 0);
+ mpfr_set_z (x, T, MPFR_RNDN);
+ mpfr_div_z (x, x, Q, MPFR_RNDN);
+ mpz_clear (P);
+ mpz_clear (Q);
+ mpz_clear (T);
+}
+
+/* computes R(n) = exp(-n)/n * sum(k!/(-n)^k, k=0..n-2)
+ with error at most 4*ulp(x). Assumes n>=2.
+ Since x <= exp(-n)/n <= 1/8, then 4*ulp(x) <= ulp(1).
+*/
+static void
+mpfr_const_euler_R (mpfr_t x, unsigned long n)
+{
+ unsigned long k, m;
+ mpz_t a, s;
+ mpfr_t y;
+
+ MPFR_ASSERTN (n >= 2); /* ensures sum(k!/(-n)^k, k=0..n-2) >= 2/3 */
+
+ /* as we multiply the sum by exp(-n), we need only PREC(x) - n/LOG2 bits */
+ m = MPFR_PREC(x) - (unsigned long) ((double) n / LOG2);
+
+ mpz_init_set_ui (a, 1);
+ mpz_mul_2exp (a, a, m);
+ mpz_init_set (s, a);
+
+ for (k = 1; k <= n; k++)
+ {
+ mpz_mul_ui (a, a, k);
+ mpz_fdiv_q_ui (a, a, n);
+ /* the error e(k) on a is e(k) <= 1 + k/n*e(k-1) with e(0)=0,
+ i.e. e(k) <= k */
+ if (k % 2)
+ mpz_sub (s, s, a);
+ else
+ mpz_add (s, s, a);
+ }
+ /* the error on s is at most 1+2+...+n = n*(n+1)/2 */
+ mpz_fdiv_q_ui (s, s, n); /* err <= 1 + (n+1)/2 */
+ MPFR_ASSERTN (MPFR_PREC(x) >= mpz_sizeinbase(s, 2));
+ mpfr_set_z (x, s, MPFR_RNDD); /* exact */
+ mpfr_div_2ui (x, x, m, MPFR_RNDD);
+ /* now x = 1/n * sum(k!/(-n)^k, k=0..n-2) <= 1/n */
+ /* err(x) <= (n+1)/2^m <= (n+1)*exp(n)/2^PREC(x) */
+
+ mpfr_init2 (y, m);
+ mpfr_set_si (y, -(long)n, MPFR_RNDD); /* assumed exact */
+ mpfr_exp (y, y, MPFR_RNDD); /* err <= ulp(y) <= exp(-n)*2^(1-m) */
+ mpfr_mul (x, x, y, MPFR_RNDD);
+ /* err <= ulp(x) + (n + 1 + 2/n) / 2^prec(x)
+ <= ulp(x) + (n + 1 + 2/n) ulp(x)/x since x*2^(-prec(x)) < ulp(x)
+ <= ulp(x) + (n + 1 + 2/n) 3/(2n) ulp(x) since x >= 2/3*n for n >= 2
+ <= 4 * ulp(x) for n >= 2 */
+ mpfr_clear (y);
+
+ mpz_clear (a);
+ mpz_clear (s);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/const_log2.c b/Build/source/libs/mpfr/mpfr-src/src/const_log2.c
new file mode 100644
index 00000000000..7c634e9d7cf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/const_log2.c
@@ -0,0 +1,200 @@
+/* mpfr_const_log2 -- compute natural logarithm of 2
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Declare the cache */
+#ifndef MPFR_USE_LOGGING
+MPFR_DECL_INIT_CACHE(__gmpfr_cache_const_log2, mpfr_const_log2_internal);
+#else
+MPFR_DECL_INIT_CACHE(__gmpfr_normal_log2, mpfr_const_log2_internal);
+MPFR_DECL_INIT_CACHE(__gmpfr_logging_log2, mpfr_const_log2_internal);
+mpfr_cache_ptr MPFR_THREAD_ATTR __gmpfr_cache_const_log2 = __gmpfr_normal_log2;
+#endif
+
+/* Set User interface */
+#undef mpfr_const_log2
+int
+mpfr_const_log2 (mpfr_ptr x, mpfr_rnd_t rnd_mode) {
+ return mpfr_cache (x, __gmpfr_cache_const_log2, rnd_mode);
+}
+
+/* Auxiliary function: Compute the terms from n1 to n2 (excluded)
+ 3/4*sum((-1)^n*n!^2/2^n/(2*n+1)!, n = n1..n2-1).
+ Numerator is T[0], denominator is Q[0],
+ Compute P[0] only when need_P is non-zero.
+ Need 1+ceil(log(n2-n1)/log(2)) cells in T[],P[],Q[].
+*/
+static void
+S (mpz_t *T, mpz_t *P, mpz_t *Q, unsigned long n1, unsigned long n2, int need_P)
+{
+ if (n2 == n1 + 1)
+ {
+ if (n1 == 0)
+ mpz_set_ui (P[0], 3);
+ else
+ {
+ mpz_set_ui (P[0], n1);
+ mpz_neg (P[0], P[0]);
+ }
+ if (n1 <= (ULONG_MAX / 4 - 1) / 2)
+ mpz_set_ui (Q[0], 4 * (2 * n1 + 1));
+ else /* to avoid overflow in 4 * (2 * n1 + 1) */
+ {
+ mpz_set_ui (Q[0], n1);
+ mpz_mul_2exp (Q[0], Q[0], 1);
+ mpz_add_ui (Q[0], Q[0], 1);
+ mpz_mul_2exp (Q[0], Q[0], 2);
+ }
+ mpz_set (T[0], P[0]);
+ }
+ else
+ {
+ unsigned long m = (n1 / 2) + (n2 / 2) + (n1 & 1UL & n2);
+ unsigned long v, w;
+
+ S (T, P, Q, n1, m, 1);
+ S (T + 1, P + 1, Q + 1, m, n2, need_P);
+ mpz_mul (T[0], T[0], Q[1]);
+ mpz_mul (T[1], T[1], P[0]);
+ mpz_add (T[0], T[0], T[1]);
+ if (need_P)
+ mpz_mul (P[0], P[0], P[1]);
+ mpz_mul (Q[0], Q[0], Q[1]);
+
+ /* remove common trailing zeroes if any */
+ v = mpz_scan1 (T[0], 0);
+ if (v > 0)
+ {
+ w = mpz_scan1 (Q[0], 0);
+ if (w < v)
+ v = w;
+ if (need_P)
+ {
+ w = mpz_scan1 (P[0], 0);
+ if (w < v)
+ v = w;
+ }
+ /* now v = min(val(T), val(Q), val(P)) */
+ if (v > 0)
+ {
+ mpz_fdiv_q_2exp (T[0], T[0], v);
+ mpz_fdiv_q_2exp (Q[0], Q[0], v);
+ if (need_P)
+ mpz_fdiv_q_2exp (P[0], P[0], v);
+ }
+ }
+ }
+}
+
+/* Don't need to save / restore exponent range: the cache does it */
+int
+mpfr_const_log2_internal (mpfr_ptr x, mpfr_rnd_t rnd_mode)
+{
+ unsigned long n = MPFR_PREC (x);
+ mpfr_prec_t w; /* working precision */
+ unsigned long N;
+ mpz_t *T, *P, *Q;
+ mpfr_t t, q;
+ int inexact;
+ int ok = 1; /* ensures that the 1st try will give correct rounding */
+ unsigned long lgN, i;
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC (
+ ("rnd_mode=%d", rnd_mode),
+ ("x[%Pu]=%.*Rg inex=%d", mpfr_get_prec(x), mpfr_log_prec, x, inexact));
+
+ mpfr_init2 (t, MPFR_PREC_MIN);
+ mpfr_init2 (q, MPFR_PREC_MIN);
+
+ if (n < 1253)
+ w = n + 10; /* ensures correct rounding for the four rounding modes,
+ together with N = w / 3 + 1 (see below). */
+ else if (n < 2571)
+ w = n + 11; /* idem */
+ else if (n < 3983)
+ w = n + 12;
+ else if (n < 4854)
+ w = n + 13;
+ else if (n < 26248)
+ w = n + 14;
+ else
+ {
+ w = n + 15;
+ ok = 0;
+ }
+
+ MPFR_ZIV_INIT (loop, w);
+ for (;;)
+ {
+ N = w / 3 + 1; /* Warning: do not change that (even increasing N!)
+ without checking correct rounding in the above
+ ranges for n. */
+
+ /* the following are needed for error analysis (see algorithms.tex) */
+ MPFR_ASSERTD(w >= 3 && N >= 2);
+
+ lgN = MPFR_INT_CEIL_LOG2 (N) + 1;
+ T = (mpz_t *) (*__gmp_allocate_func) (3 * lgN * sizeof (mpz_t));
+ P = T + lgN;
+ Q = T + 2*lgN;
+ for (i = 0; i < lgN; i++)
+ {
+ mpz_init (T[i]);
+ mpz_init (P[i]);
+ mpz_init (Q[i]);
+ }
+
+ S (T, P, Q, 0, N, 0);
+
+ mpfr_set_prec (t, w);
+ mpfr_set_prec (q, w);
+
+ mpfr_set_z (t, T[0], MPFR_RNDN);
+ mpfr_set_z (q, Q[0], MPFR_RNDN);
+ mpfr_div (t, t, q, MPFR_RNDN);
+
+ for (i = 0; i < lgN; i++)
+ {
+ mpz_clear (T[i]);
+ mpz_clear (P[i]);
+ mpz_clear (Q[i]);
+ }
+ (*__gmp_free_func) (T, 3 * lgN * sizeof (mpz_t));
+
+ if (MPFR_LIKELY (ok != 0
+ || mpfr_can_round (t, w - 2, MPFR_RNDN, rnd_mode, n)))
+ break;
+
+ MPFR_ZIV_NEXT (loop, w);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (x, t, rnd_mode);
+
+ mpfr_clear (t);
+ mpfr_clear (q);
+
+ return inexact;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/const_pi.c b/Build/source/libs/mpfr/mpfr-src/src/const_pi.c
new file mode 100644
index 00000000000..0306d432aff
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/const_pi.c
@@ -0,0 +1,128 @@
+/* mpfr_const_pi -- compute Pi
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Declare the cache */
+#ifndef MPFR_USE_LOGGING
+MPFR_DECL_INIT_CACHE(__gmpfr_cache_const_pi, mpfr_const_pi_internal);
+#else
+MPFR_DECL_INIT_CACHE(__gmpfr_normal_pi, mpfr_const_pi_internal);
+MPFR_DECL_INIT_CACHE(__gmpfr_logging_pi, mpfr_const_pi_internal);
+mpfr_cache_ptr MPFR_THREAD_ATTR __gmpfr_cache_const_pi = __gmpfr_normal_pi;
+#endif
+
+/* Set User Interface */
+#undef mpfr_const_pi
+int
+mpfr_const_pi (mpfr_ptr x, mpfr_rnd_t rnd_mode) {
+ return mpfr_cache (x, __gmpfr_cache_const_pi, rnd_mode);
+}
+
+/* Don't need to save/restore exponent range: the cache does it */
+int
+mpfr_const_pi_internal (mpfr_ptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t a, A, B, D, S;
+ mpfr_prec_t px, p, cancel, k, kmax;
+ MPFR_ZIV_DECL (loop);
+ int inex;
+
+ MPFR_LOG_FUNC
+ (("rnd_mode=%d", rnd_mode),
+ ("x[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(x), mpfr_log_prec, x, inex));
+
+ px = MPFR_PREC (x);
+
+ /* we need 9*2^kmax - 4 >= px+2*kmax+8 */
+ for (kmax = 2; ((px + 2 * kmax + 12) / 9) >> kmax; kmax ++);
+
+ p = px + 3 * kmax + 14; /* guarantees no recomputation for px <= 10000 */
+
+ mpfr_init2 (a, p);
+ mpfr_init2 (A, p);
+ mpfr_init2 (B, p);
+ mpfr_init2 (D, p);
+ mpfr_init2 (S, p);
+
+ MPFR_ZIV_INIT (loop, p);
+ for (;;) {
+ mpfr_set_ui (a, 1, MPFR_RNDN); /* a = 1 */
+ mpfr_set_ui (A, 1, MPFR_RNDN); /* A = a^2 = 1 */
+ mpfr_set_ui_2exp (B, 1, -1, MPFR_RNDN); /* B = b^2 = 1/2 */
+ mpfr_set_ui_2exp (D, 1, -2, MPFR_RNDN); /* D = 1/4 */
+
+#define b B
+#define ap a
+#define Ap A
+#define Bp B
+ for (k = 0; ; k++)
+ {
+ /* invariant: 1/2 <= B <= A <= a < 1 */
+ mpfr_add (S, A, B, MPFR_RNDN); /* 1 <= S <= 2 */
+ mpfr_div_2ui (S, S, 2, MPFR_RNDN); /* exact, 1/4 <= S <= 1/2 */
+ mpfr_sqrt (b, B, MPFR_RNDN); /* 1/2 <= b <= 1 */
+ mpfr_add (ap, a, b, MPFR_RNDN); /* 1 <= ap <= 2 */
+ mpfr_div_2ui (ap, ap, 1, MPFR_RNDN); /* exact, 1/2 <= ap <= 1 */
+ mpfr_mul (Ap, ap, ap, MPFR_RNDN); /* 1/4 <= Ap <= 1 */
+ mpfr_sub (Bp, Ap, S, MPFR_RNDN); /* -1/4 <= Bp <= 3/4 */
+ mpfr_mul_2ui (Bp, Bp, 1, MPFR_RNDN); /* -1/2 <= Bp <= 3/2 */
+ mpfr_sub (S, Ap, Bp, MPFR_RNDN);
+ MPFR_ASSERTN (mpfr_cmp_ui (S, 1) < 0);
+ cancel = mpfr_cmp_ui (S, 0) ? (mpfr_uexp_t) -mpfr_get_exp(S) : p;
+ /* MPFR_ASSERTN (cancel >= px || cancel >= 9 * (1 << k) - 4); */
+ mpfr_mul_2ui (S, S, k, MPFR_RNDN);
+ mpfr_sub (D, D, S, MPFR_RNDN);
+ /* stop when |A_k - B_k| <= 2^(k-p) i.e. cancel >= p-k */
+ if (cancel + k >= p)
+ break;
+ }
+#undef b
+#undef ap
+#undef Ap
+#undef Bp
+
+ mpfr_div (A, B, D, MPFR_RNDN);
+
+ /* MPFR_ASSERTN(p >= 2 * k + 8); */
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (A, p - 2 * k - 8, px, rnd_mode)))
+ break;
+
+ p += kmax;
+ MPFR_ZIV_NEXT (loop, p);
+ mpfr_set_prec (a, p);
+ mpfr_set_prec (A, p);
+ mpfr_set_prec (B, p);
+ mpfr_set_prec (D, p);
+ mpfr_set_prec (S, p);
+ }
+ MPFR_ZIV_FREE (loop);
+ inex = mpfr_set (x, A, rnd_mode);
+
+ mpfr_clear (a);
+ mpfr_clear (A);
+ mpfr_clear (B);
+ mpfr_clear (D);
+ mpfr_clear (S);
+
+ return inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/constant.c b/Build/source/libs/mpfr/mpfr-src/src/constant.c
new file mode 100644
index 00000000000..158496c2e4b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/constant.c
@@ -0,0 +1,28 @@
+/* MPFR internal constant FP numbers
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+static const mp_limb_t __gmpfr_limb1[1] = {MPFR_LIMB_HIGHBIT};
+const mpfr_t __gmpfr_one = {{2, MPFR_SIGN_POS, 1, (mp_limb_t*)__gmpfr_limb1}};
+const mpfr_t __gmpfr_two = {{2, MPFR_SIGN_POS, 2, (mp_limb_t*)__gmpfr_limb1}};
+const mpfr_t __gmpfr_four ={{2, MPFR_SIGN_POS, 3, (mp_limb_t*)__gmpfr_limb1}};
diff --git a/Build/source/libs/mpfr/mpfr-src/src/copysign.c b/Build/source/libs/mpfr/mpfr-src/src/copysign.c
new file mode 100644
index 00000000000..96c18137531
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/copysign.c
@@ -0,0 +1,38 @@
+/* mpfr_copysign -- Produce a value with the magnitude of x and sign bit of y
+
+Copyright 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+ /*
+ The computation of z with magnitude of x and sign of y:
+ z = (-1)^signbit(y) * abs(x), i.e. with the same sign bit as y,
+ even if z is a NaN.
+ Note: This function implements copysign from the IEEE-754 standard
+ when no rounding occurs (e.g. if PREC(z) >= PREC(x)).
+ */
+
+#undef mpfr_copysign
+int
+mpfr_copysign (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set4 (z, x, rnd_mode, MPFR_SIGN (y));
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cos.c b/Build/source/libs/mpfr/mpfr-src/src/cos.c
new file mode 100644
index 00000000000..c9eac10a2cb
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cos.c
@@ -0,0 +1,299 @@
+/* mpfr_cos -- cosine of a floating-point number
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+static int
+mpfr_cos_fast (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int inex;
+
+ inex = mpfr_sincos_fast (NULL, y, x, rnd_mode);
+ inex = inex >> 2; /* 0: exact, 1: rounded up, 2: rounded down */
+ return (inex == 2) ? -1 : inex;
+}
+
+/* f <- 1 - r/2! + r^2/4! + ... + (-1)^l r^l/(2l)! + ...
+ Assumes |r| < 1/2, and f, r have the same precision.
+ Returns e such that the error on f is bounded by 2^e ulps.
+*/
+static int
+mpfr_cos2_aux (mpfr_ptr f, mpfr_srcptr r)
+{
+ mpz_t x, t, s;
+ mpfr_exp_t ex, l, m;
+ mpfr_prec_t p, q;
+ unsigned long i, maxi, imax;
+
+ MPFR_ASSERTD(mpfr_get_exp (r) <= -1);
+
+ /* compute minimal i such that i*(i+1) does not fit in an unsigned long,
+ assuming that there are no padding bits. */
+ maxi = 1UL << (CHAR_BIT * sizeof(unsigned long) / 2);
+ if (maxi * (maxi / 2) == 0) /* test checked at compile time */
+ {
+ /* can occur only when there are padding bits. */
+ /* maxi * (maxi-1) is representable iff maxi * (maxi / 2) != 0 */
+ do
+ maxi /= 2;
+ while (maxi * (maxi / 2) == 0);
+ }
+
+ mpz_init (x);
+ mpz_init (s);
+ mpz_init (t);
+ ex = mpfr_get_z_2exp (x, r); /* r = x*2^ex */
+
+ /* remove trailing zeroes */
+ l = mpz_scan1 (x, 0);
+ ex += l;
+ mpz_fdiv_q_2exp (x, x, l);
+
+ /* since |r| < 1, r = x*2^ex, and x is an integer, necessarily ex < 0 */
+
+ p = mpfr_get_prec (f); /* same than r */
+ /* bound for number of iterations */
+ imax = p / (-mpfr_get_exp (r));
+ imax += (imax == 0);
+ q = 2 * MPFR_INT_CEIL_LOG2(imax) + 4; /* bound for (3l)^2 */
+
+ mpz_set_ui (s, 1); /* initialize sum with 1 */
+ mpz_mul_2exp (s, s, p + q); /* scale all values by 2^(p+q) */
+ mpz_set (t, s); /* invariant: t is previous term */
+ for (i = 1; (m = mpz_sizeinbase (t, 2)) >= q; i += 2)
+ {
+ /* adjust precision of x to that of t */
+ l = mpz_sizeinbase (x, 2);
+ if (l > m)
+ {
+ l -= m;
+ mpz_fdiv_q_2exp (x, x, l);
+ ex += l;
+ }
+ /* multiply t by r */
+ mpz_mul (t, t, x);
+ mpz_fdiv_q_2exp (t, t, -ex);
+ /* divide t by i*(i+1) */
+ if (i < maxi)
+ mpz_fdiv_q_ui (t, t, i * (i + 1));
+ else
+ {
+ mpz_fdiv_q_ui (t, t, i);
+ mpz_fdiv_q_ui (t, t, i + 1);
+ }
+ /* if m is the (current) number of bits of t, we can consider that
+ all operations on t so far had precision >= m, so we can prove
+ by induction that the relative error on t is of the form
+ (1+u)^(3l)-1, where |u| <= 2^(-m), and l=(i+1)/2 is the # of loops.
+ Since |(1+x^2)^(1/x) - 1| <= 4x/3 for |x| <= 1/2,
+ for |u| <= 1/(3l)^2, the absolute error is bounded by
+ 4/3*(3l)*2^(-m)*t <= 4*l since |t| < 2^m.
+ Therefore the error on s is bounded by 2*l*(l+1). */
+ /* add or subtract to s */
+ if (i % 4 == 1)
+ mpz_sub (s, s, t);
+ else
+ mpz_add (s, s, t);
+ }
+
+ mpfr_set_z (f, s, MPFR_RNDN);
+ mpfr_div_2ui (f, f, p + q, MPFR_RNDN);
+
+ mpz_clear (x);
+ mpz_clear (s);
+ mpz_clear (t);
+
+ l = (i - 1) / 2; /* number of iterations */
+ return 2 * MPFR_INT_CEIL_LOG2 (l + 1) + 1; /* bound is 2l(l+1) */
+}
+
+int
+mpfr_cos (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t K0, K, precy, m, k, l;
+ int inexact, reduce = 0;
+ mpfr_t r, s, xr, c;
+ mpfr_exp_t exps, cancel = 0, expx;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_GROUP_DECL (group);
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%*.Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%*.Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x) || MPFR_IS_INF (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ return mpfr_set_ui (y, 1, rnd_mode);
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* cos(x) = 1-x^2/2 + ..., so error < 2^(2*EXP(x)-1) */
+ expx = MPFR_GET_EXP (x);
+ MPFR_SMALL_INPUT_AFTER_SAVE_EXPO (y, __gmpfr_one, -2 * expx,
+ 1, 0, rnd_mode, expo, {});
+
+ /* Compute initial precision */
+ precy = MPFR_PREC (y);
+
+ if (precy >= MPFR_SINCOS_THRESHOLD)
+ {
+ inexact = mpfr_cos_fast (y, x, rnd_mode);
+ goto end;
+ }
+
+ K0 = __gmpfr_isqrt (precy / 3);
+ m = precy + 2 * MPFR_INT_CEIL_LOG2 (precy) + 2 * K0;
+
+ if (expx >= 3)
+ {
+ reduce = 1;
+ /* As expx + m - 1 will silently be converted into mpfr_prec_t
+ in the mpfr_init2 call, the assert below may be useful to
+ avoid undefined behavior. */
+ MPFR_ASSERTN (expx + m - 1 <= MPFR_PREC_MAX);
+ mpfr_init2 (c, expx + m - 1);
+ mpfr_init2 (xr, m);
+ }
+
+ MPFR_GROUP_INIT_2 (group, m, r, s);
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ /* If |x| >= 4, first reduce x cmod (2*Pi) into xr, using mpfr_remainder:
+ let e = EXP(x) >= 3, and m the target precision:
+ (1) c <- 2*Pi [precision e+m-1, nearest]
+ (2) xr <- remainder (x, c) [precision m, nearest]
+ We have |c - 2*Pi| <= 1/2ulp(c) = 2^(3-e-m)
+ |xr - x - k c| <= 1/2ulp(xr) <= 2^(1-m)
+ |k| <= |x|/(2*Pi) <= 2^(e-2)
+ Thus |xr - x - 2kPi| <= |k| |c - 2Pi| + 2^(1-m) <= 2^(2-m).
+ It follows |cos(xr) - cos(x)| <= 2^(2-m). */
+ if (reduce)
+ {
+ mpfr_const_pi (c, MPFR_RNDN);
+ mpfr_mul_2ui (c, c, 1, MPFR_RNDN); /* 2Pi */
+ mpfr_remainder (xr, x, c, MPFR_RNDN);
+ if (MPFR_IS_ZERO(xr))
+ goto ziv_next;
+ /* now |xr| <= 4, thus r <= 16 below */
+ mpfr_mul (r, xr, xr, MPFR_RNDU); /* err <= 1 ulp */
+ }
+ else
+ mpfr_mul (r, x, x, MPFR_RNDU); /* err <= 1 ulp */
+
+ /* now |x| < 4 (or xr if reduce = 1), thus |r| <= 16 */
+
+ /* we need |r| < 1/2 for mpfr_cos2_aux, i.e., EXP(r) - 2K <= -1 */
+ K = K0 + 1 + MAX(0, MPFR_GET_EXP(r)) / 2;
+ /* since K0 >= 0, if EXP(r) < 0, then K >= 1, thus EXP(r) - 2K <= -3;
+ otherwise if EXP(r) >= 0, then K >= 1/2 + EXP(r)/2, thus
+ EXP(r) - 2K <= -1 */
+
+ MPFR_SET_EXP (r, MPFR_GET_EXP (r) - 2 * K); /* Can't overflow! */
+
+ /* s <- 1 - r/2! + ... + (-1)^l r^l/(2l)! */
+ l = mpfr_cos2_aux (s, r);
+ /* l is the error bound in ulps on s */
+ MPFR_SET_ONE (r);
+ for (k = 0; k < K; k++)
+ {
+ mpfr_sqr (s, s, MPFR_RNDU); /* err <= 2*olderr */
+ MPFR_SET_EXP (s, MPFR_GET_EXP (s) + 1); /* Can't overflow */
+ mpfr_sub (s, s, r, MPFR_RNDN); /* err <= 4*olderr */
+ if (MPFR_IS_ZERO(s))
+ goto ziv_next;
+ MPFR_ASSERTD (MPFR_GET_EXP (s) <= 1);
+ }
+
+ /* The absolute error on s is bounded by (2l+1/3)*2^(2K-m)
+ 2l+1/3 <= 2l+1.
+ If |x| >= 4, we need to add 2^(2-m) for the argument reduction
+ by 2Pi: if K = 0, this amounts to add 4 to 2l+1/3, i.e., to add
+ 2 to l; if K >= 1, this amounts to add 1 to 2*l+1/3. */
+ l = 2 * l + 1;
+ if (reduce)
+ l += (K == 0) ? 4 : 1;
+ k = MPFR_INT_CEIL_LOG2 (l) + 2*K;
+ /* now the error is bounded by 2^(k-m) = 2^(EXP(s)-err) */
+
+ exps = MPFR_GET_EXP (s);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, exps + m - k, precy, rnd_mode)))
+ break;
+
+ if (MPFR_UNLIKELY (exps == 1))
+ /* s = 1 or -1, and except x=0 which was already checked above,
+ cos(x) cannot be 1 or -1, so we can round if the error is less
+ than 2^(-precy) for directed rounding, or 2^(-precy-1) for rounding
+ to nearest. */
+ {
+ if (m > k && (m - k >= precy + (rnd_mode == MPFR_RNDN)))
+ {
+ /* If round to nearest or away, result is s = 1 or -1,
+ otherwise it is round(nexttoward (s, 0)). However in order to
+ have the inexact flag correctly set below, we set |s| to
+ 1 - 2^(-m) in all cases. */
+ mpfr_nexttozero (s);
+ break;
+ }
+ }
+
+ if (exps < cancel)
+ {
+ m += cancel - exps;
+ cancel = exps;
+ }
+
+ ziv_next:
+ MPFR_ZIV_NEXT (loop, m);
+ MPFR_GROUP_REPREC_2 (group, m, r, s);
+ if (reduce)
+ {
+ mpfr_set_prec (xr, m);
+ mpfr_set_prec (c, expx + m - 1);
+ }
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+ MPFR_GROUP_CLEAR (group);
+ if (reduce)
+ {
+ mpfr_clear (xr);
+ mpfr_clear (c);
+ }
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cosh.c b/Build/source/libs/mpfr/mpfr-src/src/cosh.c
new file mode 100644
index 00000000000..c07773474da
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cosh.c
@@ -0,0 +1,128 @@
+/* mpfr_cosh -- hyperbolic cosine
+
+Copyright 2001-2002, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of cosh is done by *
+ * cosh= 1/2[e^(x)+e^(-x)] */
+
+int
+mpfr_cosh (mpfr_ptr y, mpfr_srcptr xt , mpfr_rnd_t rnd_mode)
+{
+ mpfr_t x;
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%*.Rg rnd=%d", mpfr_get_prec (xt), mpfr_log_prec, xt, rnd_mode),
+ ("y[%Pu]=%*.Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(xt)))
+ {
+ if (MPFR_IS_NAN(xt))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(xt))
+ {
+ MPFR_SET_INF(y);
+ MPFR_SET_POS(y);
+ MPFR_RET(0);
+ }
+ else
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(xt));
+ return mpfr_set_ui (y, 1, rnd_mode); /* cosh(0) = 1 */
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* cosh(x) = 1+x^2/2 + ... <= 1+x^2 for x <= 2.9828...,
+ thus the error < 2^(2*EXP(x)). If x >= 1, then EXP(x) >= 1,
+ thus the following will always fail. */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, __gmpfr_one, -2 * MPFR_GET_EXP (xt), 0,
+ 1, rnd_mode, inexact = _inexact; goto end);
+
+ MPFR_TMP_INIT_ABS(x, xt);
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t, te;
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(y); /* Precision of output variable */
+ mpfr_prec_t Nt; /* Precision of the intermediary variable */
+ long int err; /* Precision of error */
+ MPFR_ZIV_DECL (loop);
+ MPFR_GROUP_DECL (group);
+
+ /* compute the precision of intermediary variable */
+ /* The optimal number of bits : see algorithms.tex */
+ Nt = Ny + 3 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ /* initialise of intermediary variables */
+ MPFR_GROUP_INIT_2 (group, Nt, t, te);
+
+ /* First computation of cosh */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* Compute cosh */
+ MPFR_BLOCK (flags, mpfr_exp (te, x, MPFR_RNDD)); /* exp(x) */
+ /* exp can overflow (but not underflow since x>0) */
+ if (MPFR_OVERFLOW (flags))
+ /* cosh(x) > exp(x), cosh(x) underflows too */
+ {
+ inexact = mpfr_overflow (y, rnd_mode, MPFR_SIGN_POS);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+ mpfr_ui_div (t, 1, te, MPFR_RNDU); /* 1/exp(x) */
+ mpfr_add (t, te, t, MPFR_RNDU); /* exp(x) + 1/exp(x)*/
+ mpfr_div_2ui (t, t, 1, MPFR_RNDN); /* 1/2(exp(x) + 1/exp(x))*/
+
+ /* Estimation of the error */
+ err = Nt - 3;
+ /* Check if we can round */
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ {
+ inexact = mpfr_set (y, t, rnd_mode);
+ break;
+ }
+
+ /* Actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ MPFR_GROUP_REPREC_2 (group, Nt, t, te);
+ }
+ MPFR_ZIV_FREE (loop);
+ MPFR_GROUP_CLEAR (group);
+ }
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/cot.c b/Build/source/libs/mpfr/mpfr-src/src/cot.c
new file mode 100644
index 00000000000..8959966f2ac
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/cot.c
@@ -0,0 +1,96 @@
+/* mpfr_cot - cotangent function.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* the cotangent is defined by cot(x) = 1/tan(x) = cos(x)/sin(x).
+ cot (NaN) = NaN.
+ cot (+Inf) = csc (-Inf) = NaN.
+ cot (+0) = +Inf.
+ cot (-0) = -Inf.
+*/
+
+#define FUNCTION mpfr_cot
+#define INVERSE mpfr_tan
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_ZERO(y,x) do { MPFR_SET_SAME_SIGN(y,x); MPFR_SET_INF(y); \
+ mpfr_set_divby0 (); MPFR_RET(0); } while (1)
+
+/* (This analysis is adapted from that for mpfr_coth.)
+ Near x=0, cot(x) = 1/x - x/3 + ..., more precisely we have
+ |cot(x) - 1/x| <= 0.36 for |x| <= 1. The error term has
+ the opposite sign as 1/x, thus |cot(x)| <= |1/x|. Then:
+ (i) either x is a power of two, then 1/x is exactly representable, and
+ as long as 1/2*ulp(1/x) > 0.36, we can conclude;
+ (ii) otherwise assume x has <= n bits, and y has <= n+1 bits, then
+ |y - 1/x| >= 2^(-2n) ufp(y), where ufp means unit in first place.
+ Since |cot(x) - 1/x| <= 0.36, if 2^(-2n) ufp(y) >= 0.72, then
+ |y - cot(x)| >= 2^(-2n-1) ufp(y), and rounding 1/x gives the correct
+ result. If x < 2^E, then y > 2^(-E), thus ufp(y) > 2^(-E-1).
+ A sufficient condition is thus EXP(x) + 1 <= -2 MAX(PREC(x),PREC(Y)).
+ The division can be inexact in case of underflow or overflow; but
+ an underflow is not possible as emin = - emax. The overflow is a
+ real overflow possibly except when |x| = 2^emin. */
+#define ACTION_TINY(y,x,r) \
+ if (MPFR_EXP(x) + 1 <= -2 * (mpfr_exp_t) MAX(MPFR_PREC(x), MPFR_PREC(y))) \
+ { \
+ int two2emin; \
+ int signx = MPFR_SIGN(x); \
+ MPFR_ASSERTN (MPFR_EMIN_MIN + MPFR_EMAX_MAX == 0); \
+ if ((two2emin = mpfr_get_exp (x) == __gmpfr_emin + 1 && \
+ mpfr_powerof2_raw (x))) \
+ { \
+ /* Case |x| = 2^emin. 1/x is not representable; so, compute \
+ 1/(2x) instead (exact), and correct the result later. */ \
+ mpfr_set_si_2exp (y, signx, __gmpfr_emax, MPFR_RNDN); \
+ inexact = 0; \
+ } \
+ else \
+ inexact = mpfr_ui_div (y, 1, x, r); \
+ if (inexact == 0) /* x is a power of two */ \
+ { /* result always 1/x, except when rounding to zero */ \
+ if (rnd_mode == MPFR_RNDA) \
+ rnd_mode = (signx > 0) ? MPFR_RNDU : MPFR_RNDD; \
+ if (rnd_mode == MPFR_RNDU || (rnd_mode == MPFR_RNDZ && signx < 0)) \
+ { \
+ if (signx < 0) \
+ mpfr_nextabove (y); /* -2^k + epsilon */ \
+ inexact = 1; \
+ } \
+ else if (rnd_mode == MPFR_RNDD || rnd_mode == MPFR_RNDZ) \
+ { \
+ if (signx > 0) \
+ mpfr_nextbelow (y); /* 2^k - epsilon */ \
+ inexact = -1; \
+ } \
+ else /* round to nearest */ \
+ inexact = signx; \
+ if (two2emin) \
+ mpfr_mul_2ui (y, y, 1, r); /* overflow in MPFR_RNDN */ \
+ } \
+ /* Underflow is not possible with emin = - emax, but we cannot */ \
+ /* add an assert as the underflow flag could have already been */ \
+ /* set before the call to mpfr_cot. */ \
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); \
+ goto end; \
+ }
+
+#include "gen_inverse.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/coth.c b/Build/source/libs/mpfr/mpfr-src/src/coth.c
new file mode 100644
index 00000000000..94aadfebd05
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/coth.c
@@ -0,0 +1,93 @@
+/* mpfr_coth - Hyperbolic cotangent function.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* the hyperbolic cotangent is defined by coth(x) = 1/tanh(x)
+ coth (NaN) = NaN.
+ coth (+Inf) = 1
+ coth (-Inf) = -1
+ coth (+0) = +Inf.
+ coth (-0) = -Inf.
+*/
+
+#define FUNCTION mpfr_coth
+#define INVERSE mpfr_tanh
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) return mpfr_set_si (y, MPFR_IS_POS(x) ? 1 : -1, rnd_mode)
+#define ACTION_ZERO(y,x) do { MPFR_SET_SAME_SIGN(y,x); MPFR_SET_INF(y); \
+ mpfr_set_divby0 (); MPFR_RET(0); } while (1)
+
+/* We know |coth(x)| > 1, thus if the approximation z is such that
+ 1 <= z <= 1 + 2^(-p) where p is the target precision, then the
+ result is either 1 or nextabove(1) = 1 + 2^(1-p). */
+#define ACTION_SPECIAL \
+ if (MPFR_GET_EXP(z) == 1) /* 1 <= |z| < 2 */ \
+ { \
+ /* the following is exact by Sterbenz theorem */ \
+ mpfr_sub_si (z, z, MPFR_SIGN(z) > 0 ? 1 : -1, MPFR_RNDN); \
+ if (MPFR_IS_ZERO(z) || MPFR_GET_EXP(z) <= - (mpfr_exp_t) precy) \
+ { \
+ mpfr_add_si (z, z, MPFR_SIGN(z) > 0 ? 1 : -1, MPFR_RNDN); \
+ break; \
+ } \
+ }
+
+/* The analysis is adapted from that for mpfr_csc:
+ near x=0, coth(x) = 1/x + x/3 + ..., more precisely we have
+ |coth(x) - 1/x| <= 0.32 for |x| <= 1. Like for csc, the error term has
+ the same sign as 1/x, thus |coth(x)| >= |1/x|. Then:
+ (i) either x is a power of two, then 1/x is exactly representable, and
+ as long as 1/2*ulp(1/x) > 0.32, we can conclude;
+ (ii) otherwise assume x has <= n bits, and y has <= n+1 bits, then
+ |y - 1/x| >= 2^(-2n) ufp(y), where ufp means unit in first place.
+ Since |coth(x) - 1/x| <= 0.32, if 2^(-2n) ufp(y) >= 0.64, then
+ |y - coth(x)| >= 2^(-2n-1) ufp(y), and rounding 1/x gives the correct
+ result. If x < 2^E, then y > 2^(-E), thus ufp(y) > 2^(-E-1).
+ A sufficient condition is thus EXP(x) + 1 <= -2 MAX(PREC(x),PREC(Y)). */
+#define ACTION_TINY(y,x,r) \
+ if (MPFR_EXP(x) + 1 <= -2 * (mpfr_exp_t) MAX(MPFR_PREC(x), MPFR_PREC(y))) \
+ { \
+ int signx = MPFR_SIGN(x); \
+ inexact = mpfr_ui_div (y, 1, x, r); \
+ if (inexact == 0) /* x is a power of two */ \
+ { /* result always 1/x, except when rounding away from zero */ \
+ if (rnd_mode == MPFR_RNDA) \
+ rnd_mode = (signx > 0) ? MPFR_RNDU : MPFR_RNDD; \
+ if (rnd_mode == MPFR_RNDU) \
+ { \
+ if (signx > 0) \
+ mpfr_nextabove (y); /* 2^k + epsilon */ \
+ inexact = 1; \
+ } \
+ else if (rnd_mode == MPFR_RNDD) \
+ { \
+ if (signx < 0) \
+ mpfr_nextbelow (y); /* -2^k - epsilon */ \
+ inexact = -1; \
+ } \
+ else /* round to zero, or nearest */ \
+ inexact = -signx; \
+ } \
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); \
+ goto end; \
+ }
+
+#include "gen_inverse.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/csc.c b/Build/source/libs/mpfr/mpfr-src/src/csc.c
new file mode 100644
index 00000000000..41703d46f13
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/csc.c
@@ -0,0 +1,76 @@
+/* mpfr_csc - cosecant function.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* the cosecant is defined by csc(x) = 1/sin(x).
+ csc (NaN) = NaN.
+ csc (+Inf) = csc (-Inf) = NaN.
+ csc (+0) = +Inf.
+ csc (-0) = -Inf.
+*/
+
+#define FUNCTION mpfr_csc
+#define INVERSE mpfr_sin
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_ZERO(y,x) do { MPFR_SET_SAME_SIGN(y,x); MPFR_SET_INF(y); \
+ mpfr_set_divby0 (); MPFR_RET(0); } while (1)
+/* near x=0, we have csc(x) = 1/x + x/6 + ..., more precisely we have
+ |csc(x) - 1/x| <= 0.2 for |x| <= 1. The analysis is similar to that for
+ gamma(x) near x=0 (see gamma.c), except here the error term has the same
+ sign as 1/x, thus |csc(x)| >= |1/x|. Then:
+ (i) either x is a power of two, then 1/x is exactly representable, and
+ as long as 1/2*ulp(1/x) > 0.2, we can conclude;
+ (ii) otherwise assume x has <= n bits, and y has <= n+1 bits, then
+ |y - 1/x| >= 2^(-2n) ufp(y), where ufp means unit in first place.
+ Since |csc(x) - 1/x| <= 0.2, if 2^(-2n) ufp(y) >= 0.4, then
+ |y - csc(x)| >= 2^(-2n-1) ufp(y), and rounding 1/x gives the correct result.
+ If x < 2^E, then y > 2^(-E), thus ufp(y) > 2^(-E-1).
+ A sufficient condition is thus EXP(x) <= -2 MAX(PREC(x),PREC(Y)). */
+#define ACTION_TINY(y,x,r) \
+ if (MPFR_EXP(x) <= -2 * (mpfr_exp_t) MAX(MPFR_PREC(x), MPFR_PREC(y))) \
+ { \
+ int signx = MPFR_SIGN(x); \
+ inexact = mpfr_ui_div (y, 1, x, r); \
+ if (inexact == 0) /* x is a power of two */ \
+ { /* result always 1/x, except when rounding away from zero */ \
+ if (rnd_mode == MPFR_RNDA) \
+ rnd_mode = (signx > 0) ? MPFR_RNDU : MPFR_RNDD; \
+ if (rnd_mode == MPFR_RNDU) \
+ { \
+ if (signx > 0) \
+ mpfr_nextabove (y); /* 2^k + epsilon */ \
+ inexact = 1; \
+ } \
+ else if (rnd_mode == MPFR_RNDD) \
+ { \
+ if (signx < 0) \
+ mpfr_nextbelow (y); /* -2^k - epsilon */ \
+ inexact = -1; \
+ } \
+ else /* round to zero, or nearest */ \
+ inexact = -signx; \
+ } \
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); \
+ goto end; \
+ }
+
+#include "gen_inverse.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/csch.c b/Build/source/libs/mpfr/mpfr-src/src/csch.c
new file mode 100644
index 00000000000..ab25a6764f1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/csch.c
@@ -0,0 +1,79 @@
+/* mpfr_csch - Hyperbolic cosecant function.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* the hyperbolic cosecant is defined by csch(x) = 1/sinh(x).
+ csch (NaN) = NaN.
+ csch (+Inf) = +0.
+ csch (-Inf) = -0.
+ csch (+0) = +Inf.
+ csch (-0) = -Inf.
+*/
+
+#define FUNCTION mpfr_csch
+#define INVERSE mpfr_sinh
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) do { MPFR_SET_SAME_SIGN(y,x); MPFR_SET_ZERO (y); \
+ MPFR_RET(0); } while (1)
+#define ACTION_ZERO(y,x) do { MPFR_SET_SAME_SIGN(y,x); MPFR_SET_INF(y); \
+ mpfr_set_divby0 (); MPFR_RET(0); } while (1)
+
+/* (This analysis is adapted from that for mpfr_csc.)
+ Near x=0, we have csch(x) = 1/x - x/6 + ..., more precisely we have
+ |csch(x) - 1/x| <= 0.2 for |x| <= 1. The error term has the opposite
+ sign as 1/x, thus |csch(x)| <= |1/x|. Then:
+ (i) either x is a power of two, then 1/x is exactly representable, and
+ as long as 1/2*ulp(1/x) > 0.2, we can conclude;
+ (ii) otherwise assume x has <= n bits, and y has <= n+1 bits, then
+ |y - 1/x| >= 2^(-2n) ufp(y), where ufp means unit in first place.
+ Since |csch(x) - 1/x| <= 0.2, if 2^(-2n) ufp(y) >= 0.4, then
+ |y - csch(x)| >= 2^(-2n-1) ufp(y), and rounding 1/x gives the correct
+ result. If x < 2^E, then y > 2^(-E), thus ufp(y) > 2^(-E-1).
+ A sufficient condition is thus EXP(x) <= -2 MAX(PREC(x),PREC(Y)). */
+#define ACTION_TINY(y,x,r) \
+ if (MPFR_EXP(x) <= -2 * (mpfr_exp_t) MAX(MPFR_PREC(x), MPFR_PREC(y))) \
+ { \
+ int signx = MPFR_SIGN(x); \
+ inexact = mpfr_ui_div (y, 1, x, r); \
+ if (inexact == 0) /* x is a power of two */ \
+ { /* result always 1/x, except when rounding to zero */ \
+ if (rnd_mode == MPFR_RNDA) \
+ rnd_mode = (signx > 0) ? MPFR_RNDU : MPFR_RNDD; \
+ if (rnd_mode == MPFR_RNDU || (rnd_mode == MPFR_RNDZ && signx < 0)) \
+ { \
+ if (signx < 0) \
+ mpfr_nextabove (y); /* -2^k + epsilon */ \
+ inexact = 1; \
+ } \
+ else if (rnd_mode == MPFR_RNDD || rnd_mode == MPFR_RNDZ) \
+ { \
+ if (signx > 0) \
+ mpfr_nextbelow (y); /* 2^k - epsilon */ \
+ inexact = -1; \
+ } \
+ else /* round to nearest */ \
+ inexact = signx; \
+ } \
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); \
+ goto end; \
+ }
+
+#include "gen_inverse.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/d_div.c b/Build/source/libs/mpfr/mpfr-src/src/d_div.c
new file mode 100644
index 00000000000..cad7f102b38
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/d_div.c
@@ -0,0 +1,50 @@
+/* mpfr_d_div -- divide a machine double precision float
+ by a multiple precision floating-point number
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_d_div (mpfr_ptr a, double b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t d;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC (
+ ("b=%.20g c[%Pu]=%*.Rg rnd=%d", b, mpfr_get_prec (c), mpfr_log_prec, c, rnd_mode),
+ ("a[%Pu]=%*.Rg", mpfr_get_prec (a), mpfr_log_prec, a));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ inexact = mpfr_set_d (d, b, rnd_mode);
+ MPFR_ASSERTN (inexact == 0);
+
+ mpfr_clear_flags ();
+ inexact = mpfr_div (a, d, c, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+
+ mpfr_clear(d);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (a, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/d_sub.c b/Build/source/libs/mpfr/mpfr-src/src/d_sub.c
new file mode 100644
index 00000000000..c8b8ff59a13
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/d_sub.c
@@ -0,0 +1,50 @@
+/* mpfr_d_sub -- subtract a multiple precision floating-point number
+ from a machine double precision float
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_d_sub (mpfr_ptr a, double b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t d;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC (
+ ("b=%.20g c[%Pu]=%*.Rg rnd=%d", b, mpfr_get_prec (c), mpfr_log_prec, c, rnd_mode),
+ ("a[%Pu]=%*.Rg", mpfr_get_prec (a), mpfr_log_prec, a));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ inexact = mpfr_set_d (d, b, rnd_mode);
+ MPFR_ASSERTN (inexact == 0);
+
+ mpfr_clear_flags ();
+ inexact = mpfr_sub (a, d, c, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+
+ mpfr_clear(d);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (a, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/digamma.c b/Build/source/libs/mpfr/mpfr-src/src/digamma.c
new file mode 100644
index 00000000000..1c4e7df4606
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/digamma.c
@@ -0,0 +1,378 @@
+/* mpfr_digamma -- digamma function of a floating-point number
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Put in s an approximation of digamma(x).
+ Assumes x >= 2.
+ Assumes s does not overlap with x.
+ Returns an integer e such that the error is bounded by 2^e ulps
+ of the result s.
+*/
+static mpfr_exp_t
+mpfr_digamma_approx (mpfr_ptr s, mpfr_srcptr x)
+{
+ mpfr_prec_t p = MPFR_PREC (s);
+ mpfr_t t, u, invxx;
+ mpfr_exp_t e, exps, f, expu;
+ mpz_t *INITIALIZED(B); /* variable B declared as initialized */
+ unsigned long n0, n; /* number of allocated B[] */
+
+ MPFR_ASSERTN(MPFR_IS_POS(x) && (MPFR_EXP(x) >= 2));
+
+ mpfr_init2 (t, p);
+ mpfr_init2 (u, p);
+ mpfr_init2 (invxx, p);
+
+ mpfr_log (s, x, MPFR_RNDN); /* error <= 1/2 ulp */
+ mpfr_ui_div (t, 1, x, MPFR_RNDN); /* error <= 1/2 ulp */
+ mpfr_div_2exp (t, t, 1, MPFR_RNDN); /* exact */
+ mpfr_sub (s, s, t, MPFR_RNDN);
+ /* error <= 1/2 + 1/2*2^(EXP(olds)-EXP(s)) + 1/2*2^(EXP(t)-EXP(s)).
+ For x >= 2, log(x) >= 2*(1/(2x)), thus olds >= 2t, and olds - t >= olds/2,
+ thus 0 <= EXP(olds)-EXP(s) <= 1, and EXP(t)-EXP(s) <= 0, thus
+ error <= 1/2 + 1/2*2 + 1/2 <= 2 ulps. */
+ e = 2; /* initial error */
+ mpfr_mul (invxx, x, x, MPFR_RNDZ); /* invxx = x^2 * (1 + theta)
+ for |theta| <= 2^(-p) */
+ mpfr_ui_div (invxx, 1, invxx, MPFR_RNDU); /* invxx = 1/x^2 * (1 + theta)^2 */
+
+ /* in the following we note err=xxx when the ratio between the approximation
+ and the exact result can be written (1 + theta)^xxx for |theta| <= 2^(-p),
+ following Higham's method */
+ B = mpfr_bernoulli_internal ((mpz_t *) 0, 0);
+ mpfr_set_ui (t, 1, MPFR_RNDN); /* err = 0 */
+ for (n = 1;; n++)
+ {
+ /* compute next Bernoulli number */
+ B = mpfr_bernoulli_internal (B, n);
+ /* The main term is Bernoulli[2n]/(2n)/x^(2n) = B[n]/(2n+1)!(2n)/x^(2n)
+ = B[n]*t[n]/(2n) where t[n]/t[n-1] = 1/(2n)/(2n+1)/x^2. */
+ mpfr_mul (t, t, invxx, MPFR_RNDU); /* err = err + 3 */
+ mpfr_div_ui (t, t, 2 * n, MPFR_RNDU); /* err = err + 1 */
+ mpfr_div_ui (t, t, 2 * n + 1, MPFR_RNDU); /* err = err + 1 */
+ /* we thus have err = 5n here */
+ mpfr_div_ui (u, t, 2 * n, MPFR_RNDU); /* err = 5n+1 */
+ mpfr_mul_z (u, u, B[n], MPFR_RNDU); /* err = 5n+2, and the
+ absolute error is bounded
+ by 10n+4 ulp(u) [Rule 11] */
+ /* if the terms 'u' are decreasing by a factor two at least,
+ then the error coming from those is bounded by
+ sum((10n+4)/2^n, n=1..infinity) = 24 */
+ exps = mpfr_get_exp (s);
+ expu = mpfr_get_exp (u);
+ if (expu < exps - (mpfr_exp_t) p)
+ break;
+ mpfr_sub (s, s, u, MPFR_RNDN); /* error <= 24 + n/2 */
+ if (mpfr_get_exp (s) < exps)
+ e <<= exps - mpfr_get_exp (s);
+ e ++; /* error in mpfr_sub */
+ f = 10 * n + 4;
+ while (expu < exps)
+ {
+ f = (1 + f) / 2;
+ expu ++;
+ }
+ e += f; /* total rouding error coming from 'u' term */
+ }
+
+ n0 = ++n;
+ while (n--)
+ mpz_clear (B[n]);
+ (*__gmp_free_func) (B, n0 * sizeof (mpz_t));
+
+ mpfr_clear (t);
+ mpfr_clear (u);
+ mpfr_clear (invxx);
+
+ f = 0;
+ while (e > 1)
+ {
+ f++;
+ e = (e + 1) / 2;
+ /* Invariant: 2^f * e does not decrease */
+ }
+ return f;
+}
+
+/* Use the reflection formula Digamma(1-x) = Digamma(x) + Pi * cot(Pi*x),
+ i.e., Digamma(x) = Digamma(1-x) - Pi * cot(Pi*x).
+ Assume x < 1/2. */
+static int
+mpfr_digamma_reflection (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t p = MPFR_PREC(y) + 10, q;
+ mpfr_t t, u, v;
+ mpfr_exp_t e1, expv;
+ int inex;
+ MPFR_ZIV_DECL (loop);
+
+ /* we want that 1-x is exact with precision q: if 0 < x < 1/2, then
+ q = PREC(x)-EXP(x) is ok, otherwise if -1 <= x < 0, q = PREC(x)-EXP(x)
+ is ok, otherwise for x < -1, PREC(x) is ok if EXP(x) <= PREC(x),
+ otherwise we need EXP(x) */
+ if (MPFR_EXP(x) < 0)
+ q = MPFR_PREC(x) + 1 - MPFR_EXP(x);
+ else if (MPFR_EXP(x) <= MPFR_PREC(x))
+ q = MPFR_PREC(x) + 1;
+ else
+ q = MPFR_EXP(x);
+ mpfr_init2 (u, q);
+ MPFR_ASSERTN(mpfr_ui_sub (u, 1, x, MPFR_RNDN) == 0);
+
+ /* if x is half an integer, cot(Pi*x) = 0, thus Digamma(x) = Digamma(1-x) */
+ mpfr_mul_2exp (u, u, 1, MPFR_RNDN);
+ inex = mpfr_integer_p (u);
+ mpfr_div_2exp (u, u, 1, MPFR_RNDN);
+ if (inex)
+ {
+ inex = mpfr_digamma (y, u, rnd_mode);
+ goto end;
+ }
+
+ mpfr_init2 (t, p);
+ mpfr_init2 (v, p);
+
+ MPFR_ZIV_INIT (loop, p);
+ for (;;)
+ {
+ mpfr_const_pi (v, MPFR_RNDN); /* v = Pi*(1+theta) for |theta|<=2^(-p) */
+ mpfr_mul (t, v, x, MPFR_RNDN); /* (1+theta)^2 */
+ e1 = MPFR_EXP(t) - (mpfr_exp_t) p + 1; /* bound for t: err(t) <= 2^e1 */
+ mpfr_cot (t, t, MPFR_RNDN);
+ /* cot(t * (1+h)) = cot(t) - theta * (1 + cot(t)^2) with |theta|<=t*h */
+ if (MPFR_EXP(t) > 0)
+ e1 = e1 + 2 * MPFR_EXP(t) + 1;
+ else
+ e1 = e1 + 1;
+ /* now theta * (1 + cot(t)^2) <= 2^e1 */
+ e1 += (mpfr_exp_t) p - MPFR_EXP(t); /* error is now 2^e1 ulps */
+ mpfr_mul (t, t, v, MPFR_RNDN);
+ e1 ++;
+ mpfr_digamma (v, u, MPFR_RNDN); /* error <= 1/2 ulp */
+ expv = MPFR_EXP(v);
+ mpfr_sub (v, v, t, MPFR_RNDN);
+ if (MPFR_EXP(v) < MPFR_EXP(t))
+ e1 += MPFR_EXP(t) - MPFR_EXP(v); /* scale error for t wrt new v */
+ /* now take into account the 1/2 ulp error for v */
+ if (expv - MPFR_EXP(v) - 1 > e1)
+ e1 = expv - MPFR_EXP(v) - 1;
+ else
+ e1 ++;
+ e1 ++; /* rounding error for mpfr_sub */
+ if (MPFR_CAN_ROUND (v, p - e1, MPFR_PREC(y), rnd_mode))
+ break;
+ MPFR_ZIV_NEXT (loop, p);
+ mpfr_set_prec (t, p);
+ mpfr_set_prec (v, p);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inex = mpfr_set (y, v, rnd_mode);
+
+ mpfr_clear (t);
+ mpfr_clear (v);
+ end:
+ mpfr_clear (u);
+
+ return inex;
+}
+
+/* we have x >= 1/2 here */
+static int
+mpfr_digamma_positive (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t p = MPFR_PREC(y) + 10, q;
+ mpfr_t t, u, x_plus_j;
+ int inex;
+ mpfr_exp_t errt, erru, expt;
+ unsigned long j = 0, min;
+ MPFR_ZIV_DECL (loop);
+
+ /* compute a precision q such that x+1 is exact */
+ if (MPFR_PREC(x) < MPFR_EXP(x))
+ q = MPFR_EXP(x);
+ else
+ q = MPFR_PREC(x) + 1;
+ mpfr_init2 (x_plus_j, q);
+
+ mpfr_init2 (t, p);
+ mpfr_init2 (u, p);
+ MPFR_ZIV_INIT (loop, p);
+ for(;;)
+ {
+ /* Lower bound for x+j in mpfr_digamma_approx call: since the smallest
+ term of the divergent series for Digamma(x) is about exp(-2*Pi*x), and
+ we want it to be less than 2^(-p), this gives x > p*log(2)/(2*Pi)
+ i.e., x >= 0.1103 p.
+ To be safe, we ensure x >= 0.25 * p.
+ */
+ min = (p + 3) / 4;
+ if (min < 2)
+ min = 2;
+
+ mpfr_set (x_plus_j, x, MPFR_RNDN);
+ mpfr_set_ui (u, 0, MPFR_RNDN);
+ j = 0;
+ while (mpfr_cmp_ui (x_plus_j, min) < 0)
+ {
+ j ++;
+ mpfr_ui_div (t, 1, x_plus_j, MPFR_RNDN); /* err <= 1/2 ulp */
+ mpfr_add (u, u, t, MPFR_RNDN);
+ inex = mpfr_add_ui (x_plus_j, x_plus_j, 1, MPFR_RNDZ);
+ if (inex != 0) /* we lost one bit */
+ {
+ q ++;
+ mpfr_prec_round (x_plus_j, q, MPFR_RNDZ);
+ mpfr_nextabove (x_plus_j);
+ }
+ /* since all terms are positive, the error is bounded by j ulps */
+ }
+ for (erru = 0; j > 1; erru++, j = (j + 1) / 2);
+ errt = mpfr_digamma_approx (t, x_plus_j);
+ expt = MPFR_EXP(t);
+ mpfr_sub (t, t, u, MPFR_RNDN);
+ if (MPFR_EXP(t) < expt)
+ errt += expt - MPFR_EXP(t);
+ if (MPFR_EXP(t) < MPFR_EXP(u))
+ erru += MPFR_EXP(u) - MPFR_EXP(t);
+ if (errt > erru)
+ errt = errt + 1;
+ else if (errt == erru)
+ errt = errt + 2;
+ else
+ errt = erru + 1;
+ if (MPFR_CAN_ROUND (t, p - errt, MPFR_PREC(y), rnd_mode))
+ break;
+ MPFR_ZIV_NEXT (loop, p);
+ mpfr_set_prec (t, p);
+ mpfr_set_prec (u, p);
+ }
+ MPFR_ZIV_FREE (loop);
+ inex = mpfr_set (y, t, rnd_mode);
+ mpfr_clear (t);
+ mpfr_clear (u);
+ mpfr_clear (x_plus_j);
+ return inex;
+}
+
+int
+mpfr_digamma (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int inex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y, inex));
+
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
+ {
+ if (MPFR_IS_NAN(x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(x))
+ {
+ if (MPFR_IS_POS(x)) /* Digamma(+Inf) = +Inf */
+ {
+ MPFR_SET_SAME_SIGN(y, x);
+ MPFR_SET_INF(y);
+ MPFR_RET(0);
+ }
+ else /* Digamma(-Inf) = NaN */
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ }
+ else /* Zero case */
+ {
+ /* the following works also in case of overlap */
+ MPFR_SET_INF(y);
+ MPFR_SET_OPPOSITE_SIGN(y, x);
+ mpfr_set_divby0 ();
+ MPFR_RET(0);
+ }
+ }
+
+ /* Digamma is undefined for negative integers */
+ if (MPFR_IS_NEG(x) && mpfr_integer_p (x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+
+ /* now x is a normal number */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ /* for x very small, we have Digamma(x) = -1/x - gamma + O(x), more precisely
+ -1 < Digamma(x) + 1/x < 0 for -0.2 < x < 0.2, thus:
+ (i) either x is a power of two, then 1/x is exactly representable, and
+ as long as 1/2*ulp(1/x) > 1, we can conclude;
+ (ii) otherwise assume x has <= n bits, and y has <= n+1 bits, then
+ |y + 1/x| >= 2^(-2n) ufp(y), where ufp means unit in first place.
+ Since |Digamma(x) + 1/x| <= 1, if 2^(-2n) ufp(y) >= 2, then
+ |y - Digamma(x)| >= 2^(-2n-1)ufp(y), and rounding -1/x gives the correct result.
+ If x < 2^E, then y > 2^(-E), thus ufp(y) > 2^(-E-1).
+ A sufficient condition is thus EXP(x) <= -2 MAX(PREC(x),PREC(Y)). */
+ if (MPFR_EXP(x) < -2)
+ {
+ if (MPFR_EXP(x) <= -2 * (mpfr_exp_t) MAX(MPFR_PREC(x), MPFR_PREC(y)))
+ {
+ int signx = MPFR_SIGN(x);
+ inex = mpfr_si_div (y, -1, x, rnd_mode);
+ if (inex == 0) /* x is a power of two */
+ { /* result always -1/x, except when rounding down */
+ if (rnd_mode == MPFR_RNDA)
+ rnd_mode = (signx > 0) ? MPFR_RNDD : MPFR_RNDU;
+ if (rnd_mode == MPFR_RNDZ)
+ rnd_mode = (signx > 0) ? MPFR_RNDU : MPFR_RNDD;
+ if (rnd_mode == MPFR_RNDU)
+ inex = 1;
+ else if (rnd_mode == MPFR_RNDD)
+ {
+ mpfr_nextbelow (y);
+ inex = -1;
+ }
+ else /* nearest */
+ inex = 1;
+ }
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ goto end;
+ }
+ }
+
+ if (MPFR_IS_NEG(x))
+ inex = mpfr_digamma_reflection (y, x, rnd_mode);
+ /* if x < 1/2 we use the reflection formula */
+ else if (MPFR_EXP(x) < 0)
+ inex = mpfr_digamma_reflection (y, x, rnd_mode);
+ else
+ inex = mpfr_digamma_positive (y, x, rnd_mode);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/dim.c b/Build/source/libs/mpfr/mpfr-src/src/dim.c
new file mode 100644
index 00000000000..8a25cbbbbf4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/dim.c
@@ -0,0 +1,48 @@
+/* mpfr_dim -- positive difference
+
+Copyright 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* dim (x,y) is defined as:
+
+ x-y if x > y
+ +0 if x <= y
+*/
+
+int
+mpfr_dim (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_IS_NAN(x) || MPFR_IS_NAN(y))
+ {
+ MPFR_SET_NAN(z);
+ MPFR_RET_NAN;
+ }
+
+ if (mpfr_cmp (x,y) > 0)
+ return mpfr_sub (z, x, y, rnd_mode);
+ else
+ {
+ MPFR_SET_ZERO(z);
+ MPFR_SET_POS(z);
+ MPFR_RET(0);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/div.c b/Build/source/libs/mpfr/mpfr-src/src/div.c
new file mode 100644
index 00000000000..8b3aabe9ebb
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/div.c
@@ -0,0 +1,794 @@
+/* mpfr_div -- divide two floating-point numbers
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* References:
+ [1] Short Division of Long Integers, David Harvey and Paul Zimmermann,
+ Proceedings of the 20th Symposium on Computer Arithmetic (ARITH-20),
+ July 25-27, 2011, pages 7-14.
+*/
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#ifdef DEBUG2
+#define mpfr_mpn_print(ap,n) mpfr_mpn_print3 (ap,n,MPFR_LIMB_ZERO)
+static void
+mpfr_mpn_print3 (mpfr_limb_ptr ap, mp_size_t n, mp_limb_t cy)
+{
+ mp_size_t i;
+ for (i = 0; i < n; i++)
+ printf ("+%lu*2^%lu", (unsigned long) ap[i], (unsigned long)
+ (GMP_NUMB_BITS * i));
+ if (cy)
+ printf ("+2^%lu", (unsigned long) (GMP_NUMB_BITS * n));
+ printf ("\n");
+}
+#endif
+
+/* check if {ap, an} is zero */
+static int
+mpfr_mpn_cmpzero (mpfr_limb_ptr ap, mp_size_t an)
+{
+ while (an > 0)
+ if (MPFR_LIKELY(ap[--an] != MPFR_LIMB_ZERO))
+ return 1;
+ return 0;
+}
+
+/* compare {ap, an} and {bp, bn} >> extra,
+ aligned by the more significant limbs.
+ Takes into account bp[0] for extra=1.
+*/
+static int
+mpfr_mpn_cmp_aux (mpfr_limb_ptr ap, mp_size_t an,
+ mpfr_limb_ptr bp, mp_size_t bn, int extra)
+{
+ int cmp = 0;
+ mp_size_t k;
+ mp_limb_t bb;
+
+ if (an >= bn)
+ {
+ k = an - bn;
+ while (cmp == 0 && bn > 0)
+ {
+ bn --;
+ bb = (extra) ? ((bp[bn+1] << (GMP_NUMB_BITS - 1)) | (bp[bn] >> 1))
+ : bp[bn];
+ cmp = (ap[k + bn] > bb) ? 1 : ((ap[k + bn] < bb) ? -1 : 0);
+ }
+ bb = (extra) ? bp[0] << (GMP_NUMB_BITS - 1) : MPFR_LIMB_ZERO;
+ while (cmp == 0 && k > 0)
+ {
+ k--;
+ cmp = (ap[k] > bb) ? 1 : ((ap[k] < bb) ? -1 : 0);
+ bb = MPFR_LIMB_ZERO; /* ensure we consider only once bp[0] & 1 */
+ }
+ if (cmp == 0 && bb != MPFR_LIMB_ZERO)
+ cmp = -1;
+ }
+ else /* an < bn */
+ {
+ k = bn - an;
+ while (cmp == 0 && an > 0)
+ {
+ an --;
+ bb = (extra) ? ((bp[k+an+1] << (GMP_NUMB_BITS - 1)) | (bp[k+an] >> 1))
+ : bp[k+an];
+ if (ap[an] > bb)
+ cmp = 1;
+ else if (ap[an] < bb)
+ cmp = -1;
+ }
+ while (cmp == 0 && k > 0)
+ {
+ k--;
+ bb = (extra) ? ((bp[k+1] << (GMP_NUMB_BITS - 1)) | (bp[k] >> 1))
+ : bp[k];
+ cmp = (bb != MPFR_LIMB_ZERO) ? -1 : 0;
+ }
+ if (cmp == 0 && extra && (bp[0] & MPFR_LIMB_ONE))
+ cmp = -1;
+ }
+ return cmp;
+}
+
+/* {ap, n} <- {ap, n} - {bp, n} >> extra - cy, with cy = 0 or 1.
+ Return borrow out.
+*/
+static mp_limb_t
+mpfr_mpn_sub_aux (mpfr_limb_ptr ap, mpfr_limb_ptr bp, mp_size_t n,
+ mp_limb_t cy, int extra)
+{
+ mp_limb_t bb, rp;
+
+ MPFR_ASSERTD (cy <= 1);
+ while (n--)
+ {
+ bb = (extra) ? ((bp[1] << (GMP_NUMB_BITS-1)) | (bp[0] >> 1)) : bp[0];
+ rp = ap[0] - bb - cy;
+ cy = (ap[0] < bb) || (cy && ~rp == MPFR_LIMB_ZERO) ?
+ MPFR_LIMB_ONE : MPFR_LIMB_ZERO;
+ ap[0] = rp;
+ ap ++;
+ bp ++;
+ }
+ MPFR_ASSERTD (cy <= 1);
+ return cy;
+}
+
+int
+mpfr_div (mpfr_ptr q, mpfr_srcptr u, mpfr_srcptr v, mpfr_rnd_t rnd_mode)
+{
+ mp_size_t q0size = MPFR_LIMB_SIZE(q); /* number of limbs of destination */
+ mp_size_t usize = MPFR_LIMB_SIZE(u);
+ mp_size_t vsize = MPFR_LIMB_SIZE(v);
+ mp_size_t qsize; /* number of limbs wanted for the computed quotient */
+ mp_size_t qqsize;
+ mp_size_t k;
+ mpfr_limb_ptr q0p = MPFR_MANT(q), qp;
+ mpfr_limb_ptr up = MPFR_MANT(u);
+ mpfr_limb_ptr vp = MPFR_MANT(v);
+ mpfr_limb_ptr ap;
+ mpfr_limb_ptr bp;
+ mp_limb_t qh;
+ mp_limb_t sticky_u = MPFR_LIMB_ZERO;
+ mp_limb_t low_u;
+ mp_limb_t sticky_v = MPFR_LIMB_ZERO;
+ mp_limb_t sticky;
+ mp_limb_t sticky3;
+ mp_limb_t round_bit = MPFR_LIMB_ZERO;
+ mpfr_exp_t qexp;
+ int sign_quotient;
+ int extra_bit;
+ int sh, sh2;
+ int inex;
+ int like_rndz;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_LOG_FUNC (
+ ("u[%Pu]=%.*Rg v[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec(u), mpfr_log_prec, u,
+ mpfr_get_prec (v),mpfr_log_prec, v, rnd_mode),
+ ("q[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(q), mpfr_log_prec, q, inex));
+
+ /**************************************************************************
+ * *
+ * This part of the code deals with special cases *
+ * *
+ **************************************************************************/
+
+ if (MPFR_UNLIKELY(MPFR_ARE_SINGULAR(u,v)))
+ {
+ if (MPFR_IS_NAN(u) || MPFR_IS_NAN(v))
+ {
+ MPFR_SET_NAN(q);
+ MPFR_RET_NAN;
+ }
+ sign_quotient = MPFR_MULT_SIGN( MPFR_SIGN(u) , MPFR_SIGN(v) );
+ MPFR_SET_SIGN(q, sign_quotient);
+ if (MPFR_IS_INF(u))
+ {
+ if (MPFR_IS_INF(v))
+ {
+ MPFR_SET_NAN(q);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_SET_INF(q);
+ MPFR_RET(0);
+ }
+ }
+ else if (MPFR_IS_INF(v))
+ {
+ MPFR_SET_ZERO (q);
+ MPFR_RET (0);
+ }
+ else if (MPFR_IS_ZERO (v))
+ {
+ if (MPFR_IS_ZERO (u))
+ {
+ MPFR_SET_NAN(q);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_ASSERTD (! MPFR_IS_INF (u));
+ MPFR_SET_INF(q);
+ mpfr_set_divby0 ();
+ MPFR_RET(0);
+ }
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (u));
+ MPFR_SET_ZERO (q);
+ MPFR_RET (0);
+ }
+ }
+
+ /**************************************************************************
+ * *
+ * End of the part concerning special values. *
+ * *
+ **************************************************************************/
+
+ MPFR_TMP_MARK(marker);
+
+ /* set sign */
+ sign_quotient = MPFR_MULT_SIGN( MPFR_SIGN(u) , MPFR_SIGN(v) );
+ MPFR_SET_SIGN(q, sign_quotient);
+
+ /* determine if an extra bit comes from the division, i.e. if the
+ significand of u (as a fraction in [1/2, 1[) is larger than that
+ of v */
+ if (MPFR_LIKELY(up[usize - 1] != vp[vsize - 1]))
+ extra_bit = (up[usize - 1] > vp[vsize - 1]) ? 1 : 0;
+ else /* most significant limbs are equal, must look at further limbs */
+ {
+ mp_size_t l;
+
+ k = usize - 1;
+ l = vsize - 1;
+ while (k != 0 && l != 0 && up[--k] == vp[--l]);
+ /* now k=0 or l=0 or up[k] != vp[l] */
+ if (up[k] > vp[l])
+ extra_bit = 1;
+ else if (up[k] < vp[l])
+ extra_bit = 0;
+ /* now up[k] = vp[l], thus either k=0 or l=0 */
+ else if (l == 0) /* no more divisor limb */
+ extra_bit = 1;
+ else /* k=0: no more dividend limb */
+ extra_bit = mpfr_mpn_cmpzero (vp, l) == 0;
+ }
+#ifdef DEBUG
+ printf ("extra_bit=%d\n", extra_bit);
+#endif
+
+ /* set exponent */
+ qexp = MPFR_GET_EXP (u) - MPFR_GET_EXP (v) + extra_bit;
+
+ /* sh is the number of zero bits in the low limb of the quotient */
+ MPFR_UNSIGNED_MINUS_MODULO(sh, MPFR_PREC(q));
+
+ like_rndz = rnd_mode == MPFR_RNDZ ||
+ rnd_mode == (sign_quotient < 0 ? MPFR_RNDU : MPFR_RNDD);
+
+ /**************************************************************************
+ * *
+ * We first try Mulders' short division (for large operands) *
+ * *
+ **************************************************************************/
+
+ if (MPFR_UNLIKELY(q0size >= MPFR_DIV_THRESHOLD &&
+ vsize >= MPFR_DIV_THRESHOLD))
+ {
+ mp_size_t n = q0size + 1; /* we will perform a short (2n)/n division */
+ mpfr_limb_ptr ap, bp, qp;
+ mpfr_prec_t p;
+
+ /* since Mulders' short division clobbers the dividend, we have to
+ copy it */
+ ap = MPFR_TMP_LIMBS_ALLOC (n + n);
+ if (usize >= n + n) /* truncate the dividend */
+ MPN_COPY(ap, up + usize - (n + n), n + n);
+ else /* zero-pad the dividend */
+ {
+ MPN_COPY(ap + (n + n) - usize, up, usize);
+ MPN_ZERO(ap, (n + n) - usize);
+ }
+
+ if (vsize >= n) /* truncate the divisor */
+ bp = vp + vsize - n;
+ else /* zero-pad the divisor */
+ {
+ bp = MPFR_TMP_LIMBS_ALLOC (n);
+ MPN_COPY(bp + n - vsize, vp, vsize);
+ MPN_ZERO(bp, n - vsize);
+ }
+
+ qp = MPFR_TMP_LIMBS_ALLOC (n);
+ qh = mpfr_divhigh_n (qp, ap, bp, n);
+ /* in all cases, the error is at most (2n+2) ulps on qh*B^n+{qp,n},
+ cf algorithms.tex */
+
+ p = n * GMP_NUMB_BITS - MPFR_INT_CEIL_LOG2 (2 * n + 2);
+ /* if qh is 1, then we need only PREC(q)-1 bits of {qp,n},
+ if rnd=RNDN, we need to be able to round with a directed rounding
+ and one more bit */
+ if (MPFR_LIKELY (mpfr_round_p (qp, n, p,
+ MPFR_PREC(q) + (rnd_mode == MPFR_RNDN) - qh)))
+ {
+ /* we can round correctly whatever the rounding mode */
+ if (qh == 0)
+ MPN_COPY (q0p, qp + 1, q0size);
+ else
+ {
+ mpn_rshift (q0p, qp + 1, q0size, 1);
+ q0p[q0size - 1] ^= MPFR_LIMB_HIGHBIT;
+ }
+ q0p[0] &= ~MPFR_LIMB_MASK(sh); /* put to zero low sh bits */
+
+ if (rnd_mode == MPFR_RNDN) /* round to nearest */
+ {
+ /* we know we can round, thus we are never in the even rule case:
+ if the round bit is 0, we truncate
+ if the round bit is 1, we add 1 */
+ if (qh == 0)
+ {
+ if (sh > 0)
+ round_bit = (qp[1] >> (sh - 1)) & 1;
+ else
+ round_bit = qp[0] >> (GMP_NUMB_BITS - 1);
+ }
+ else /* qh = 1 */
+ round_bit = (qp[1] >> sh) & 1;
+ if (round_bit == 0)
+ {
+ inex = -1;
+ goto truncate;
+ }
+ else /* round_bit = 1 */
+ goto add_one_ulp;
+ }
+ else if (like_rndz == 0) /* round away */
+ goto add_one_ulp;
+ /* else round to zero: nothing to do */
+ else
+ {
+ inex = -1;
+ goto truncate;
+ }
+ }
+ }
+
+ /**************************************************************************
+ * *
+ * Mulders' short division failed: we revert to integer division *
+ * *
+ **************************************************************************/
+
+ if (MPFR_UNLIKELY(rnd_mode == MPFR_RNDN && sh == 0))
+ { /* we compute the quotient with one more limb, in order to get
+ the round bit in the quotient, and the remainder only contains
+ sticky bits */
+ qsize = q0size + 1;
+ /* need to allocate memory for the quotient */
+ qp = MPFR_TMP_LIMBS_ALLOC (qsize);
+ }
+ else
+ {
+ qsize = q0size;
+ qp = q0p; /* directly put the quotient in the destination */
+ }
+ qqsize = qsize + qsize;
+
+ /* prepare the dividend */
+ ap = MPFR_TMP_LIMBS_ALLOC (qqsize);
+ if (MPFR_LIKELY(qqsize > usize)) /* use the full dividend */
+ {
+ k = qqsize - usize; /* k > 0 */
+ MPN_ZERO(ap, k);
+ if (extra_bit)
+ ap[k - 1] = mpn_rshift (ap + k, up, usize, 1);
+ else
+ MPN_COPY(ap + k, up, usize);
+ }
+ else /* truncate the dividend */
+ {
+ k = usize - qqsize;
+ if (extra_bit)
+ sticky_u = mpn_rshift (ap, up + k, qqsize, 1);
+ else
+ MPN_COPY(ap, up + k, qqsize);
+ sticky_u = sticky_u || mpfr_mpn_cmpzero (up, k);
+ }
+ low_u = sticky_u;
+
+ /* now sticky_u is non-zero iff the truncated part of u is non-zero */
+
+ /* prepare the divisor */
+ if (MPFR_LIKELY(vsize >= qsize))
+ {
+ k = vsize - qsize;
+ if (qp != vp)
+ bp = vp + k; /* avoid copying the divisor */
+ else /* need to copy, since mpn_divrem doesn't allow overlap
+ between quotient and divisor, necessarily k = 0
+ since quotient and divisor are the same mpfr variable */
+ {
+ bp = MPFR_TMP_LIMBS_ALLOC (qsize);
+ MPN_COPY(bp, vp, vsize);
+ }
+ sticky_v = sticky_v || mpfr_mpn_cmpzero (vp, k);
+ k = 0;
+ }
+ else /* vsize < qsize: small divisor case */
+ {
+ bp = vp;
+ k = qsize - vsize;
+ }
+
+ /**************************************************************************
+ * *
+ * Here we perform the real division of {ap+k,qqsize-k} by {bp,qsize-k} *
+ * *
+ **************************************************************************/
+
+ /* if Mulders' short division failed, we revert to division with remainder */
+ qh = mpn_divrem (qp, 0, ap + k, qqsize - k, bp, qsize - k);
+ /* warning: qh may be 1 if u1 == v1, but u < v */
+#ifdef DEBUG2
+ printf ("q="); mpfr_mpn_print (qp, qsize);
+ printf ("r="); mpfr_mpn_print (ap, qsize);
+#endif
+
+ k = qsize;
+ sticky_u = sticky_u || mpfr_mpn_cmpzero (ap, k);
+
+ sticky = sticky_u | sticky_v;
+
+ /* now sticky is non-zero iff one of the following holds:
+ (a) the truncated part of u is non-zero
+ (b) the truncated part of v is non-zero
+ (c) the remainder from division is non-zero */
+
+ if (MPFR_LIKELY(qsize == q0size))
+ {
+ sticky3 = qp[0] & MPFR_LIMB_MASK(sh); /* does nothing when sh=0 */
+ sh2 = sh;
+ }
+ else /* qsize = q0size + 1: only happens when rnd_mode=MPFR_RNDN and sh=0 */
+ {
+ MPN_COPY (q0p, qp + 1, q0size);
+ sticky3 = qp[0];
+ sh2 = GMP_NUMB_BITS;
+ }
+ qp[0] ^= sticky3;
+ /* sticky3 contains the truncated bits from the quotient,
+ including the round bit, and 1 <= sh2 <= GMP_NUMB_BITS
+ is the number of bits in sticky3 */
+ inex = (sticky != MPFR_LIMB_ZERO) || (sticky3 != MPFR_LIMB_ZERO);
+#ifdef DEBUG
+ printf ("sticky=%lu sticky3=%lu inex=%d\n",
+ (unsigned long) sticky, (unsigned long) sticky3, inex);
+#endif
+
+ /* to round, we distinguish two cases:
+ (a) vsize <= qsize: we used the full divisor
+ (b) vsize > qsize: the divisor was truncated
+ */
+
+#ifdef DEBUG
+ printf ("vsize=%lu qsize=%lu\n",
+ (unsigned long) vsize, (unsigned long) qsize);
+#endif
+ if (MPFR_LIKELY(vsize <= qsize)) /* use the full divisor */
+ {
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ round_bit = sticky3 & (MPFR_LIMB_ONE << (sh2 - 1));
+ sticky = (sticky3 ^ round_bit) | sticky_u;
+ }
+ else if (like_rndz || inex == 0)
+ sticky = (inex == 0) ? MPFR_LIMB_ZERO : MPFR_LIMB_ONE;
+ else /* round away from zero */
+ sticky = MPFR_LIMB_ONE;
+ goto case_1;
+ }
+ else /* vsize > qsize: need to truncate the divisor */
+ {
+ if (inex == 0)
+ goto truncate;
+ else
+ {
+ /* We know the estimated quotient is an upper bound of the exact
+ quotient (with rounding toward zero), with a difference of at
+ most 2 in qp[0].
+ Thus we can round except when sticky3 is 000...000 or 000...001
+ for directed rounding, and 100...000 or 100...001 for rounding
+ to nearest. (For rounding to nearest, we cannot determine the
+ inexact flag for 000...000 or 000...001.)
+ */
+ mp_limb_t sticky3orig = sticky3;
+ if (rnd_mode == MPFR_RNDN)
+ {
+ round_bit = sticky3 & (MPFR_LIMB_ONE << (sh2 - 1));
+ sticky3 = sticky3 ^ round_bit;
+#ifdef DEBUG
+ printf ("rb=%lu sb=%lu\n",
+ (unsigned long) round_bit, (unsigned long) sticky3);
+#endif
+ }
+ if (sticky3 != MPFR_LIMB_ZERO && sticky3 != MPFR_LIMB_ONE)
+ {
+ sticky = sticky3;
+ goto case_1;
+ }
+ else /* hard case: we have to compare q1 * v0 and r + low(u),
+ where q1 * v0 has qsize + (vsize-qsize) = vsize limbs, and
+ r + low(u) has qsize + (usize-2*qsize) = usize-qsize limbs */
+ {
+ mp_size_t l;
+ mpfr_limb_ptr sp;
+ int cmp_s_r;
+ mp_limb_t qh2;
+
+ sp = MPFR_TMP_LIMBS_ALLOC (vsize);
+ k = vsize - qsize;
+ /* sp <- {qp, qsize} * {vp, vsize-qsize} */
+ qp[0] ^= sticky3orig; /* restore original quotient */
+ if (qsize >= k)
+ mpn_mul (sp, qp, qsize, vp, k);
+ else
+ mpn_mul (sp, vp, k, qp, qsize);
+ if (qh)
+ qh2 = mpn_add_n (sp + qsize, sp + qsize, vp, k);
+ else
+ qh2 = (mp_limb_t) 0;
+ qp[0] ^= sticky3orig; /* restore truncated quotient */
+
+ /* compare qh2 + {sp, k + qsize} to {ap, qsize} + low(u) */
+ cmp_s_r = (qh2 != 0) ? 1 : mpn_cmp (sp + k, ap, qsize);
+ if (cmp_s_r == 0) /* compare {sp, k} and low(u) */
+ {
+ cmp_s_r = (usize >= qqsize) ?
+ mpfr_mpn_cmp_aux (sp, k, up, usize - qqsize, extra_bit) :
+ mpfr_mpn_cmpzero (sp, k);
+ }
+#ifdef DEBUG
+ printf ("cmp(q*v0,r+u0)=%d\n", cmp_s_r);
+#endif
+ /* now cmp_s_r > 0 if {sp, vsize} > {ap, qsize} + low(u)
+ cmp_s_r = 0 if {sp, vsize} = {ap, qsize} + low(u)
+ cmp_s_r < 0 if {sp, vsize} < {ap, qsize} + low(u) */
+ if (cmp_s_r <= 0) /* quotient is in [q1, q1+1) */
+ {
+ sticky = (cmp_s_r == 0) ? sticky3 : MPFR_LIMB_ONE;
+ goto case_1;
+ }
+ else /* cmp_s_r > 0, quotient is < q1: to determine if it is
+ in [q1-2,q1-1] or in [q1-1,q1], we need to subtract
+ the low part u0 of the dividend u0 from q*v0 */
+ {
+ mp_limb_t cy = MPFR_LIMB_ZERO;
+
+ /* subtract low(u)>>extra_bit if non-zero */
+ if (qh2 != 0) /* whatever the value of {up, m + k}, it
+ will be smaller than qh2 + {sp, k} */
+ cmp_s_r = 1;
+ else
+ {
+ if (low_u != MPFR_LIMB_ZERO)
+ {
+ mp_size_t m;
+ l = usize - qqsize; /* number of low limbs in u */
+ m = (l > k) ? l - k : 0;
+ cy = (extra_bit) ?
+ (up[m] & MPFR_LIMB_ONE) : MPFR_LIMB_ZERO;
+ if (l >= k) /* u0 has more limbs than s:
+ first look if {up, m} is not zero,
+ and compare {sp, k} and {up + m, k} */
+ {
+ cy = cy || mpfr_mpn_cmpzero (up, m);
+ low_u = cy;
+ cy = mpfr_mpn_sub_aux (sp, up + m, k,
+ cy, extra_bit);
+ }
+ else /* l < k: s has more limbs than u0 */
+ {
+ low_u = MPFR_LIMB_ZERO;
+ if (cy != MPFR_LIMB_ZERO)
+ cy = mpn_sub_1 (sp + k - l - 1, sp + k - l - 1,
+ 1, MPFR_LIMB_HIGHBIT);
+ cy = mpfr_mpn_sub_aux (sp + k - l, up, l,
+ cy, extra_bit);
+ }
+ }
+ MPFR_ASSERTD (cy <= 1);
+ cy = mpn_sub_1 (sp + k, sp + k, qsize, cy);
+ /* subtract r */
+ cy += mpn_sub_n (sp + k, sp + k, ap, qsize);
+ MPFR_ASSERTD (cy <= 1);
+ /* now compare {sp, ssize} to v */
+ cmp_s_r = mpn_cmp (sp, vp, vsize);
+ if (cmp_s_r == 0 && low_u != MPFR_LIMB_ZERO)
+ cmp_s_r = 1; /* since in fact we subtracted
+ less than 1 */
+ }
+#ifdef DEBUG
+ printf ("cmp(q*v0-(r+u0),v)=%d\n", cmp_s_r);
+#endif
+ if (cmp_s_r <= 0) /* q1-1 <= u/v < q1 */
+ {
+ if (sticky3 == MPFR_LIMB_ONE)
+ { /* q1-1 is either representable (directed rounding),
+ or the middle of two numbers (nearest) */
+ sticky = (cmp_s_r) ? MPFR_LIMB_ONE : MPFR_LIMB_ZERO;
+ goto case_1;
+ }
+ /* now necessarily sticky3=0 */
+ else if (round_bit == MPFR_LIMB_ZERO)
+ { /* round_bit=0, sticky3=0: q1-1 is exact only
+ when sh=0 */
+ inex = (cmp_s_r || sh) ? -1 : 0;
+ if (rnd_mode == MPFR_RNDN ||
+ (! like_rndz && inex != 0))
+ {
+ inex = 1;
+ goto truncate_check_qh;
+ }
+ else /* round down */
+ goto sub_one_ulp;
+ }
+ else /* sticky3=0, round_bit=1 ==> rounding to nearest */
+ {
+ inex = cmp_s_r;
+ goto truncate;
+ }
+ }
+ else /* q1-2 < u/v < q1-1 */
+ {
+ /* if rnd=MPFR_RNDN, the result is q1 when
+ q1-2 >= q1-2^(sh-1), i.e. sh >= 2,
+ otherwise (sh=1) it is q1-2 */
+ if (rnd_mode == MPFR_RNDN) /* sh > 0 */
+ {
+ /* Case sh=1: sb=0 always, and q1-rb is exactly
+ representable, like q1-rb-2.
+ rb action
+ 0 subtract two ulps, inex=-1
+ 1 truncate, inex=1
+
+ Case sh>1: one ulp is 2^(sh-1) >= 2
+ rb sb action
+ 0 0 truncate, inex=1
+ 0 1 truncate, inex=1
+ 1 x truncate, inex=-1
+ */
+ if (sh == 1)
+ {
+ if (round_bit == MPFR_LIMB_ZERO)
+ {
+ inex = -1;
+ sh = 0;
+ goto sub_two_ulp;
+ }
+ else
+ {
+ inex = 1;
+ goto truncate_check_qh;
+ }
+ }
+ else /* sh > 1 */
+ {
+ inex = (round_bit == MPFR_LIMB_ZERO) ? 1 : -1;
+ goto truncate_check_qh;
+ }
+ }
+ else if (like_rndz)
+ {
+ /* the result is down(q1-2), i.e. subtract one
+ ulp if sh > 0, and two ulps if sh=0 */
+ inex = -1;
+ if (sh > 0)
+ goto sub_one_ulp;
+ else
+ goto sub_two_ulp;
+ }
+ /* if round away from zero, the result is up(q1-1),
+ which is q1 unless sh = 0, where it is q1-1 */
+ else
+ {
+ inex = 1;
+ if (sh > 0)
+ goto truncate_check_qh;
+ else /* sh = 0 */
+ goto sub_one_ulp;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ case_1: /* quotient is in [q1, q1+1),
+ round_bit is the round_bit (0 for directed rounding),
+ sticky the sticky bit */
+ if (like_rndz || (round_bit == MPFR_LIMB_ZERO && sticky == MPFR_LIMB_ZERO))
+ {
+ inex = round_bit == MPFR_LIMB_ZERO && sticky == MPFR_LIMB_ZERO ? 0 : -1;
+ goto truncate;
+ }
+ else if (rnd_mode == MPFR_RNDN) /* sticky <> 0 or round <> 0 */
+ {
+ if (round_bit == MPFR_LIMB_ZERO) /* necessarily sticky <> 0 */
+ {
+ inex = -1;
+ goto truncate;
+ }
+ /* round_bit = 1 */
+ else if (sticky != MPFR_LIMB_ZERO)
+ goto add_one_ulp; /* inex=1 */
+ else /* round_bit=1, sticky=0 */
+ goto even_rule;
+ }
+ else /* round away from zero, sticky <> 0 */
+ goto add_one_ulp; /* with inex=1 */
+
+ sub_two_ulp:
+ /* we cannot subtract MPFR_LIMB_MPFR_LIMB_ONE << (sh+1) since this is
+ undefined for sh = GMP_NUMB_BITS */
+ qh -= mpn_sub_1 (q0p, q0p, q0size, MPFR_LIMB_ONE << sh);
+ /* go through */
+
+ sub_one_ulp:
+ qh -= mpn_sub_1 (q0p, q0p, q0size, MPFR_LIMB_ONE << sh);
+ /* go through truncate_check_qh */
+
+ truncate_check_qh:
+ if (qh)
+ {
+ if (MPFR_LIKELY (qexp < MPFR_EXP_MAX))
+ qexp ++;
+ /* else qexp is now incorrect, but one will still get an overflow */
+ q0p[q0size - 1] = MPFR_LIMB_HIGHBIT;
+ }
+ goto truncate;
+
+ even_rule: /* has to set inex */
+ inex = (q0p[0] & (MPFR_LIMB_ONE << sh)) ? 1 : -1;
+ if (inex < 0)
+ goto truncate;
+ /* else go through add_one_ulp */
+
+ add_one_ulp:
+ inex = 1; /* always here */
+ if (mpn_add_1 (q0p, q0p, q0size, MPFR_LIMB_ONE << sh))
+ {
+ if (MPFR_LIKELY (qexp < MPFR_EXP_MAX))
+ qexp ++;
+ /* else qexp is now incorrect, but one will still get an overflow */
+ q0p[q0size - 1] = MPFR_LIMB_HIGHBIT;
+ }
+
+ truncate: /* inex already set */
+
+ MPFR_TMP_FREE(marker);
+
+ /* check for underflow/overflow */
+ if (MPFR_UNLIKELY(qexp > __gmpfr_emax))
+ return mpfr_overflow (q, rnd_mode, sign_quotient);
+ else if (MPFR_UNLIKELY(qexp < __gmpfr_emin))
+ {
+ if (rnd_mode == MPFR_RNDN && ((qexp < __gmpfr_emin - 1) ||
+ (inex >= 0 && mpfr_powerof2_raw (q))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (q, rnd_mode, sign_quotient);
+ }
+ MPFR_SET_EXP(q, qexp);
+
+ inex *= sign_quotient;
+ MPFR_RET (inex);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/div_2exp.c b/Build/source/libs/mpfr/mpfr-src/src/div_2exp.c
new file mode 100644
index 00000000000..909e798883e
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/div_2exp.c
@@ -0,0 +1,33 @@
+/* mpfr_div_2exp -- divide a floating-point number by a power of two
+
+Copyright 1999, 2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Obsolete function, use mpfr_div_2ui or mpfr_div_2si instead. */
+
+#undef mpfr_div_2exp
+
+int
+mpfr_div_2exp (mpfr_ptr y, mpfr_srcptr x, unsigned long int n, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_div_2ui (y, x, n, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/div_2si.c b/Build/source/libs/mpfr/mpfr-src/src/div_2si.c
new file mode 100644
index 00000000000..c7da6a05849
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/div_2si.c
@@ -0,0 +1,60 @@
+/* mpfr_div_2si -- divide a floating-point number by a power of two
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_div_2si (mpfr_ptr y, mpfr_srcptr x, long int n, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg n=%ld rnd=%d",
+ mpfr_get_prec(x), mpfr_log_prec, x, n, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec(y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return mpfr_set (y, x, rnd_mode);
+ else
+ {
+ mpfr_exp_t exp = MPFR_GET_EXP (x);
+ MPFR_SETRAW (inexact, y, x, exp, rnd_mode);
+ if (MPFR_UNLIKELY( n > 0 && (__gmpfr_emin > MPFR_EMAX_MAX - n ||
+ exp < __gmpfr_emin + n)) )
+ {
+ if (rnd_mode == MPFR_RNDN &&
+ (__gmpfr_emin > MPFR_EMAX_MAX - (n - 1) ||
+ exp < __gmpfr_emin + (n - 1) ||
+ (inexact >= 0 && mpfr_powerof2_raw (y))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y));
+ }
+ else if (MPFR_UNLIKELY(n < 0 && (__gmpfr_emax < MPFR_EMIN_MIN - n ||
+ exp > __gmpfr_emax + n)) )
+ return mpfr_overflow (y, rnd_mode, MPFR_SIGN(y));
+
+ MPFR_SET_EXP (y, exp - n);
+ }
+
+ MPFR_RET (inexact);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/div_2ui.c b/Build/source/libs/mpfr/mpfr-src/src/div_2ui.c
new file mode 100644
index 00000000000..12df43bb760
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/div_2ui.c
@@ -0,0 +1,61 @@
+/* mpfr_div_2ui -- divide a floating-point number by a power of two
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_div_2ui (mpfr_ptr y, mpfr_srcptr x, unsigned long n, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg n=%lu rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, n,
+ rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return mpfr_set (y, x, rnd_mode);
+ else
+ {
+ mpfr_exp_t exp = MPFR_GET_EXP (x);
+ mpfr_uexp_t diffexp;
+
+ MPFR_SETRAW (inexact, y, x, exp, rnd_mode);
+ diffexp = (mpfr_uexp_t) exp - (mpfr_uexp_t) (__gmpfr_emin - 1);
+ if (MPFR_UNLIKELY (n >= diffexp)) /* exp - n <= emin - 1 */
+ {
+ if (rnd_mode == MPFR_RNDN &&
+ (n > diffexp || (inexact >= 0 && mpfr_powerof2_raw (y))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (y, rnd_mode, MPFR_SIGN (y));
+ }
+ /* exp - n >= emin (no underflow, no integer overflow) */
+ while (n > LONG_MAX)
+ {
+ n -= LONG_MAX;
+ exp -= LONG_MAX; /* note: signed values */
+ }
+ MPFR_SET_EXP (y, exp - (long) n);
+ }
+
+ MPFR_RET (inexact);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/div_d.c b/Build/source/libs/mpfr/mpfr-src/src/div_d.c
new file mode 100644
index 00000000000..4ee009e038b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/div_d.c
@@ -0,0 +1,51 @@
+/* mpfr_div_d -- divide a multiple precision floating-point number
+ by a machine double precision float
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_div_d (mpfr_ptr a, mpfr_srcptr b, double c, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t d;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC (
+ ("b[%Pu]=%.*Rg c%.20g rnd=%d", mpfr_get_prec (b), mpfr_log_prec, b, c,
+ rnd_mode),
+ ("a[%Pu]=%.*Rg", mpfr_get_prec (a), mpfr_log_prec, a));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ inexact = mpfr_set_d (d, c, rnd_mode);
+ MPFR_ASSERTN (inexact == 0);
+
+ mpfr_clear_flags ();
+ inexact = mpfr_div (a, b, d, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+
+ mpfr_clear(d);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (a, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/div_ui.c b/Build/source/libs/mpfr/mpfr-src/src/div_ui.c
new file mode 100644
index 00000000000..322a1351388
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/div_ui.c
@@ -0,0 +1,281 @@
+/* mpfr_div_{ui,si} -- divide a floating-point number by a machine integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* returns 0 if result exact, non-zero otherwise */
+int
+mpfr_div_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode)
+{
+ long i;
+ int sh;
+ mp_size_t xn, yn, dif;
+ mp_limb_t *xp, *yp, *tmp, c, d;
+ mpfr_exp_t exp;
+ int inexact, middle = 1, nexttoinf;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg u=%lu rnd=%d",
+ mpfr_get_prec(x), mpfr_log_prec, x, u, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec(y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO(x));
+ if (u == 0) /* 0/0 is NaN */
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_SET_ZERO(y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET(0);
+ }
+ }
+ }
+ else if (MPFR_UNLIKELY (u <= 1))
+ {
+ if (u < 1)
+ {
+ /* x/0 is Inf since x != 0*/
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ mpfr_set_divby0 ();
+ MPFR_RET (0);
+ }
+ else /* y = x/1 = x */
+ return mpfr_set (y, x, rnd_mode);
+ }
+ else if (MPFR_UNLIKELY (IS_POW2 (u)))
+ return mpfr_div_2si (y, x, MPFR_INT_CEIL_LOG2 (u), rnd_mode);
+
+ MPFR_SET_SAME_SIGN (y, x);
+
+ MPFR_TMP_MARK (marker);
+ xn = MPFR_LIMB_SIZE (x);
+ yn = MPFR_LIMB_SIZE (y);
+
+ xp = MPFR_MANT (x);
+ yp = MPFR_MANT (y);
+ exp = MPFR_GET_EXP (x);
+
+ dif = yn + 1 - xn;
+
+ /* we need to store yn+1 = xn + dif limbs of the quotient */
+ /* don't use tmp=yp since the mpn_lshift call below requires yp >= tmp+1 */
+ tmp = MPFR_TMP_LIMBS_ALLOC (yn + 1);
+
+ c = (mp_limb_t) u;
+ MPFR_ASSERTN (u == c);
+ if (dif >= 0)
+ c = mpn_divrem_1 (tmp, dif, xp, xn, c); /* used all the dividend */
+ else /* dif < 0 i.e. xn > yn, don't use the (-dif) low limbs from x */
+ c = mpn_divrem_1 (tmp, 0, xp - dif, yn + 1, c);
+
+ inexact = (c != 0);
+
+ /* First pass in estimating next bit of the quotient, in case of RNDN *
+ * In case we just have the right number of bits (postpone this ?), *
+ * we need to check whether the remainder is more or less than half *
+ * the divisor. The test must be performed with a subtraction, so as *
+ * to prevent carries. */
+
+ if (MPFR_LIKELY (rnd_mode == MPFR_RNDN))
+ {
+ if (c < (mp_limb_t) u - c) /* We have u > c */
+ middle = -1;
+ else if (c > (mp_limb_t) u - c)
+ middle = 1;
+ else
+ middle = 0; /* exactly in the middle */
+ }
+
+ /* If we believe that we are right in the middle or exact, we should check
+ that we did not neglect any word of x (division large / 1 -> small). */
+
+ for (i=0; ((inexact == 0) || (middle == 0)) && (i < -dif); i++)
+ if (xp[i])
+ inexact = middle = 1; /* larger than middle */
+
+ /*
+ If the high limb of the result is 0 (xp[xn-1] < u), remove it.
+ Otherwise, compute the left shift to be performed to normalize.
+ In the latter case, we discard some low bits computed. They
+ contain information useful for the rounding, hence the updating
+ of middle and inexact.
+ */
+
+ if (tmp[yn] == 0)
+ {
+ MPN_COPY(yp, tmp, yn);
+ exp -= GMP_NUMB_BITS;
+ }
+ else
+ {
+ int shlz;
+
+ count_leading_zeros (shlz, tmp[yn]);
+
+ /* shift left to normalize */
+ if (MPFR_LIKELY (shlz != 0))
+ {
+ mp_limb_t w = tmp[0] << shlz;
+
+ mpn_lshift (yp, tmp + 1, yn, shlz);
+ yp[0] += tmp[0] >> (GMP_NUMB_BITS - shlz);
+
+ if (w > (MPFR_LIMB_ONE << (GMP_NUMB_BITS - 1)))
+ { middle = 1; }
+ else if (w < (MPFR_LIMB_ONE << (GMP_NUMB_BITS - 1)))
+ { middle = -1; }
+ else
+ { middle = (c != 0); }
+
+ inexact = inexact || (w != 0);
+ exp -= shlz;
+ }
+ else
+ { /* this happens only if u == 1 and xp[xn-1] >=
+ 1<<(GMP_NUMB_BITS-1). It might be better to handle the
+ u == 1 case separately?
+ */
+
+ MPN_COPY (yp, tmp + 1, yn);
+ }
+ }
+
+ MPFR_UNSIGNED_MINUS_MODULO (sh, MPFR_PREC (y));
+ /* it remains sh bits in less significant limb of y */
+
+ d = *yp & MPFR_LIMB_MASK (sh);
+ *yp ^= d; /* set to zero lowest sh bits */
+
+ MPFR_TMP_FREE (marker);
+
+ if (exp < __gmpfr_emin - 1)
+ return mpfr_underflow (y, rnd_mode == MPFR_RNDN ? MPFR_RNDZ : rnd_mode,
+ MPFR_SIGN (y));
+
+ if (MPFR_UNLIKELY (d == 0 && inexact == 0))
+ nexttoinf = 0; /* result is exact */
+ else
+ {
+ MPFR_UPDATE2_RND_MODE(rnd_mode, MPFR_SIGN (y));
+ switch (rnd_mode)
+ {
+ case MPFR_RNDZ:
+ inexact = - MPFR_INT_SIGN (y); /* result is inexact */
+ nexttoinf = 0;
+ break;
+
+ case MPFR_RNDA:
+ inexact = MPFR_INT_SIGN (y);
+ nexttoinf = 1;
+ break;
+
+ default: /* should be MPFR_RNDN */
+ MPFR_ASSERTD (rnd_mode == MPFR_RNDN);
+ /* We have one more significant bit in yn. */
+ if (sh && d < (MPFR_LIMB_ONE << (sh - 1)))
+ {
+ inexact = - MPFR_INT_SIGN (y);
+ nexttoinf = 0;
+ }
+ else if (sh && d > (MPFR_LIMB_ONE << (sh - 1)))
+ {
+ inexact = MPFR_INT_SIGN (y);
+ nexttoinf = 1;
+ }
+ else /* sh = 0 or d = 1 << (sh-1) */
+ {
+ /* The first case is "false" even rounding (significant bits
+ indicate even rounding, but the result is inexact, so up) ;
+ The second case is the case where middle should be used to
+ decide the direction of rounding (no further bit computed) ;
+ The third is the true even rounding.
+ */
+ if ((sh && inexact) || (!sh && middle > 0) ||
+ (!inexact && *yp & (MPFR_LIMB_ONE << sh)))
+ {
+ inexact = MPFR_INT_SIGN (y);
+ nexttoinf = 1;
+ }
+ else
+ {
+ inexact = - MPFR_INT_SIGN (y);
+ nexttoinf = 0;
+ }
+ }
+ }
+ }
+
+ if (nexttoinf &&
+ MPFR_UNLIKELY (mpn_add_1 (yp, yp, yn, MPFR_LIMB_ONE << sh)))
+ {
+ exp++;
+ yp[yn-1] = MPFR_LIMB_HIGHBIT;
+ }
+
+ /* Set the exponent. Warning! One may still have an underflow. */
+ MPFR_EXP (y) = exp;
+
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
+
+int
+mpfr_div_si (mpfr_ptr y, mpfr_srcptr x, long int u, mpfr_rnd_t rnd_mode)
+{
+ int res;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg u=%ld rnd=%d",
+ mpfr_get_prec(x), mpfr_log_prec, x, u, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec(y), mpfr_log_prec, y, res));
+
+ if (u >= 0)
+ res = mpfr_div_ui (y, x, u, rnd_mode);
+ else
+ {
+ res = -mpfr_div_ui (y, x, -u, MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (y);
+ }
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/dump.c b/Build/source/libs/mpfr/mpfr-src/src/dump.c
new file mode 100644
index 00000000000..fb00f79b2bf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/dump.c
@@ -0,0 +1,30 @@
+/* mpfr_dump -- Dump a float to stdout.
+
+Copyright 1999, 2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_dump (mpfr_srcptr u)
+{
+ mpfr_print_binary(u);
+ putchar('\n');
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/eint.c b/Build/source/libs/mpfr/mpfr-src/src/eint.c
new file mode 100644
index 00000000000..aaff14a83c0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/eint.c
@@ -0,0 +1,319 @@
+/* mpfr_eint, mpfr_eint1 -- the exponential integral
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* eint1(x) = -gamma - log(x) - sum((-1)^k*z^k/k/k!, k=1..infinity) for x > 0
+ = - eint(-x) for x < 0
+ where
+ eint (x) = gamma + log(x) + sum(z^k/k/k!, k=1..infinity) for x > 0
+ eint (x) is undefined for x < 0.
+*/
+
+/* compute in y an approximation of sum(x^k/k/k!, k=1..infinity),
+ and return e such that the absolute error is bound by 2^e ulp(y) */
+static mpfr_exp_t
+mpfr_eint_aux (mpfr_t y, mpfr_srcptr x)
+{
+ mpfr_t eps; /* dynamic (absolute) error bound on t */
+ mpfr_t erru, errs;
+ mpz_t m, s, t, u;
+ mpfr_exp_t e, sizeinbase;
+ mpfr_prec_t w = MPFR_PREC(y);
+ unsigned long k;
+ MPFR_GROUP_DECL (group);
+
+ /* for |x| <= 1, we have S := sum(x^k/k/k!, k=1..infinity) = x + R(x)
+ where |R(x)| <= (x/2)^2/(1-x/2) <= 2*(x/2)^2
+ thus |R(x)/x| <= |x|/2
+ thus if |x| <= 2^(-PREC(y)) we have |S - o(x)| <= ulp(y) */
+
+ if (MPFR_GET_EXP(x) <= - (mpfr_exp_t) w)
+ {
+ mpfr_set (y, x, MPFR_RNDN);
+ return 0;
+ }
+
+ mpz_init (s); /* initializes to 0 */
+ mpz_init (t);
+ mpz_init (u);
+ mpz_init (m);
+ MPFR_GROUP_INIT_3 (group, 31, eps, erru, errs);
+ e = mpfr_get_z_2exp (m, x); /* x = m * 2^e */
+ MPFR_ASSERTD (mpz_sizeinbase (m, 2) == MPFR_PREC (x));
+ if (MPFR_PREC (x) > w)
+ {
+ e += MPFR_PREC (x) - w;
+ mpz_tdiv_q_2exp (m, m, MPFR_PREC (x) - w);
+ }
+ /* remove trailing zeroes from m: this will speed up much cases where
+ x is a small integer divided by a power of 2 */
+ k = mpz_scan1 (m, 0);
+ mpz_tdiv_q_2exp (m, m, k);
+ e += k;
+ /* initialize t to 2^w */
+ mpz_set_ui (t, 1);
+ mpz_mul_2exp (t, t, w);
+ mpfr_set_ui (eps, 0, MPFR_RNDN); /* eps[0] = 0 */
+ mpfr_set_ui (errs, 0, MPFR_RNDN);
+ for (k = 1;; k++)
+ {
+ /* let eps[k] be the absolute error on t[k]:
+ since t[k] = trunc(t[k-1]*m*2^e/k), we have
+ eps[k+1] <= 1 + eps[k-1]*m*2^e/k + t[k-1]*m*2^(1-w)*2^e/k
+ = 1 + (eps[k-1] + t[k-1]*2^(1-w))*m*2^e/k
+ = 1 + (eps[k-1]*2^(w-1) + t[k-1])*2^(1-w)*m*2^e/k */
+ mpfr_mul_2ui (eps, eps, w - 1, MPFR_RNDU);
+ mpfr_add_z (eps, eps, t, MPFR_RNDU);
+ MPFR_MPZ_SIZEINBASE2 (sizeinbase, m);
+ mpfr_mul_2si (eps, eps, sizeinbase - (w - 1) + e, MPFR_RNDU);
+ mpfr_div_ui (eps, eps, k, MPFR_RNDU);
+ mpfr_add_ui (eps, eps, 1, MPFR_RNDU);
+ mpz_mul (t, t, m);
+ if (e < 0)
+ mpz_tdiv_q_2exp (t, t, -e);
+ else
+ mpz_mul_2exp (t, t, e);
+ mpz_tdiv_q_ui (t, t, k);
+ mpz_tdiv_q_ui (u, t, k);
+ mpz_add (s, s, u);
+ /* the absolute error on u is <= 1 + eps[k]/k */
+ mpfr_div_ui (erru, eps, k, MPFR_RNDU);
+ mpfr_add_ui (erru, erru, 1, MPFR_RNDU);
+ /* and that on s is the sum of all errors on u */
+ mpfr_add (errs, errs, erru, MPFR_RNDU);
+ /* we are done when t is smaller than errs */
+ if (mpz_sgn (t) == 0)
+ sizeinbase = 0;
+ else
+ MPFR_MPZ_SIZEINBASE2 (sizeinbase, t);
+ if (sizeinbase < MPFR_GET_EXP (errs))
+ break;
+ }
+ /* the truncation error is bounded by (|t|+eps)/k*(|x|/k + |x|^2/k^2 + ...)
+ <= (|t|+eps)/k*|x|/(k-|x|) */
+ mpz_abs (t, t);
+ mpfr_add_z (eps, eps, t, MPFR_RNDU);
+ mpfr_div_ui (eps, eps, k, MPFR_RNDU);
+ mpfr_abs (erru, x, MPFR_RNDU); /* |x| */
+ mpfr_mul (eps, eps, erru, MPFR_RNDU);
+ mpfr_ui_sub (erru, k, erru, MPFR_RNDD);
+ if (MPFR_IS_NEG (erru))
+ {
+ /* the truncated series does not converge, return fail */
+ e = w;
+ }
+ else
+ {
+ mpfr_div (eps, eps, erru, MPFR_RNDU);
+ mpfr_add (errs, errs, eps, MPFR_RNDU);
+ mpfr_set_z (y, s, MPFR_RNDN);
+ mpfr_div_2ui (y, y, w, MPFR_RNDN);
+ /* errs was an absolute error bound on s. We must convert it to an error
+ in terms of ulp(y). Since ulp(y) = 2^(EXP(y)-PREC(y)), we must
+ divide the error by 2^(EXP(y)-PREC(y)), but since we divided also
+ y by 2^w = 2^PREC(y), we must simply divide by 2^EXP(y). */
+ e = MPFR_GET_EXP (errs) - MPFR_GET_EXP (y);
+ }
+ MPFR_GROUP_CLEAR (group);
+ mpz_clear (s);
+ mpz_clear (t);
+ mpz_clear (u);
+ mpz_clear (m);
+ return e;
+}
+
+/* Return in y an approximation of Ei(x) using the asymptotic expansion:
+ Ei(x) = exp(x)/x * (1 + 1/x + 2/x^2 + ... + k!/x^k + ...)
+ Assumes x >= PREC(y) * log(2).
+ Returns the error bound in terms of ulp(y).
+*/
+static mpfr_exp_t
+mpfr_eint_asympt (mpfr_ptr y, mpfr_srcptr x)
+{
+ mpfr_prec_t p = MPFR_PREC(y);
+ mpfr_t invx, t, err;
+ unsigned long k;
+ mpfr_exp_t err_exp;
+
+ mpfr_init2 (t, p);
+ mpfr_init2 (invx, p);
+ mpfr_init2 (err, 31); /* error in ulps on y */
+ mpfr_ui_div (invx, 1, x, MPFR_RNDN); /* invx = 1/x*(1+u) with |u|<=2^(1-p) */
+ mpfr_set_ui (t, 1, MPFR_RNDN); /* exact */
+ mpfr_set (y, t, MPFR_RNDN);
+ mpfr_set_ui (err, 0, MPFR_RNDN);
+ for (k = 1; MPFR_GET_EXP(t) + (mpfr_exp_t) p > MPFR_GET_EXP(y); k++)
+ {
+ mpfr_mul (t, t, invx, MPFR_RNDN); /* 2 more roundings */
+ mpfr_mul_ui (t, t, k, MPFR_RNDN); /* 1 more rounding: t = k!/x^k*(1+u)^e
+ with u=2^{-p} and |e| <= 3*k */
+ /* we use the fact that |(1+u)^n-1| <= 2*|n*u| for |n*u| <= 1, thus
+ the error on t is less than 6*k*2^{-p}*t <= 6*k*ulp(t) */
+ /* err is in terms of ulp(y): transform it in terms of ulp(t) */
+ mpfr_mul_2si (err, err, MPFR_GET_EXP(y) - MPFR_GET_EXP(t), MPFR_RNDU);
+ mpfr_add_ui (err, err, 6 * k, MPFR_RNDU);
+ /* transform back in terms of ulp(y) */
+ mpfr_div_2si (err, err, MPFR_GET_EXP(y) - MPFR_GET_EXP(t), MPFR_RNDU);
+ mpfr_add (y, y, t, MPFR_RNDN);
+ }
+ /* add the truncation error bounded by ulp(y): 1 ulp */
+ mpfr_mul (y, y, invx, MPFR_RNDN); /* err <= 2*err + 3/2 */
+ mpfr_exp (t, x, MPFR_RNDN); /* err(t) <= 1/2*ulp(t) */
+ mpfr_mul (y, y, t, MPFR_RNDN); /* again: err <= 2*err + 3/2 */
+ mpfr_mul_2ui (err, err, 2, MPFR_RNDU);
+ mpfr_add_ui (err, err, 8, MPFR_RNDU);
+ err_exp = MPFR_GET_EXP(err);
+ mpfr_clear (t);
+ mpfr_clear (invx);
+ mpfr_clear (err);
+ return err_exp;
+}
+
+int
+mpfr_eint (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ int inex;
+ mpfr_t tmp, ump;
+ mpfr_exp_t err, te;
+ mpfr_prec_t prec;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC (
+ ("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y, inex));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ /* exp(NaN) = exp(-Inf) = NaN */
+ if (MPFR_IS_NAN (x) || (MPFR_IS_INF (x) && MPFR_IS_NEG(x)))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ /* eint(+inf) = +inf */
+ else if (MPFR_IS_INF (x))
+ {
+ MPFR_SET_INF(y);
+ MPFR_SET_POS(y);
+ MPFR_RET(0);
+ }
+ else /* eint(+/-0) = -Inf */
+ {
+ MPFR_SET_INF(y);
+ MPFR_SET_NEG(y);
+ mpfr_set_divby0 ();
+ MPFR_RET(0);
+ }
+ }
+
+ /* eint(x) = NaN for x < 0 */
+ if (MPFR_IS_NEG(x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Since eint(x) >= exp(x)/x, we have log2(eint(x)) >= (x-log(x))/log(2).
+ Let's compute k <= (x-log(x))/log(2) in a low precision. If k >= emax,
+ then log2(eint(x)) >= emax, and eint(x) >= 2^emax, i.e. it overflows. */
+ mpfr_init2 (tmp, 64);
+ mpfr_init2 (ump, 64);
+ mpfr_log (tmp, x, MPFR_RNDU);
+ mpfr_sub (ump, x, tmp, MPFR_RNDD);
+ mpfr_const_log2 (tmp, MPFR_RNDU);
+ mpfr_div (ump, ump, tmp, MPFR_RNDD);
+ /* FIXME: We really need mpfr_set_exp_t and mpfr_cmpfr_exp_t functions. */
+ MPFR_ASSERTN (MPFR_EMAX_MAX <= LONG_MAX);
+ if (mpfr_cmp_ui (ump, __gmpfr_emax) >= 0)
+ {
+ mpfr_clear (tmp);
+ mpfr_clear (ump);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_overflow (y, rnd, 1);
+ }
+
+ /* Init stuff */
+ prec = MPFR_PREC (y) + 2 * MPFR_INT_CEIL_LOG2 (MPFR_PREC (y)) + 6;
+
+ /* eint() has a root 0.37250741078136663446..., so if x is near,
+ already take more bits */
+ /* FIXME: do not use native floating-point here. */
+ if (MPFR_GET_EXP(x) == -1) /* 1/4 <= x < 1/2 */
+ {
+ double d;
+ d = mpfr_get_d (x, MPFR_RNDN) - 0.37250741078136663;
+ d = (d == 0.0) ? -53 : __gmpfr_ceil_log2 (d);
+ prec += -d;
+ }
+
+ mpfr_set_prec (tmp, prec);
+ mpfr_set_prec (ump, prec);
+
+ MPFR_ZIV_INIT (loop, prec); /* Initialize the ZivLoop controler */
+ for (;;) /* Infinite loop */
+ {
+ /* We need that the smallest value of k!/x^k is smaller than 2^(-p).
+ The minimum is obtained for x=k, and it is smaller than e*sqrt(x)/e^x
+ for x>=1. */
+ if (MPFR_GET_EXP (x) > 0 && mpfr_cmp_d (x, ((double) prec +
+ 0.5 * (double) MPFR_GET_EXP (x)) * LOG2 + 1.0) > 0)
+ err = mpfr_eint_asympt (tmp, x);
+ else
+ {
+ err = mpfr_eint_aux (tmp, x); /* error <= 2^err ulp(tmp) */
+ te = MPFR_GET_EXP(tmp);
+ mpfr_const_euler (ump, MPFR_RNDN); /* 0.577 -> EXP(ump)=0 */
+ mpfr_add (tmp, tmp, ump, MPFR_RNDN);
+ /* error <= 1/2 + 1/2*2^(EXP(ump)-EXP(tmp)) + 2^(te-EXP(tmp)+err)
+ <= 1/2 + 2^(MAX(EXP(ump), te+err+1) - EXP(tmp))
+ <= 2^(MAX(0, 1 + MAX(EXP(ump), te+err+1) - EXP(tmp))) */
+ err = MAX(1, te + err + 2) - MPFR_GET_EXP(tmp);
+ err = MAX(0, err);
+ te = MPFR_GET_EXP(tmp);
+ mpfr_log (ump, x, MPFR_RNDN);
+ mpfr_add (tmp, tmp, ump, MPFR_RNDN);
+ /* same formula as above, except now EXP(ump) is not 0 */
+ err += te + 1;
+ if (MPFR_LIKELY (!MPFR_IS_ZERO (ump)))
+ err = MAX (MPFR_GET_EXP (ump), err);
+ err = MAX(0, err - MPFR_GET_EXP (tmp));
+ }
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (tmp, prec - err, MPFR_PREC (y), rnd)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec); /* Increase used precision */
+ mpfr_set_prec (tmp, prec);
+ mpfr_set_prec (ump, prec);
+ }
+ MPFR_ZIV_FREE (loop); /* Free the ZivLoop Controller */
+
+ inex = mpfr_set (y, tmp, rnd); /* Set y to the computed value */
+ mpfr_clear (tmp);
+ mpfr_clear (ump);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/eq.c b/Build/source/libs/mpfr/mpfr-src/src/eq.c
new file mode 100644
index 00000000000..c58110ca639
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/eq.c
@@ -0,0 +1,141 @@
+/* mpfr_eq -- Compare two floats up to a specified bit #.
+
+Copyright 1999, 2001, 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#include "mpfr-impl.h"
+
+/* return non-zero if the first n_bits bits of u, v are equal,
+ 0 otherwise */
+int
+mpfr_eq (mpfr_srcptr u, mpfr_srcptr v, unsigned long int n_bits)
+{
+ mpfr_limb_srcptr up, vp;
+ mp_size_t usize, vsize, size, i;
+ mpfr_exp_t uexp, vexp;
+ int k;
+
+ if (MPFR_ARE_SINGULAR(u, v))
+ {
+ if (MPFR_IS_NAN(u) || MPFR_IS_NAN(v))
+ return 0; /* non equal */
+ else if (MPFR_IS_INF(u) && MPFR_IS_INF(v))
+ return (MPFR_SIGN(u) == MPFR_SIGN(v));
+ else if (MPFR_IS_ZERO(u) && MPFR_IS_ZERO(v))
+ return 1;
+ else
+ return 0;
+ }
+
+ /* 1. Are the signs different? */
+ if (MPFR_SIGN(u) != MPFR_SIGN(v))
+ return 0;
+
+ uexp = MPFR_GET_EXP (u);
+ vexp = MPFR_GET_EXP (v);
+
+ /* 2. Are the exponents different? */
+ if (uexp != vexp)
+ return 0; /* no bit agree */
+
+ usize = MPFR_LIMB_SIZE (u);
+ vsize = MPFR_LIMB_SIZE (v);
+
+ if (vsize > usize) /* exchange u and v */
+ {
+ up = MPFR_MANT(v);
+ vp = MPFR_MANT(u);
+ size = vsize;
+ vsize = usize;
+ usize = size;
+ }
+ else
+ {
+ up = MPFR_MANT(u);
+ vp = MPFR_MANT(v);
+ }
+
+ /* now usize >= vsize */
+ MPFR_ASSERTD(usize >= vsize);
+
+ if (usize > vsize)
+ {
+ if ((unsigned long) vsize * GMP_NUMB_BITS < n_bits)
+ {
+ /* check if low min(PREC(u), n_bits) - (vsize * GMP_NUMB_BITS)
+ bits from u are non-zero */
+ unsigned long remains = n_bits - (vsize * GMP_NUMB_BITS);
+ k = usize - vsize - 1;
+ while (k >= 0 && remains >= GMP_NUMB_BITS && !up[k])
+ {
+ k--;
+ remains -= GMP_NUMB_BITS;
+ }
+ /* now either k < 0: all low bits from u are zero
+ or remains < GMP_NUMB_BITS: check high bits from up[k]
+ or up[k] <> 0: different */
+ if (k >= 0 && (((remains < GMP_NUMB_BITS) &&
+ (up[k] >> (GMP_NUMB_BITS - remains))) ||
+ (remains >= GMP_NUMB_BITS && up[k])))
+ return 0; /* surely too different */
+ }
+ size = vsize;
+ }
+ else
+ {
+ size = usize;
+ }
+
+ /* now size = min (usize, vsize) */
+
+ /* If size is too large wrt n_bits, reduce it to look only at the
+ high n_bits bits.
+ Otherwise, if n_bits > size * GMP_NUMB_BITS, reduce n_bits to
+ size * GMP_NUMB_BITS, since the extra low bits of one of the
+ operands have already been check above. */
+ if ((unsigned long) size > 1 + (n_bits - 1) / GMP_NUMB_BITS)
+ size = 1 + (n_bits - 1) / GMP_NUMB_BITS;
+ else if (n_bits > (unsigned long) size * GMP_NUMB_BITS)
+ n_bits = size * GMP_NUMB_BITS;
+
+ up += usize - size;
+ vp += vsize - size;
+
+ for (i = size - 1; i > 0 && n_bits >= GMP_NUMB_BITS; i--)
+ {
+ if (up[i] != vp[i])
+ return 0;
+ n_bits -= GMP_NUMB_BITS;
+ }
+
+ /* now either i=0 or n_bits<GMP_NUMB_BITS */
+
+ /* since n_bits <= size * GMP_NUMB_BITS before the above for-loop,
+ we have the invariant n_bits <= (i+1) * GMP_NUMB_BITS, thus
+ we always have n_bits <= GMP_NUMB_BITS here */
+ MPFR_ASSERTD(n_bits <= GMP_NUMB_BITS);
+
+ if (n_bits & (GMP_NUMB_BITS - 1))
+ return (up[i] >> (GMP_NUMB_BITS - (n_bits & (GMP_NUMB_BITS - 1))) ==
+ vp[i] >> (GMP_NUMB_BITS - (n_bits & (GMP_NUMB_BITS - 1))));
+ else
+ return (up[i] == vp[i]);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/erf.c b/Build/source/libs/mpfr/mpfr-src/src/erf.c
new file mode 100644
index 00000000000..227eba71ec3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/erf.c
@@ -0,0 +1,262 @@
+/* mpfr_erf -- error function of a floating-point number
+
+Copyright 2001, 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#define EXP1 2.71828182845904523536 /* exp(1) */
+
+static int mpfr_erf_0 (mpfr_ptr, mpfr_srcptr, double, mpfr_rnd_t);
+
+int
+mpfr_erf (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t xf;
+ int inex, large;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y, inex));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x)) /* erf(+inf) = +1, erf(-inf) = -1 */
+ return mpfr_set_si (y, MPFR_INT_SIGN (x), MPFR_RNDN);
+ else /* erf(+0) = +0, erf(-0) = -0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ return mpfr_set (y, x, MPFR_RNDN); /* should keep the sign of x */
+ }
+ }
+
+ /* now x is neither NaN, Inf nor 0 */
+
+ /* first try expansion at x=0 when x is small, or asymptotic expansion
+ where x is large */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* around x=0, we have erf(x) = 2x/sqrt(Pi) (1 - x^2/3 + ...),
+ with 1 - x^2/3 <= sqrt(Pi)*erf(x)/2/x <= 1 for x >= 0. This means that
+ if x^2/3 < 2^(-PREC(y)-1) we can decide of the correct rounding,
+ unless we have a worst-case for 2x/sqrt(Pi). */
+ if (MPFR_EXP(x) < - (mpfr_exp_t) (MPFR_PREC(y) / 2))
+ {
+ /* we use 2x/sqrt(Pi) (1 - x^2/3) <= erf(x) <= 2x/sqrt(Pi) for x > 0
+ and 2x/sqrt(Pi) <= erf(x) <= 2x/sqrt(Pi) (1 - x^2/3) for x < 0.
+ In both cases |2x/sqrt(Pi) (1 - x^2/3)| <= |erf(x)| <= |2x/sqrt(Pi)|.
+ We will compute l and h such that l <= |2x/sqrt(Pi) (1 - x^2/3)|
+ and |2x/sqrt(Pi)| <= h. If l and h round to the same value to
+ precision PREC(y) and rounding rnd_mode, then we are done. */
+ mpfr_t l, h; /* lower and upper bounds for erf(x) */
+ int ok, inex2;
+
+ mpfr_init2 (l, MPFR_PREC(y) + 17);
+ mpfr_init2 (h, MPFR_PREC(y) + 17);
+ /* first compute l */
+ mpfr_mul (l, x, x, MPFR_RNDU);
+ mpfr_div_ui (l, l, 3, MPFR_RNDU); /* upper bound on x^2/3 */
+ mpfr_ui_sub (l, 1, l, MPFR_RNDZ); /* lower bound on 1 - x^2/3 */
+ mpfr_const_pi (h, MPFR_RNDU); /* upper bound of Pi */
+ mpfr_sqrt (h, h, MPFR_RNDU); /* upper bound on sqrt(Pi) */
+ mpfr_div (l, l, h, MPFR_RNDZ); /* lower bound on 1/sqrt(Pi) (1 - x^2/3) */
+ mpfr_mul_2ui (l, l, 1, MPFR_RNDZ); /* 2/sqrt(Pi) (1 - x^2/3) */
+ mpfr_mul (l, l, x, MPFR_RNDZ); /* |l| is a lower bound on
+ |2x/sqrt(Pi) (1 - x^2/3)| */
+ /* now compute h */
+ mpfr_const_pi (h, MPFR_RNDD); /* lower bound on Pi */
+ mpfr_sqrt (h, h, MPFR_RNDD); /* lower bound on sqrt(Pi) */
+ mpfr_div_2ui (h, h, 1, MPFR_RNDD); /* lower bound on sqrt(Pi)/2 */
+ /* since sqrt(Pi)/2 < 1, the following should not underflow */
+ mpfr_div (h, x, h, MPFR_IS_POS(x) ? MPFR_RNDU : MPFR_RNDD);
+ /* round l and h to precision PREC(y) */
+ inex = mpfr_prec_round (l, MPFR_PREC(y), rnd_mode);
+ inex2 = mpfr_prec_round (h, MPFR_PREC(y), rnd_mode);
+ /* Caution: we also need inex=inex2 (inex might be 0). */
+ ok = SAME_SIGN (inex, inex2) && mpfr_cmp (l, h) == 0;
+ if (ok)
+ mpfr_set (y, h, rnd_mode);
+ mpfr_clear (l);
+ mpfr_clear (h);
+ if (ok)
+ goto end;
+ /* this test can still fail for small precision, for example
+ for x=-0.100E-2 with a target precision of 3 bits, since
+ the error term x^2/3 is not that small. */
+ }
+
+ mpfr_init2 (xf, 53);
+ mpfr_const_log2 (xf, MPFR_RNDU);
+ mpfr_div (xf, x, xf, MPFR_RNDZ); /* round to zero ensures we get a lower
+ bound of |x/log(2)| */
+ mpfr_mul (xf, xf, x, MPFR_RNDZ);
+ large = mpfr_cmp_ui (xf, MPFR_PREC (y) + 1) > 0;
+ mpfr_clear (xf);
+
+ /* when x goes to infinity, we have erf(x) = 1 - 1/sqrt(Pi)/exp(x^2)/x + ...
+ and |erf(x) - 1| <= exp(-x^2) is true for any x >= 0, thus if
+ exp(-x^2) < 2^(-PREC(y)-1) the result is 1 or 1-epsilon.
+ This rewrites as x^2/log(2) > p+1. */
+ if (MPFR_UNLIKELY (large))
+ /* |erf x| = 1 or 1- */
+ {
+ mpfr_rnd_t rnd2 = MPFR_IS_POS (x) ? rnd_mode : MPFR_INVERT_RND(rnd_mode);
+ if (rnd2 == MPFR_RNDN || rnd2 == MPFR_RNDU || rnd2 == MPFR_RNDA)
+ {
+ inex = MPFR_INT_SIGN (x);
+ mpfr_set_si (y, inex, rnd2);
+ }
+ else /* round to zero */
+ {
+ inex = -MPFR_INT_SIGN (x);
+ mpfr_setmax (y, 0); /* warning: setmax keeps the old sign of y */
+ MPFR_SET_SAME_SIGN (y, x);
+ }
+ }
+ else /* use Taylor */
+ {
+ double xf2;
+
+ /* FIXME: get rid of doubles/mpfr_get_d here */
+ xf2 = mpfr_get_d (x, MPFR_RNDN);
+ xf2 = xf2 * xf2; /* xf2 ~ x^2 */
+ inex = mpfr_erf_0 (y, x, xf2, rnd_mode);
+ }
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex, rnd_mode);
+}
+
+/* return x*2^e */
+static double
+mul_2exp (double x, mpfr_exp_t e)
+{
+ if (e > 0)
+ {
+ while (e--)
+ x *= 2.0;
+ }
+ else
+ {
+ while (e++)
+ x /= 2.0;
+ }
+
+ return x;
+}
+
+/* evaluates erf(x) using the expansion at x=0:
+
+ erf(x) = 2/sqrt(Pi) * sum((-1)^k*x^(2k+1)/k!/(2k+1), k=0..infinity)
+
+ Assumes x is neither NaN nor infinite nor zero.
+ Assumes also that e*x^2 <= n (target precision).
+ */
+static int
+mpfr_erf_0 (mpfr_ptr res, mpfr_srcptr x, double xf2, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t n, m;
+ mpfr_exp_t nuk, sigmak;
+ double tauk;
+ mpfr_t y, s, t, u;
+ unsigned int k;
+ int log2tauk;
+ int inex;
+ MPFR_ZIV_DECL (loop);
+
+ n = MPFR_PREC (res); /* target precision */
+
+ /* initial working precision */
+ m = n + (mpfr_prec_t) (xf2 / LOG2) + 8 + MPFR_INT_CEIL_LOG2 (n);
+
+ mpfr_init2 (y, m);
+ mpfr_init2 (s, m);
+ mpfr_init2 (t, m);
+ mpfr_init2 (u, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_mul (y, x, x, MPFR_RNDU); /* err <= 1 ulp */
+ mpfr_set_ui (s, 1, MPFR_RNDN);
+ mpfr_set_ui (t, 1, MPFR_RNDN);
+ tauk = 0.0;
+
+ for (k = 1; ; k++)
+ {
+ mpfr_mul (t, y, t, MPFR_RNDU);
+ mpfr_div_ui (t, t, k, MPFR_RNDU);
+ mpfr_div_ui (u, t, 2 * k + 1, MPFR_RNDU);
+ sigmak = MPFR_GET_EXP (s);
+ if (k % 2)
+ mpfr_sub (s, s, u, MPFR_RNDN);
+ else
+ mpfr_add (s, s, u, MPFR_RNDN);
+ sigmak -= MPFR_GET_EXP(s);
+ nuk = MPFR_GET_EXP(u) - MPFR_GET_EXP(s);
+
+ if ((nuk < - (mpfr_exp_t) m) && ((double) k >= xf2))
+ break;
+
+ /* tauk <- 1/2 + tauk * 2^sigmak + (1+8k)*2^nuk */
+ tauk = 0.5 + mul_2exp (tauk, sigmak)
+ + mul_2exp (1.0 + 8.0 * (double) k, nuk);
+ }
+
+ mpfr_mul (s, x, s, MPFR_RNDU);
+ MPFR_SET_EXP (s, MPFR_GET_EXP (s) + 1);
+
+ mpfr_const_pi (t, MPFR_RNDZ);
+ mpfr_sqrt (t, t, MPFR_RNDZ);
+ mpfr_div (s, s, t, MPFR_RNDN);
+ tauk = 4.0 * tauk + 11.0; /* final ulp-error on s */
+ log2tauk = __gmpfr_ceil_log2 (tauk);
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, m - log2tauk, n, rnd_mode)))
+ break;
+
+ /* Actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (y, m);
+ mpfr_set_prec (s, m);
+ mpfr_set_prec (t, m);
+ mpfr_set_prec (u, m);
+
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inex = mpfr_set (res, s, rnd_mode);
+
+ mpfr_clear (y);
+ mpfr_clear (t);
+ mpfr_clear (u);
+ mpfr_clear (s);
+
+ return inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/erfc.c b/Build/source/libs/mpfr/mpfr-src/src/erfc.c
new file mode 100644
index 00000000000..1f0b36d3b36
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/erfc.c
@@ -0,0 +1,277 @@
+/* mpfr_erfc -- The Complementary Error Function of a floating-point number
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* erfc(x) = 1 - erf(x) */
+
+/* Put in y an approximation of erfc(x) for large x, using formulae 7.1.23 and
+ 7.1.24 from Abramowitz and Stegun.
+ Returns e such that the error is bounded by 2^e ulp(y),
+ or returns 0 in case of underflow.
+*/
+static mpfr_exp_t
+mpfr_erfc_asympt (mpfr_ptr y, mpfr_srcptr x)
+{
+ mpfr_t t, xx, err;
+ unsigned long k;
+ mpfr_prec_t prec = MPFR_PREC(y);
+ mpfr_exp_t exp_err;
+
+ mpfr_init2 (t, prec);
+ mpfr_init2 (xx, prec);
+ mpfr_init2 (err, 31);
+ /* let u = 2^(1-p), and let us represent the error as (1+u)^err
+ with a bound for err */
+ mpfr_mul (xx, x, x, MPFR_RNDD); /* err <= 1 */
+ mpfr_ui_div (xx, 1, xx, MPFR_RNDU); /* upper bound for 1/(2x^2), err <= 2 */
+ mpfr_div_2ui (xx, xx, 1, MPFR_RNDU); /* exact */
+ mpfr_set_ui (t, 1, MPFR_RNDN); /* current term, exact */
+ mpfr_set (y, t, MPFR_RNDN); /* current sum */
+ mpfr_set_ui (err, 0, MPFR_RNDN);
+ for (k = 1; ; k++)
+ {
+ mpfr_mul_ui (t, t, 2 * k - 1, MPFR_RNDU); /* err <= 4k-3 */
+ mpfr_mul (t, t, xx, MPFR_RNDU); /* err <= 4k */
+ /* for -1 < x < 1, and |nx| < 1, we have |(1+x)^n| <= 1+7/4|nx|.
+ Indeed, for x>=0: log((1+x)^n) = n*log(1+x) <= n*x. Let y=n*x < 1,
+ then exp(y) <= 1+7/4*y.
+ For x<=0, let x=-x, we can prove by induction that (1-x)^n >= 1-n*x.*/
+ mpfr_mul_2si (err, err, MPFR_GET_EXP (y) - MPFR_GET_EXP (t), MPFR_RNDU);
+ mpfr_add_ui (err, err, 14 * k, MPFR_RNDU); /* 2^(1-p) * t <= 2 ulp(t) */
+ mpfr_div_2si (err, err, MPFR_GET_EXP (y) - MPFR_GET_EXP (t), MPFR_RNDU);
+ if (MPFR_GET_EXP (t) + (mpfr_exp_t) prec <= MPFR_GET_EXP (y))
+ {
+ /* the truncation error is bounded by |t| < ulp(y) */
+ mpfr_add_ui (err, err, 1, MPFR_RNDU);
+ break;
+ }
+ if (k & 1)
+ mpfr_sub (y, y, t, MPFR_RNDN);
+ else
+ mpfr_add (y, y, t, MPFR_RNDN);
+ }
+ /* the error on y is bounded by err*ulp(y) */
+ mpfr_mul (t, x, x, MPFR_RNDU); /* rel. err <= 2^(1-p) */
+ mpfr_div_2ui (err, err, 3, MPFR_RNDU); /* err/8 */
+ mpfr_add (err, err, t, MPFR_RNDU); /* err/8 + xx */
+ mpfr_mul_2ui (err, err, 3, MPFR_RNDU); /* err + 8*xx */
+ mpfr_exp (t, t, MPFR_RNDU); /* err <= 1/2*ulp(t) + err(x*x)*t
+ <= 1/2*ulp(t)+2*|x*x|*ulp(t)
+ <= (2*|x*x|+1/2)*ulp(t) */
+ mpfr_mul (t, t, x, MPFR_RNDN); /* err <= 1/2*ulp(t) + (4*|x*x|+1)*ulp(t)
+ <= (4*|x*x|+3/2)*ulp(t) */
+ mpfr_const_pi (xx, MPFR_RNDZ); /* err <= ulp(Pi) */
+ mpfr_sqrt (xx, xx, MPFR_RNDN); /* err <= 1/2*ulp(xx) + ulp(Pi)/2/sqrt(Pi)
+ <= 3/2*ulp(xx) */
+ mpfr_mul (t, t, xx, MPFR_RNDN); /* err <= (8 |xx| + 13/2) * ulp(t) */
+ mpfr_div (y, y, t, MPFR_RNDN); /* the relative error on input y is bounded
+ by (1+u)^err with u = 2^(1-p), that on
+ t is bounded by (1+u)^(8 |xx| + 13/2),
+ thus that on output y is bounded by
+ 8 |xx| + 7 + err. */
+
+ if (MPFR_IS_ZERO(y))
+ {
+ /* If y is zero, most probably we have underflow. We check it directly
+ using the fact that erfc(x) <= exp(-x^2)/sqrt(Pi)/x for x >= 0.
+ We compute an upper approximation of exp(-x^2)/sqrt(Pi)/x.
+ */
+ mpfr_mul (t, x, x, MPFR_RNDD); /* t <= x^2 */
+ mpfr_neg (t, t, MPFR_RNDU); /* -x^2 <= t */
+ mpfr_exp (t, t, MPFR_RNDU); /* exp(-x^2) <= t */
+ mpfr_const_pi (xx, MPFR_RNDD); /* xx <= sqrt(Pi), cached */
+ mpfr_mul (xx, xx, x, MPFR_RNDD); /* xx <= sqrt(Pi)*x */
+ mpfr_div (y, t, xx, MPFR_RNDN); /* if y is zero, this means that the upper
+ approximation of exp(-x^2)/sqrt(Pi)/x
+ is nearer from 0 than from 2^(-emin-1),
+ thus we have underflow. */
+ exp_err = 0;
+ }
+ else
+ {
+ mpfr_add_ui (err, err, 7, MPFR_RNDU);
+ exp_err = MPFR_GET_EXP (err);
+ }
+
+ mpfr_clear (t);
+ mpfr_clear (xx);
+ mpfr_clear (err);
+ return exp_err;
+}
+
+int
+mpfr_erfc (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ int inex;
+ mpfr_t tmp;
+ mpfr_exp_t te, err;
+ mpfr_prec_t prec;
+ mpfr_exp_t emin = mpfr_get_emin ();
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y, inex));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ /* erfc(+inf) = 0+, erfc(-inf) = 2 erfc (0) = 1 */
+ else if (MPFR_IS_INF (x))
+ return mpfr_set_ui (y, MPFR_IS_POS (x) ? 0 : 2, rnd);
+ else
+ return mpfr_set_ui (y, 1, rnd);
+ }
+
+ if (MPFR_SIGN (x) > 0)
+ {
+ /* by default, emin = 1-2^30, thus the smallest representable
+ number is 1/2*2^emin = 2^(-2^30):
+ for x >= 27282, erfc(x) < 2^(-2^30-1), and
+ for x >= 1787897414, erfc(x) < 2^(-2^62-1).
+ */
+ if ((emin >= -1073741823 && mpfr_cmp_ui (x, 27282) >= 0) ||
+ mpfr_cmp_ui (x, 1787897414) >= 0)
+ {
+ /* May be incorrect if MPFR_EMAX_MAX >= 2^62. */
+ MPFR_ASSERTN ((MPFR_EMAX_MAX >> 31) >> 31 == 0);
+ return mpfr_underflow (y, (rnd == MPFR_RNDN) ? MPFR_RNDZ : rnd, 1);
+ }
+ }
+
+ /* Init stuff */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (MPFR_SIGN (x) < 0)
+ {
+ mpfr_exp_t e = MPFR_EXP(x);
+ /* For x < 0 going to -infinity, erfc(x) tends to 2 by below.
+ More precisely, we have 2 + 1/sqrt(Pi)/x/exp(x^2) < erfc(x) < 2.
+ Thus log2 |2 - erfc(x)| <= -log2|x| - x^2 / log(2).
+ If |2 - erfc(x)| < 2^(-PREC(y)) then the result is either 2 or
+ nextbelow(2).
+ For x <= -27282, -log2|x| - x^2 / log(2) <= -2^30.
+ */
+ if ((MPFR_PREC(y) <= 7 && e >= 2) || /* x <= -2 */
+ (MPFR_PREC(y) <= 25 && e >= 3) || /* x <= -4 */
+ (MPFR_PREC(y) <= 120 && mpfr_cmp_si (x, -9) <= 0) ||
+ mpfr_cmp_si (x, -27282) <= 0)
+ {
+ near_two:
+ mpfr_set_ui (y, 2, MPFR_RNDN);
+ mpfr_set_inexflag ();
+ if (rnd == MPFR_RNDZ || rnd == MPFR_RNDD)
+ {
+ mpfr_nextbelow (y);
+ inex = -1;
+ }
+ else
+ inex = 1;
+ goto end;
+ }
+ else if (e >= 3) /* more accurate test */
+ {
+ mpfr_t t, u;
+ int near_2;
+ mpfr_init2 (t, 32);
+ mpfr_init2 (u, 32);
+ /* the following is 1/log(2) rounded to zero on 32 bits */
+ mpfr_set_str_binary (t, "1.0111000101010100011101100101001");
+ mpfr_sqr (u, x, MPFR_RNDZ);
+ mpfr_mul (t, t, u, MPFR_RNDZ); /* t <= x^2/log(2) */
+ mpfr_neg (u, x, MPFR_RNDZ); /* 0 <= u <= |x| */
+ mpfr_log2 (u, u, MPFR_RNDZ); /* u <= log2(|x|) */
+ mpfr_add (t, t, u, MPFR_RNDZ); /* t <= log2|x| + x^2 / log(2) */
+ /* Taking into account that mpfr_exp_t >= mpfr_prec_t */
+ mpfr_set_exp_t (u, MPFR_PREC (y), MPFR_RNDU);
+ near_2 = mpfr_cmp (t, u) >= 0; /* 1 if PREC(y) <= u <= t <= ... */
+ mpfr_clear (t);
+ mpfr_clear (u);
+ if (near_2)
+ goto near_two;
+ }
+ }
+
+ /* erfc(x) ~ 1, with error < 2^(EXP(x)+1) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, __gmpfr_one, - MPFR_GET_EXP (x) - 1,
+ 0, MPFR_SIGN(x) < 0,
+ rnd, inex = _inexact; goto end);
+
+ prec = MPFR_PREC (y) + MPFR_INT_CEIL_LOG2 (MPFR_PREC (y)) + 3;
+ if (MPFR_GET_EXP (x) > 0)
+ prec += 2 * MPFR_GET_EXP(x);
+
+ mpfr_init2 (tmp, prec);
+
+ MPFR_ZIV_INIT (loop, prec); /* Initialize the ZivLoop controler */
+ for (;;) /* Infinite loop */
+ {
+ /* use asymptotic formula only whenever x^2 >= p*log(2),
+ otherwise it will not converge */
+ if (MPFR_SIGN (x) > 0 &&
+ 2 * MPFR_GET_EXP (x) - 2 >= MPFR_INT_CEIL_LOG2 (prec))
+ /* we have x^2 >= p in that case */
+ {
+ err = mpfr_erfc_asympt (tmp, x);
+ if (err == 0) /* underflow case */
+ {
+ mpfr_clear (tmp);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (y, (rnd == MPFR_RNDN) ? MPFR_RNDZ : rnd, 1);
+ }
+ }
+ else
+ {
+ mpfr_erf (tmp, x, MPFR_RNDN);
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (tmp)); /* FIXME: 0 only for x=0 ? */
+ te = MPFR_GET_EXP (tmp);
+ mpfr_ui_sub (tmp, 1, tmp, MPFR_RNDN);
+ /* See error analysis in algorithms.tex for details */
+ if (MPFR_IS_ZERO (tmp))
+ {
+ prec *= 2;
+ err = prec; /* ensures MPFR_CAN_ROUND fails */
+ }
+ else
+ err = MAX (te - MPFR_GET_EXP (tmp), 0) + 1;
+ }
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (tmp, prec - err, MPFR_PREC (y), rnd)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec); /* Increase used precision */
+ mpfr_set_prec (tmp, prec);
+ }
+ MPFR_ZIV_FREE (loop); /* Free the ZivLoop Controller */
+
+ inex = mpfr_set (y, tmp, rnd); /* Set y to the computed value */
+ mpfr_clear (tmp);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/exceptions.c b/Build/source/libs/mpfr/mpfr-src/src/exceptions.c
new file mode 100644
index 00000000000..dacca4eaa1b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/exceptions.c
@@ -0,0 +1,360 @@
+/* Exception flags and utilities.
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+unsigned int MPFR_THREAD_ATTR __gmpfr_flags = 0;
+
+mpfr_exp_t MPFR_THREAD_ATTR __gmpfr_emin = MPFR_EMIN_DEFAULT;
+mpfr_exp_t MPFR_THREAD_ATTR __gmpfr_emax = MPFR_EMAX_DEFAULT;
+
+#undef mpfr_get_emin
+
+mpfr_exp_t
+mpfr_get_emin (void)
+{
+ return __gmpfr_emin;
+}
+
+#undef mpfr_set_emin
+
+int
+mpfr_set_emin (mpfr_exp_t exponent)
+{
+ if (exponent >= MPFR_EMIN_MIN && exponent <= MPFR_EMIN_MAX)
+ {
+ __gmpfr_emin = exponent;
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+mpfr_exp_t
+mpfr_get_emin_min (void)
+{
+ return MPFR_EMIN_MIN;
+}
+
+mpfr_exp_t
+mpfr_get_emin_max (void)
+{
+ return MPFR_EMIN_MAX;
+}
+
+#undef mpfr_get_emax
+
+mpfr_exp_t
+mpfr_get_emax (void)
+{
+ return __gmpfr_emax;
+}
+
+#undef mpfr_set_emax
+
+int
+mpfr_set_emax (mpfr_exp_t exponent)
+{
+ if (exponent >= MPFR_EMAX_MIN && exponent <= MPFR_EMAX_MAX)
+ {
+ __gmpfr_emax = exponent;
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+mpfr_exp_t
+mpfr_get_emax_min (void)
+{
+ return MPFR_EMAX_MIN;
+}
+mpfr_exp_t
+mpfr_get_emax_max (void)
+{
+ return MPFR_EMAX_MAX;
+}
+
+
+#undef mpfr_clear_flags
+
+void
+mpfr_clear_flags (void)
+{
+ __gmpfr_flags = 0;
+}
+
+#undef mpfr_clear_underflow
+
+void
+mpfr_clear_underflow (void)
+{
+ __gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_UNDERFLOW;
+}
+
+#undef mpfr_clear_overflow
+
+void
+mpfr_clear_overflow (void)
+{
+ __gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_OVERFLOW;
+}
+
+#undef mpfr_clear_divby0
+
+void
+mpfr_clear_divby0 (void)
+{
+ __gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_DIVBY0;
+}
+
+#undef mpfr_clear_nanflag
+
+void
+mpfr_clear_nanflag (void)
+{
+ __gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_NAN;
+}
+
+#undef mpfr_clear_inexflag
+
+void
+mpfr_clear_inexflag (void)
+{
+ __gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_INEXACT;
+}
+
+#undef mpfr_clear_erangeflag
+
+void
+mpfr_clear_erangeflag (void)
+{
+ __gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_ERANGE;
+}
+
+#undef mpfr_set_underflow
+
+void
+mpfr_set_underflow (void)
+{
+ __gmpfr_flags |= MPFR_FLAGS_UNDERFLOW;
+}
+
+#undef mpfr_set_overflow
+
+void
+mpfr_set_overflow (void)
+{
+ __gmpfr_flags |= MPFR_FLAGS_OVERFLOW;
+}
+
+#undef mpfr_set_divby0
+
+void
+mpfr_set_divby0 (void)
+{
+ __gmpfr_flags |= MPFR_FLAGS_DIVBY0;
+}
+
+#undef mpfr_set_nanflag
+
+void
+mpfr_set_nanflag (void)
+{
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+}
+
+#undef mpfr_set_inexflag
+
+void
+mpfr_set_inexflag (void)
+{
+ __gmpfr_flags |= MPFR_FLAGS_INEXACT;
+}
+
+#undef mpfr_set_erangeflag
+
+void
+mpfr_set_erangeflag (void)
+{
+ __gmpfr_flags |= MPFR_FLAGS_ERANGE;
+}
+
+
+#undef mpfr_check_range
+
+int
+mpfr_check_range (mpfr_ptr x, int t, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_LIKELY( MPFR_IS_PURE_FP(x)) )
+ { /* x is a non-zero FP */
+ mpfr_exp_t exp = MPFR_EXP (x); /* Do not use MPFR_GET_EXP */
+ if (MPFR_UNLIKELY( exp < __gmpfr_emin) )
+ {
+ /* The following test is necessary because in the rounding to the
+ * nearest mode, mpfr_underflow always rounds away from 0. In
+ * this rounding mode, we need to round to 0 if:
+ * _ |x| < 2^(emin-2), or
+ * _ |x| = 2^(emin-2) and the absolute value of the exact
+ * result is <= 2^(emin-2).
+ */
+ if (rnd_mode == MPFR_RNDN &&
+ (exp + 1 < __gmpfr_emin ||
+ (mpfr_powerof2_raw(x) &&
+ (MPFR_IS_NEG(x) ? t <= 0 : t >= 0))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow(x, rnd_mode, MPFR_SIGN(x));
+ }
+ if (MPFR_UNLIKELY( exp > __gmpfr_emax) )
+ return mpfr_overflow (x, rnd_mode, MPFR_SIGN(x));
+ }
+ else if (MPFR_UNLIKELY (t != 0 && MPFR_IS_INF (x)))
+ {
+ /* We need to do the following because most MPFR functions are
+ * implemented in the following way:
+ * Ziv's loop:
+ * | Compute an approximation to the result and an error bound.
+ * | Possible underflow/overflow detection -> return.
+ * | If can_round, break (exit the loop).
+ * | Otherwise, increase the working precision and loop.
+ * Round the approximation in the target precision. <== See below
+ * Restore the flags (that could have been set due to underflows
+ * or overflows during the internal computations).
+ * Execute: return mpfr_check_range (...).
+ * The problem is that an overflow could be generated when rounding the
+ * approximation (in general, such an overflow could not be detected
+ * earlier), and the overflow flag is lost when the flags are restored.
+ * This can occur only when the rounding yields an exponent change
+ * and the new exponent is larger than the maximum exponent, so that
+ * an infinity is necessarily obtained.
+ * So, the simplest solution is to detect this overflow case here in
+ * mpfr_check_range, which is easy to do since the rounded result is
+ * necessarily an inexact infinity.
+ */
+ __gmpfr_flags |= MPFR_FLAGS_OVERFLOW;
+ }
+ MPFR_RET (t); /* propagate inexact ternary value, unlike most functions */
+}
+
+#undef mpfr_underflow_p
+
+int
+mpfr_underflow_p (void)
+{
+ return __gmpfr_flags & MPFR_FLAGS_UNDERFLOW;
+}
+
+#undef mpfr_overflow_p
+
+int
+mpfr_overflow_p (void)
+{
+ return __gmpfr_flags & MPFR_FLAGS_OVERFLOW;
+}
+
+#undef mpfr_divby0_p
+
+int
+mpfr_divby0_p (void)
+{
+ return __gmpfr_flags & MPFR_FLAGS_DIVBY0;
+}
+
+#undef mpfr_nanflag_p
+
+int
+mpfr_nanflag_p (void)
+{
+ return __gmpfr_flags & MPFR_FLAGS_NAN;
+}
+
+#undef mpfr_inexflag_p
+
+int
+mpfr_inexflag_p (void)
+{
+ return __gmpfr_flags & MPFR_FLAGS_INEXACT;
+}
+
+#undef mpfr_erangeflag_p
+
+int
+mpfr_erangeflag_p (void)
+{
+ return __gmpfr_flags & MPFR_FLAGS_ERANGE;
+}
+
+/* #undef mpfr_underflow */
+
+/* Note: In the rounding to the nearest mode, mpfr_underflow
+ always rounds away from 0. In this rounding mode, you must call
+ mpfr_underflow with rnd_mode = MPFR_RNDZ if the exact result
+ is <= 2^(emin-2) in absolute value. */
+
+int
+mpfr_underflow (mpfr_ptr x, mpfr_rnd_t rnd_mode, int sign)
+{
+ int inex;
+
+ MPFR_ASSERT_SIGN (sign);
+
+ if (MPFR_IS_LIKE_RNDZ(rnd_mode, sign < 0))
+ {
+ MPFR_SET_ZERO(x);
+ inex = -1;
+ }
+ else
+ {
+ mpfr_setmin (x, __gmpfr_emin);
+ inex = 1;
+ }
+ MPFR_SET_SIGN(x, sign);
+ __gmpfr_flags |= MPFR_FLAGS_INEXACT | MPFR_FLAGS_UNDERFLOW;
+ return sign > 0 ? inex : -inex;
+}
+
+/* #undef mpfr_overflow */
+
+int
+mpfr_overflow (mpfr_ptr x, mpfr_rnd_t rnd_mode, int sign)
+{
+ int inex;
+
+ MPFR_ASSERT_SIGN(sign);
+ if (MPFR_IS_LIKE_RNDZ(rnd_mode, sign < 0))
+ {
+ mpfr_setmax (x, __gmpfr_emax);
+ inex = -1;
+ }
+ else
+ {
+ MPFR_SET_INF(x);
+ inex = 1;
+ }
+ MPFR_SET_SIGN(x,sign);
+ __gmpfr_flags |= MPFR_FLAGS_INEXACT | MPFR_FLAGS_OVERFLOW;
+ return sign > 0 ? inex : -inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/exp.c b/Build/source/libs/mpfr/mpfr-src/src/exp.c
new file mode 100644
index 00000000000..2a4f3414d09
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/exp.c
@@ -0,0 +1,164 @@
+/* mpfr_exp -- exponential of a floating-point number
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* #define DEBUG */
+
+int
+mpfr_exp (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_exp_t expx;
+ mpfr_prec_t precy;
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(x) ))
+ {
+ if (MPFR_IS_NAN(x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(x))
+ {
+ if (MPFR_IS_POS(x))
+ MPFR_SET_INF(y);
+ else
+ MPFR_SET_ZERO(y);
+ MPFR_SET_POS(y);
+ MPFR_RET(0);
+ }
+ else
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(x));
+ return mpfr_set_ui (y, 1, rnd_mode);
+ }
+ }
+
+ /* First, let's detect most overflow and underflow cases. */
+ {
+ mpfr_t e, bound;
+
+ /* We must extended the exponent range and save the flags now. */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (e, sizeof (mpfr_exp_t) * CHAR_BIT);
+ mpfr_init2 (bound, 32);
+
+ inexact = mpfr_set_exp_t (e, expo.saved_emax, MPFR_RNDN);
+ MPFR_ASSERTD (inexact == 0);
+ mpfr_const_log2 (bound, expo.saved_emax < 0 ? MPFR_RNDD : MPFR_RNDU);
+ mpfr_mul (bound, bound, e, MPFR_RNDU);
+ if (MPFR_UNLIKELY (mpfr_cmp (x, bound) >= 0))
+ {
+ /* x > log(2^emax), thus exp(x) > 2^emax */
+ mpfr_clears (e, bound, (mpfr_ptr) 0);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_overflow (y, rnd_mode, 1);
+ }
+
+ inexact = mpfr_set_exp_t (e, expo.saved_emin, MPFR_RNDN);
+ MPFR_ASSERTD (inexact == 0);
+ inexact = mpfr_sub_ui (e, e, 2, MPFR_RNDN);
+ MPFR_ASSERTD (inexact == 0);
+ mpfr_const_log2 (bound, expo.saved_emin < 0 ? MPFR_RNDU : MPFR_RNDD);
+ mpfr_mul (bound, bound, e, MPFR_RNDD);
+ if (MPFR_UNLIKELY (mpfr_cmp (x, bound) <= 0))
+ {
+ /* x < log(2^(emin - 2)), thus exp(x) < 2^(emin - 2) */
+ mpfr_clears (e, bound, (mpfr_ptr) 0);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (y, rnd_mode == MPFR_RNDN ? MPFR_RNDZ : rnd_mode,
+ 1);
+ }
+
+ /* Other overflow/underflow cases must be detected
+ by the generic routines. */
+ mpfr_clears (e, bound, (mpfr_ptr) 0);
+ MPFR_SAVE_EXPO_FREE (expo);
+ }
+
+ expx = MPFR_GET_EXP (x);
+ precy = MPFR_PREC (y);
+
+ /* if x < 2^(-precy), then exp(x) i.e. gives 1 +/- 1 ulp(1) */
+ if (MPFR_UNLIKELY (expx < 0 && (mpfr_uexp_t) (-expx) > precy))
+ {
+ mpfr_exp_t emin = __gmpfr_emin;
+ mpfr_exp_t emax = __gmpfr_emax;
+ int signx = MPFR_SIGN (x);
+
+ MPFR_SET_POS (y);
+ if (MPFR_IS_NEG_SIGN (signx) && (rnd_mode == MPFR_RNDD ||
+ rnd_mode == MPFR_RNDZ))
+ {
+ __gmpfr_emin = 0;
+ __gmpfr_emax = 0;
+ mpfr_setmax (y, 0); /* y = 1 - epsilon */
+ inexact = -1;
+ }
+ else
+ {
+ __gmpfr_emin = 1;
+ __gmpfr_emax = 1;
+ mpfr_setmin (y, 1); /* y = 1 */
+ if (MPFR_IS_POS_SIGN (signx) && (rnd_mode == MPFR_RNDU ||
+ rnd_mode == MPFR_RNDA))
+ {
+ mp_size_t yn;
+ int sh;
+
+ yn = MPFR_LIMB_SIZE (y);
+ sh = (mpfr_prec_t) yn * GMP_NUMB_BITS - MPFR_PREC(y);
+ MPFR_MANT(y)[0] += MPFR_LIMB_ONE << sh;
+ inexact = 1;
+ }
+ else
+ inexact = -MPFR_FROM_SIGN_TO_INT(signx);
+ }
+
+ __gmpfr_emin = emin;
+ __gmpfr_emax = emax;
+ }
+ else /* General case */
+ {
+ if (MPFR_UNLIKELY (precy >= MPFR_EXP_THRESHOLD))
+ /* mpfr_exp_3 saves the exponent range and flags itself, otherwise
+ the flag changes in mpfr_exp_3 are lost */
+ inexact = mpfr_exp_3 (y, x, rnd_mode); /* O(M(n) log(n)^2) */
+ else
+ {
+ MPFR_SAVE_EXPO_MARK (expo);
+ inexact = mpfr_exp_2 (y, x, rnd_mode); /* O(n^(1/3) M(n)) */
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ MPFR_SAVE_EXPO_FREE (expo);
+ }
+ }
+
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/exp10.c b/Build/source/libs/mpfr/mpfr-src/src/exp10.c
new file mode 100644
index 00000000000..49b9bc8a0ee
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/exp10.c
@@ -0,0 +1,29 @@
+/* mpfr_exp10 -- power of 10 function 10^y
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_exp10 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_ui_pow (y, 10, x, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/exp2.c b/Build/source/libs/mpfr/mpfr-src/src/exp2.c
new file mode 100644
index 00000000000..56eba78ba98
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/exp2.c
@@ -0,0 +1,151 @@
+/* mpfr_exp2 -- power of 2 function 2^y
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of y = 2^z is done by *
+ * y = exp(z*log(2)). The result is exact iff z is an integer. */
+
+int
+mpfr_exp2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ long xint;
+ mpfr_t xfrac;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ if (MPFR_IS_POS (x))
+ MPFR_SET_INF (y);
+ else
+ MPFR_SET_ZERO (y);
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ else /* 2^0 = 1 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO(x));
+ return mpfr_set_ui (y, 1, rnd_mode);
+ }
+ }
+
+ /* since the smallest representable non-zero float is 1/2*2^__gmpfr_emin,
+ if x < __gmpfr_emin - 1, the result is either 1/2*2^__gmpfr_emin or 0 */
+ MPFR_ASSERTN (MPFR_EMIN_MIN >= LONG_MIN + 2);
+ if (MPFR_UNLIKELY (mpfr_cmp_si (x, __gmpfr_emin - 1) < 0))
+ {
+ mpfr_rnd_t rnd2 = rnd_mode;
+ /* in round to nearest mode, round to zero when x <= __gmpfr_emin-2 */
+ if (rnd_mode == MPFR_RNDN &&
+ mpfr_cmp_si_2exp (x, __gmpfr_emin - 2, 0) <= 0)
+ rnd2 = MPFR_RNDZ;
+ return mpfr_underflow (y, rnd2, 1);
+ }
+
+ MPFR_ASSERTN (MPFR_EMAX_MAX <= LONG_MAX);
+ if (MPFR_UNLIKELY (mpfr_cmp_si (x, __gmpfr_emax) >= 0))
+ return mpfr_overflow (y, rnd_mode, 1);
+
+ /* We now know that emin - 1 <= x < emax. */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* 2^x = 1 + x*log(2) + O(x^2) for x near zero, and for |x| <= 1 we have
+ |2^x - 1| <= x < 2^EXP(x). If x > 0 we must round away from 0 (dir=1);
+ if x < 0 we must round toward 0 (dir=0). */
+ MPFR_SMALL_INPUT_AFTER_SAVE_EXPO (y, __gmpfr_one, - MPFR_GET_EXP (x), 0,
+ MPFR_SIGN(x) > 0, rnd_mode, expo, {});
+
+ xint = mpfr_get_si (x, MPFR_RNDZ);
+ mpfr_init2 (xfrac, MPFR_PREC (x));
+ mpfr_sub_si (xfrac, x, xint, MPFR_RNDN); /* exact */
+
+ if (MPFR_IS_ZERO (xfrac))
+ {
+ mpfr_set_ui (y, 1, MPFR_RNDN);
+ inexact = 0;
+ }
+ else
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t;
+
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(y); /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ mpfr_exp_t err; /* error */
+ MPFR_ZIV_DECL (loop);
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + 5 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+
+ /* First computation */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute exp(x*ln(2))*/
+ mpfr_const_log2 (t, MPFR_RNDU); /* ln(2) */
+ mpfr_mul (t, xfrac, t, MPFR_RNDU); /* xfrac * ln(2) */
+ err = Nt - (MPFR_GET_EXP (t) + 2); /* Estimate of the error */
+ mpfr_exp (t, t, MPFR_RNDN); /* exp(xfrac * ln(2)) */
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ break;
+
+ /* Actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (y, t, rnd_mode);
+
+ mpfr_clear (t);
+ }
+
+ mpfr_clear (xfrac);
+ mpfr_clear_flags ();
+ mpfr_mul_2si (y, y, xint, MPFR_RNDN); /* exact or overflow */
+ /* Note: We can have an overflow only when t was rounded up to 2. */
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (y) || inexact > 0);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/exp3.c b/Build/source/libs/mpfr/mpfr-src/src/exp3.c
new file mode 100644
index 00000000000..2cd201197f9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/exp3.c
@@ -0,0 +1,335 @@
+/* mpfr_exp -- exponential of a floating-point number
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H /* for MPFR_MPZ_SIZEINBASE2 */
+#include "mpfr-impl.h"
+
+/* y <- exp(p/2^r) within 1 ulp, using 2^m terms from the series
+ Assume |p/2^r| < 1.
+ We use the following binary splitting formula:
+ P(a,b) = p if a+1=b, P(a,c)*P(c,b) otherwise
+ Q(a,b) = a*2^r if a+1=b [except Q(0,1)=1], Q(a,c)*Q(c,b) otherwise
+ T(a,b) = P(a,b) if a+1=b, Q(c,b)*T(a,c)+P(a,c)*T(c,b) otherwise
+ Then exp(p/2^r) ~ T(0,i)/Q(0,i) for i so that (p/2^r)^i/i! is small enough.
+
+ Since P(a,b) = p^(b-a), and we consider only values of b-a of the form 2^j,
+ we don't need to compute P(), we only precompute p^(2^j) in the ptoj[] array
+ below.
+
+ Since Q(a,b) is divisible by 2^(r*(b-a-1)), we don't compute the power of
+ two part.
+*/
+static void
+mpfr_exp_rational (mpfr_ptr y, mpz_ptr p, long r, int m,
+ mpz_t *Q, mpfr_prec_t *mult)
+{
+ unsigned long n, i, j;
+ mpz_t *S, *ptoj;
+ mpfr_prec_t *log2_nb_terms;
+ mpfr_exp_t diff, expo;
+ mpfr_prec_t precy = MPFR_PREC(y), prec_i_have, prec_ptoj;
+ int k, l;
+
+ MPFR_ASSERTN ((size_t) m < sizeof (long) * CHAR_BIT - 1);
+
+ S = Q + (m+1);
+ ptoj = Q + 2*(m+1); /* ptoj[i] = mantissa^(2^i) */
+ log2_nb_terms = mult + (m+1);
+
+ /* Normalize p */
+ MPFR_ASSERTD (mpz_cmp_ui (p, 0) != 0);
+ n = mpz_scan1 (p, 0); /* number of trailing zeros in p */
+ mpz_tdiv_q_2exp (p, p, n);
+ r -= n; /* since |p/2^r| < 1 and p >= 1, r >= 1 */
+
+ /* Set initial var */
+ mpz_set (ptoj[0], p);
+ for (k = 1; k < m; k++)
+ mpz_mul (ptoj[k], ptoj[k-1], ptoj[k-1]); /* ptoj[k] = p^(2^k) */
+ mpz_set_ui (Q[0], 1);
+ mpz_set_ui (S[0], 1);
+ k = 0;
+ mult[0] = 0; /* the multiplier P[k]/Q[k] for the remaining terms
+ satisfies P[k]/Q[k] <= 2^(-mult[k]) */
+ log2_nb_terms[0] = 0; /* log2(#terms) [exact in 1st loop where 2^k] */
+ prec_i_have = 0;
+
+ /* Main Loop */
+ n = 1UL << m;
+ for (i = 1; (prec_i_have < precy) && (i < n); i++)
+ {
+ /* invariant: Q[0]*Q[1]*...*Q[k] equals i! */
+ k++;
+ log2_nb_terms[k] = 0; /* 1 term */
+ mpz_set_ui (Q[k], i + 1);
+ mpz_set_ui (S[k], i + 1);
+ j = i + 1; /* we have computed j = i+1 terms so far */
+ l = 0;
+ while ((j & 1) == 0) /* combine and reduce */
+ {
+ /* invariant: S[k] corresponds to 2^l consecutive terms */
+ mpz_mul (S[k], S[k], ptoj[l]);
+ mpz_mul (S[k-1], S[k-1], Q[k]);
+ /* Q[k] corresponds to 2^l consecutive terms too.
+ Since it does not contains the factor 2^(r*2^l),
+ when going from l to l+1 we need to multiply
+ by 2^(r*2^(l+1))/2^(r*2^l) = 2^(r*2^l) */
+ mpz_mul_2exp (S[k-1], S[k-1], r << l);
+ mpz_add (S[k-1], S[k-1], S[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ log2_nb_terms[k-1] ++; /* number of terms in S[k-1]
+ is a power of 2 by construction */
+ MPFR_MPZ_SIZEINBASE2 (prec_i_have, Q[k]);
+ MPFR_MPZ_SIZEINBASE2 (prec_ptoj, ptoj[l]);
+ mult[k-1] += prec_i_have + (r << l) - prec_ptoj - 1;
+ prec_i_have = mult[k] = mult[k-1];
+ /* since mult[k] >= mult[k-1] + nbits(Q[k]),
+ we have Q[0]*...*Q[k] <= 2^mult[k] = 2^prec_i_have */
+ l ++;
+ j >>= 1;
+ k --;
+ }
+ }
+
+ /* accumulate all products in S[0] and Q[0]. Warning: contrary to above,
+ here we do not have log2_nb_terms[k-1] = log2_nb_terms[k]+1. */
+ l = 0; /* number of accumulated terms in the right part S[k]/Q[k] */
+ while (k > 0)
+ {
+ j = log2_nb_terms[k-1];
+ mpz_mul (S[k], S[k], ptoj[j]);
+ mpz_mul (S[k-1], S[k-1], Q[k]);
+ l += 1 << log2_nb_terms[k];
+ mpz_mul_2exp (S[k-1], S[k-1], r * l);
+ mpz_add (S[k-1], S[k-1], S[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ k--;
+ }
+
+ /* Q[0] now equals i! */
+ MPFR_MPZ_SIZEINBASE2 (prec_i_have, S[0]);
+ diff = (mpfr_exp_t) prec_i_have - 2 * (mpfr_exp_t) precy;
+ expo = diff;
+ if (diff >= 0)
+ mpz_fdiv_q_2exp (S[0], S[0], diff);
+ else
+ mpz_mul_2exp (S[0], S[0], -diff);
+
+ MPFR_MPZ_SIZEINBASE2 (prec_i_have, Q[0]);
+ diff = (mpfr_exp_t) prec_i_have - (mpfr_prec_t) precy;
+ expo -= diff;
+ if (diff > 0)
+ mpz_fdiv_q_2exp (Q[0], Q[0], diff);
+ else
+ mpz_mul_2exp (Q[0], Q[0], -diff);
+
+ mpz_tdiv_q (S[0], S[0], Q[0]);
+ mpfr_set_z (y, S[0], MPFR_RNDD);
+ MPFR_SET_EXP (y, MPFR_GET_EXP (y) + expo - r * (i - 1) );
+}
+
+#define shift (GMP_NUMB_BITS/2)
+
+int
+mpfr_exp_3 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t t, x_copy, tmp;
+ mpz_t uk;
+ mpfr_exp_t ttt, shift_x;
+ unsigned long twopoweri;
+ mpz_t *P;
+ mpfr_prec_t *mult;
+ int i, k, loop;
+ int prec_x;
+ mpfr_prec_t realprec, Prec;
+ int iter;
+ int inexact = 0;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (ziv_loop);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y,
+ inexact));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* decompose x */
+ /* we first write x = 1.xxxxxxxxxxxxx
+ ----- k bits -- */
+ prec_x = MPFR_INT_CEIL_LOG2 (MPFR_PREC (x)) - MPFR_LOG2_GMP_NUMB_BITS;
+ if (prec_x < 0)
+ prec_x = 0;
+
+ ttt = MPFR_GET_EXP (x);
+ mpfr_init2 (x_copy, MPFR_PREC(x));
+ mpfr_set (x_copy, x, MPFR_RNDD);
+
+ /* we shift to get a number less than 1 */
+ if (ttt > 0)
+ {
+ shift_x = ttt;
+ mpfr_div_2ui (x_copy, x, ttt, MPFR_RNDN);
+ ttt = MPFR_GET_EXP (x_copy);
+ }
+ else
+ shift_x = 0;
+ MPFR_ASSERTD (ttt <= 0);
+
+ /* Init prec and vars */
+ realprec = MPFR_PREC (y) + MPFR_INT_CEIL_LOG2 (prec_x + MPFR_PREC (y));
+ Prec = realprec + shift + 2 + shift_x;
+ mpfr_init2 (t, Prec);
+ mpfr_init2 (tmp, Prec);
+ mpz_init (uk);
+
+ /* Main loop */
+ MPFR_ZIV_INIT (ziv_loop, realprec);
+ for (;;)
+ {
+ int scaled = 0;
+ MPFR_BLOCK_DECL (flags);
+
+ k = MPFR_INT_CEIL_LOG2 (Prec) - MPFR_LOG2_GMP_NUMB_BITS;
+
+ /* now we have to extract */
+ twopoweri = GMP_NUMB_BITS;
+
+ /* Allocate tables */
+ P = (mpz_t*) (*__gmp_allocate_func) (3*(k+2)*sizeof(mpz_t));
+ for (i = 0; i < 3*(k+2); i++)
+ mpz_init (P[i]);
+ mult = (mpfr_prec_t*) (*__gmp_allocate_func) (2*(k+2)*sizeof(mpfr_prec_t));
+
+ /* Particular case for i==0 */
+ mpfr_extract (uk, x_copy, 0);
+ MPFR_ASSERTD (mpz_cmp_ui (uk, 0) != 0);
+ mpfr_exp_rational (tmp, uk, shift + twopoweri - ttt, k + 1, P, mult);
+ for (loop = 0; loop < shift; loop++)
+ mpfr_sqr (tmp, tmp, MPFR_RNDD);
+ twopoweri *= 2;
+
+ /* General case */
+ iter = (k <= prec_x) ? k : prec_x;
+ for (i = 1; i <= iter; i++)
+ {
+ mpfr_extract (uk, x_copy, i);
+ if (MPFR_LIKELY (mpz_cmp_ui (uk, 0) != 0))
+ {
+ mpfr_exp_rational (t, uk, twopoweri - ttt, k - i + 1, P, mult);
+ mpfr_mul (tmp, tmp, t, MPFR_RNDD);
+ }
+ MPFR_ASSERTN (twopoweri <= LONG_MAX/2);
+ twopoweri *=2;
+ }
+
+ /* Clear tables */
+ for (i = 0; i < 3*(k+2); i++)
+ mpz_clear (P[i]);
+ (*__gmp_free_func) (P, 3*(k+2)*sizeof(mpz_t));
+ (*__gmp_free_func) (mult, 2*(k+2)*sizeof(mpfr_prec_t));
+
+ if (shift_x > 0)
+ {
+ MPFR_BLOCK (flags, {
+ for (loop = 0; loop < shift_x - 1; loop++)
+ mpfr_sqr (tmp, tmp, MPFR_RNDD);
+ mpfr_sqr (t, tmp, MPFR_RNDD);
+ } );
+
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
+ {
+ /* tmp <= exact result, so that it is a real overflow. */
+ inexact = mpfr_overflow (y, rnd_mode, 1);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+
+ if (MPFR_UNLIKELY (MPFR_UNDERFLOW (flags)))
+ {
+ /* This may be a spurious underflow. So, let's scale
+ the result. */
+ mpfr_mul_2ui (tmp, tmp, 1, MPFR_RNDD); /* no overflow, exact */
+ mpfr_sqr (t, tmp, MPFR_RNDD);
+ if (MPFR_IS_ZERO (t))
+ {
+ /* approximate result < 2^(emin - 3), thus
+ exact result < 2^(emin - 2). */
+ inexact = mpfr_underflow (y, (rnd_mode == MPFR_RNDN) ?
+ MPFR_RNDZ : rnd_mode, 1);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_UNDERFLOW);
+ break;
+ }
+ scaled = 1;
+ }
+ }
+
+ if (mpfr_can_round (shift_x > 0 ? t : tmp, realprec, MPFR_RNDN, MPFR_RNDZ,
+ MPFR_PREC(y) + (rnd_mode == MPFR_RNDN)))
+ {
+ inexact = mpfr_set (y, shift_x > 0 ? t : tmp, rnd_mode);
+ if (MPFR_UNLIKELY (scaled && MPFR_IS_PURE_FP (y)))
+ {
+ int inex2;
+ mpfr_exp_t ey;
+
+ /* The result has been scaled and needs to be corrected. */
+ ey = MPFR_GET_EXP (y);
+ inex2 = mpfr_mul_2si (y, y, -2, rnd_mode);
+ if (inex2) /* underflow */
+ {
+ if (rnd_mode == MPFR_RNDN && inexact < 0 &&
+ MPFR_IS_ZERO (y) && ey == __gmpfr_emin + 1)
+ {
+ /* Double rounding case: in MPFR_RNDN, the scaled
+ result has been rounded downward to 2^emin.
+ As the exact result is > 2^(emin - 2), correct
+ rounding must be done upward. */
+ /* TODO: make sure in coverage tests that this line
+ is reached. */
+ inexact = mpfr_underflow (y, MPFR_RNDU, 1);
+ }
+ else
+ {
+ /* No double rounding. */
+ inexact = inex2;
+ }
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_UNDERFLOW);
+ }
+ }
+ break;
+ }
+
+ MPFR_ZIV_NEXT (ziv_loop, realprec);
+ Prec = realprec + shift + 2 + shift_x;
+ mpfr_set_prec (t, Prec);
+ mpfr_set_prec (tmp, Prec);
+ }
+ MPFR_ZIV_FREE (ziv_loop);
+
+ mpz_clear (uk);
+ mpfr_clear (tmp);
+ mpfr_clear (t);
+ mpfr_clear (x_copy);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return inexact;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/exp_2.c b/Build/source/libs/mpfr/mpfr-src/src/exp_2.c
new file mode 100644
index 00000000000..bd181bea622
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/exp_2.c
@@ -0,0 +1,421 @@
+/* mpfr_exp_2 -- exponential of a floating-point number
+ using algorithms in O(n^(1/2)*M(n)) and O(n^(1/3)*M(n))
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* #define DEBUG */
+#define MPFR_NEED_LONGLONG_H /* for count_leading_zeros */
+#include "mpfr-impl.h"
+
+static unsigned long
+mpfr_exp2_aux (mpz_t, mpfr_srcptr, mpfr_prec_t, mpfr_exp_t *);
+static unsigned long
+mpfr_exp2_aux2 (mpz_t, mpfr_srcptr, mpfr_prec_t, mpfr_exp_t *);
+static mpfr_exp_t
+mpz_normalize (mpz_t, mpz_t, mpfr_exp_t);
+static mpfr_exp_t
+mpz_normalize2 (mpz_t, mpz_t, mpfr_exp_t, mpfr_exp_t);
+
+/* if k = the number of bits of z > q, divides z by 2^(k-q) and returns k-q.
+ Otherwise do nothing and return 0.
+ */
+static mpfr_exp_t
+mpz_normalize (mpz_t rop, mpz_t z, mpfr_exp_t q)
+{
+ size_t k;
+
+ MPFR_MPZ_SIZEINBASE2 (k, z);
+ MPFR_ASSERTD (k == (mpfr_uexp_t) k);
+ if (q < 0 || (mpfr_uexp_t) k > (mpfr_uexp_t) q)
+ {
+ mpz_fdiv_q_2exp (rop, z, (unsigned long) ((mpfr_uexp_t) k - q));
+ return (mpfr_exp_t) k - q;
+ }
+ if (MPFR_UNLIKELY(rop != z))
+ mpz_set (rop, z);
+ return 0;
+}
+
+/* if expz > target, shift z by (expz-target) bits to the left.
+ if expz < target, shift z by (target-expz) bits to the right.
+ Returns target.
+*/
+static mpfr_exp_t
+mpz_normalize2 (mpz_t rop, mpz_t z, mpfr_exp_t expz, mpfr_exp_t target)
+{
+ if (target > expz)
+ mpz_fdiv_q_2exp (rop, z, target - expz);
+ else
+ mpz_mul_2exp (rop, z, expz - target);
+ return target;
+}
+
+/* use Brent's formula exp(x) = (1+r+r^2/2!+r^3/3!+...)^(2^K)*2^n
+ where x = n*log(2)+(2^K)*r
+ together with the Paterson-Stockmeyer O(t^(1/2)) algorithm for the
+ evaluation of power series. The resulting complexity is O(n^(1/3)*M(n)).
+ This function returns with the exact flags due to exp.
+*/
+int
+mpfr_exp_2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ long n;
+ unsigned long K, k, l, err; /* FIXME: Which type ? */
+ int error_r;
+ mpfr_exp_t exps, expx;
+ mpfr_prec_t q, precy;
+ int inexact;
+ mpfr_t r, s;
+ mpz_t ss;
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y,
+ inexact));
+
+ expx = MPFR_GET_EXP (x);
+ precy = MPFR_PREC(y);
+
+ /* Warning: we cannot use the 'double' type here, since on 64-bit machines
+ x may be as large as 2^62*log(2) without overflow, and then x/log(2)
+ is about 2^62: not every integer of that size can be represented as a
+ 'double', thus the argument reduction would fail. */
+ if (expx <= -2)
+ /* |x| <= 0.25, thus n = round(x/log(2)) = 0 */
+ n = 0;
+ else
+ {
+ mpfr_init2 (r, sizeof (long) * CHAR_BIT);
+ mpfr_const_log2 (r, MPFR_RNDZ);
+ mpfr_div (r, x, r, MPFR_RNDN);
+ n = mpfr_get_si (r, MPFR_RNDN);
+ mpfr_clear (r);
+ }
+ /* we have |x| <= (|n|+1)*log(2) */
+ MPFR_LOG_MSG (("d(x)=%1.30e n=%ld\n", mpfr_get_d1(x), n));
+
+ /* error_r bounds the cancelled bits in x - n*log(2) */
+ if (MPFR_UNLIKELY (n == 0))
+ error_r = 0;
+ else
+ {
+ count_leading_zeros (error_r, (mp_limb_t) SAFE_ABS (unsigned long, n) + 1);
+ error_r = GMP_NUMB_BITS - error_r;
+ /* we have |x| <= 2^error_r * log(2) */
+ }
+
+ /* for the O(n^(1/2)*M(n)) method, the Taylor series computation of
+ n/K terms costs about n/(2K) multiplications when computed in fixed
+ point */
+ K = (precy < MPFR_EXP_2_THRESHOLD) ? __gmpfr_isqrt ((precy + 1) / 2)
+ : __gmpfr_cuberoot (4*precy);
+ l = (precy - 1) / K + 1;
+ err = K + MPFR_INT_CEIL_LOG2 (2 * l + 18);
+ /* add K extra bits, i.e. failure probability <= 1/2^K = O(1/precy) */
+ q = precy + err + K + 8;
+ /* if |x| >> 1, take into account the cancelled bits */
+ if (expx > 0)
+ q += expx;
+
+ /* Note: due to the mpfr_prec_round below, it is not possible to use
+ the MPFR_GROUP_* macros here. */
+
+ mpfr_init2 (r, q + error_r);
+ mpfr_init2 (s, q + error_r);
+
+ /* the algorithm consists in computing an upper bound of exp(x) using
+ a precision of q bits, and see if we can round to MPFR_PREC(y) taking
+ into account the maximal error. Otherwise we increase q. */
+ MPFR_ZIV_INIT (loop, q);
+ for (;;)
+ {
+ MPFR_LOG_MSG (("n=%ld K=%lu l=%lu q=%lu error_r=%d\n",
+ n, K, l, (unsigned long) q, error_r));
+
+ /* First reduce the argument to r = x - n * log(2),
+ so that r is small in absolute value. We want an upper
+ bound on r to get an upper bound on exp(x). */
+
+ /* if n<0, we have to get an upper bound of log(2)
+ in order to get an upper bound of r = x-n*log(2) */
+ mpfr_const_log2 (s, (n >= 0) ? MPFR_RNDZ : MPFR_RNDU);
+ /* s is within 1 ulp(s) of log(2) */
+
+ mpfr_mul_ui (r, s, (n < 0) ? -n : n, (n >= 0) ? MPFR_RNDZ : MPFR_RNDU);
+ /* r is within 3 ulps of |n|*log(2) */
+ if (n < 0)
+ MPFR_CHANGE_SIGN (r);
+ /* r <= n*log(2), within 3 ulps */
+
+ MPFR_LOG_VAR (x);
+ MPFR_LOG_VAR (r);
+
+ mpfr_sub (r, x, r, MPFR_RNDU);
+
+ if (MPFR_IS_PURE_FP (r))
+ {
+ while (MPFR_IS_NEG (r))
+ { /* initial approximation n was too large */
+ n--;
+ mpfr_add (r, r, s, MPFR_RNDU);
+ }
+
+ /* since there was a cancellation in x - n*log(2), the low error_r
+ bits from r are zero and thus non significant, thus we can reduce
+ the working precision */
+ if (error_r > 0)
+ mpfr_prec_round (r, q, MPFR_RNDU);
+ /* the error on r is at most 3 ulps (3 ulps if error_r = 0,
+ and 1 + 3/2 if error_r > 0) */
+ MPFR_LOG_VAR (r);
+ MPFR_ASSERTD (MPFR_IS_POS (r));
+ mpfr_div_2ui (r, r, K, MPFR_RNDU); /* r = (x-n*log(2))/2^K, exact */
+
+ mpz_init (ss);
+ exps = mpfr_get_z_2exp (ss, s);
+ /* s <- 1 + r/1! + r^2/2! + ... + r^l/l! */
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (r) && MPFR_EXP (r) < 0);
+ l = (precy < MPFR_EXP_2_THRESHOLD)
+ ? mpfr_exp2_aux (ss, r, q, &exps) /* naive method */
+ : mpfr_exp2_aux2 (ss, r, q, &exps); /* Paterson/Stockmeyer meth */
+
+ MPFR_LOG_MSG (("l=%lu q=%lu (K+l)*q^2=%1.3e\n",
+ l, (unsigned long) q, (K + l) * (double) q * q));
+
+ for (k = 0; k < K; k++)
+ {
+ mpz_mul (ss, ss, ss);
+ exps *= 2;
+ exps += mpz_normalize (ss, ss, q);
+ }
+ mpfr_set_z (s, ss, MPFR_RNDN);
+
+ MPFR_SET_EXP(s, MPFR_GET_EXP (s) + exps);
+ mpz_clear (ss);
+
+ /* error is at most 2^K*l, plus 2 to take into account of
+ the error of 3 ulps on r */
+ err = K + MPFR_INT_CEIL_LOG2 (l) + 2;
+
+ MPFR_LOG_MSG (("before mult. by 2^n:\n", 0));
+ MPFR_LOG_VAR (s);
+ MPFR_LOG_MSG (("err=%lu bits\n", K));
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, q - err, precy, rnd_mode)))
+ {
+ mpfr_clear_flags ();
+ inexact = mpfr_mul_2si (y, s, n, rnd_mode);
+ break;
+ }
+ }
+
+ MPFR_ZIV_NEXT (loop, q);
+ mpfr_set_prec (r, q + error_r);
+ mpfr_set_prec (s, q + error_r);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ mpfr_clear (r);
+ mpfr_clear (s);
+
+ return inexact;
+}
+
+/* s <- 1 + r/1! + r^2/2! + ... + r^l/l! while MPFR_EXP(r^l/l!)+MPFR_EXPR(r)>-q
+ using naive method with O(l) multiplications.
+ Return the number of iterations l.
+ The absolute error on s is less than 3*l*(l+1)*2^(-q).
+ Version using fixed-point arithmetic with mpz instead
+ of mpfr for internal computations.
+ NOTE[VL]: the following sentence seems to be obsolete since MY_INIT_MPZ
+ is no longer used (r6919); qn was the number of limbs of q.
+ s must have at least qn+1 limbs (qn should be enough, but currently fails
+ since mpz_mul_2exp(s, s, q-1) reallocates qn+1 limbs)
+*/
+static unsigned long
+mpfr_exp2_aux (mpz_t s, mpfr_srcptr r, mpfr_prec_t q, mpfr_exp_t *exps)
+{
+ unsigned long l;
+ mpfr_exp_t dif, expt, expr;
+ mpz_t t, rr;
+ mp_size_t sbit, tbit;
+
+ MPFR_ASSERTN (MPFR_IS_PURE_FP (r));
+
+ expt = 0;
+ *exps = 1 - (mpfr_exp_t) q; /* s = 2^(q-1) */
+ mpz_init (t);
+ mpz_init (rr);
+ mpz_set_ui(t, 1);
+ mpz_set_ui(s, 1);
+ mpz_mul_2exp(s, s, q-1);
+ expr = mpfr_get_z_2exp(rr, r); /* no error here */
+
+ l = 0;
+ for (;;) {
+ l++;
+ mpz_mul(t, t, rr);
+ expt += expr;
+ MPFR_MPZ_SIZEINBASE2 (sbit, s);
+ MPFR_MPZ_SIZEINBASE2 (tbit, t);
+ dif = *exps + sbit - expt - tbit;
+ /* truncates the bits of t which are < ulp(s) = 2^(1-q) */
+ expt += mpz_normalize(t, t, (mpfr_exp_t) q-dif); /* error at most 2^(1-q) */
+ mpz_fdiv_q_ui (t, t, l); /* error at most 2^(1-q) */
+ /* the error wrt t^l/l! is here at most 3*l*ulp(s) */
+ MPFR_ASSERTD (expt == *exps);
+ if (mpz_sgn (t) == 0)
+ break;
+ mpz_add(s, s, t); /* no error here: exact */
+ /* ensures rr has the same size as t: after several shifts, the error
+ on rr is still at most ulp(t)=ulp(s) */
+ MPFR_MPZ_SIZEINBASE2 (tbit, t);
+ expr += mpz_normalize(rr, rr, tbit);
+ }
+
+ mpz_clear (t);
+ mpz_clear (rr);
+
+ return 3 * l * (l + 1);
+}
+
+/* s <- 1 + r/1! + r^2/2! + ... + r^l/l! while MPFR_EXP(r^l/l!)+MPFR_EXPR(r)>-q
+ using Paterson-Stockmeyer algorithm with O(sqrt(l)) multiplications.
+ Return l.
+ Uses m multiplications of full size and 2l/m of decreasing size,
+ i.e. a total equivalent to about m+l/m full multiplications,
+ i.e. 2*sqrt(l) for m=sqrt(l).
+ NOTE[VL]: The following sentence seems to be obsolete since MY_INIT_MPZ
+ is no longer used (r6919); sizer was the number of limbs of r.
+ Version using mpz. ss must have at least (sizer+1) limbs.
+ The error is bounded by (l^2+4*l) ulps where l is the return value.
+*/
+static unsigned long
+mpfr_exp2_aux2 (mpz_t s, mpfr_srcptr r, mpfr_prec_t q, mpfr_exp_t *exps)
+{
+ mpfr_exp_t expr, *expR, expt;
+ mpfr_prec_t ql;
+ unsigned long l, m, i;
+ mpz_t t, *R, rr, tmp;
+ mp_size_t sbit, rrbit;
+ MPFR_TMP_DECL(marker);
+
+ /* estimate value of l */
+ MPFR_ASSERTD (MPFR_GET_EXP (r) < 0);
+ l = q / (- MPFR_GET_EXP (r));
+ m = __gmpfr_isqrt (l);
+ /* we access R[2], thus we need m >= 2 */
+ if (m < 2)
+ m = 2;
+
+ MPFR_TMP_MARK(marker);
+ R = (mpz_t*) MPFR_TMP_ALLOC ((m + 1) * sizeof (mpz_t)); /* R[i] is r^i */
+ expR = (mpfr_exp_t*) MPFR_TMP_ALLOC((m + 1) * sizeof (mpfr_exp_t));
+ /* expR[i] is the exponent for R[i] */
+ mpz_init (tmp);
+ mpz_init (rr);
+ mpz_init (t);
+ mpz_set_ui (s, 0);
+ *exps = 1 - q; /* 1 ulp = 2^(1-q) */
+ for (i = 0 ; i <= m ; i++)
+ mpz_init (R[i]);
+ expR[1] = mpfr_get_z_2exp (R[1], r); /* exact operation: no error */
+ expR[1] = mpz_normalize2 (R[1], R[1], expR[1], 1 - q); /* error <= 1 ulp */
+ mpz_mul (t, R[1], R[1]); /* err(t) <= 2 ulps */
+ mpz_fdiv_q_2exp (R[2], t, q - 1); /* err(R[2]) <= 3 ulps */
+ expR[2] = 1 - q;
+ for (i = 3 ; i <= m ; i++)
+ {
+ if ((i & 1) == 1)
+ mpz_mul (t, R[i-1], R[1]); /* err(t) <= 2*i-2 */
+ else
+ mpz_mul (t, R[i/2], R[i/2]);
+ mpz_fdiv_q_2exp (R[i], t, q - 1); /* err(R[i]) <= 2*i-1 ulps */
+ expR[i] = 1 - q;
+ }
+ mpz_set_ui (R[0], 1);
+ mpz_mul_2exp (R[0], R[0], q-1);
+ expR[0] = 1-q; /* R[0]=1 */
+ mpz_set_ui (rr, 1);
+ expr = 0; /* rr contains r^l/l! */
+ /* by induction: err(rr) <= 2*l ulps */
+
+ l = 0;
+ ql = q; /* precision used for current giant step */
+ do
+ {
+ /* all R[i] must have exponent 1-ql */
+ if (l != 0)
+ for (i = 0 ; i < m ; i++)
+ expR[i] = mpz_normalize2 (R[i], R[i], expR[i], 1 - ql);
+ /* the absolute error on R[i]*rr is still 2*i-1 ulps */
+ expt = mpz_normalize2 (t, R[m-1], expR[m-1], 1 - ql);
+ /* err(t) <= 2*m-1 ulps */
+ /* computes t = 1 + r/(l+1) + ... + r^(m-1)*l!/(l+m-1)!
+ using Horner's scheme */
+ for (i = m-1 ; i-- != 0 ; )
+ {
+ mpz_fdiv_q_ui (t, t, l+i+1); /* err(t) += 1 ulp */
+ mpz_add (t, t, R[i]);
+ }
+ /* now err(t) <= (3m-2) ulps */
+
+ /* now multiplies t by r^l/l! and adds to s */
+ mpz_mul (t, t, rr);
+ expt += expr;
+ expt = mpz_normalize2 (t, t, expt, *exps);
+ /* err(t) <= (3m-1) + err_rr(l) <= (3m-2) + 2*l */
+ MPFR_ASSERTD (expt == *exps);
+ mpz_add (s, s, t); /* no error here */
+
+ /* updates rr, the multiplication of the factors l+i could be done
+ using binary splitting too, but it is not sure it would save much */
+ mpz_mul (t, rr, R[m]); /* err(t) <= err(rr) + 2m-1 */
+ expr += expR[m];
+ mpz_set_ui (tmp, 1);
+ for (i = 1 ; i <= m ; i++)
+ mpz_mul_ui (tmp, tmp, l + i);
+ mpz_fdiv_q (t, t, tmp); /* err(t) <= err(rr) + 2m */
+ l += m;
+ if (MPFR_UNLIKELY (mpz_sgn (t) == 0))
+ break;
+ expr += mpz_normalize (rr, t, ql); /* err_rr(l+1) <= err_rr(l) + 2m+1 */
+ if (MPFR_UNLIKELY (mpz_sgn (rr) == 0))
+ rrbit = 1;
+ else
+ MPFR_MPZ_SIZEINBASE2 (rrbit, rr);
+ MPFR_MPZ_SIZEINBASE2 (sbit, s);
+ ql = q - *exps - sbit + expr + rrbit;
+ /* TODO: Wrong cast. I don't want what is right, but this is
+ certainly wrong */
+ }
+ while ((size_t) expr + rrbit > (size_t) -q);
+
+ for (i = 0 ; i <= m ; i++)
+ mpz_clear (R[i]);
+ MPFR_TMP_FREE(marker);
+ mpz_clear (rr);
+ mpz_clear (t);
+ mpz_clear (tmp);
+
+ return l * (l + 4);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/expm1.c b/Build/source/libs/mpfr/mpfr-src/src/expm1.c
new file mode 100644
index 00000000000..fab05be47f1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/expm1.c
@@ -0,0 +1,179 @@
+/* mpfr_expm1 -- Compute exp(x)-1
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of expm1 is done by
+ expm1(x)=exp(x)-1
+ */
+
+int
+mpfr_expm1 (mpfr_ptr y, mpfr_srcptr x , mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_exp_t ex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ /* check for inf or -inf (expm1(-inf)=-1) */
+ else if (MPFR_IS_INF (x))
+ {
+ if (MPFR_IS_POS (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ else
+ return mpfr_set_si (y, -1, rnd_mode);
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y); /* expm1(+/- 0) = +/- 0 */
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ }
+
+ ex = MPFR_GET_EXP (x);
+ if (ex < 0)
+ {
+ /* For -1 < x < 0, abs(expm1(x)-x) < x^2/2.
+ For 0 < x < 1, abs(expm1(x)-x) < x^2. */
+ if (MPFR_IS_POS (x))
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 0, 1, rnd_mode, {});
+ else
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 1, 0, rnd_mode, {});
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (MPFR_IS_NEG (x) && ex > 5) /* x <= -32 */
+ {
+ mpfr_t minus_one, t;
+ mpfr_exp_t err;
+
+ mpfr_init2 (minus_one, 2);
+ mpfr_init2 (t, 64);
+ mpfr_set_si (minus_one, -1, MPFR_RNDN);
+ mpfr_const_log2 (t, MPFR_RNDU); /* round upward since x is negative */
+ mpfr_div (t, x, t, MPFR_RNDU); /* > x / ln(2) */
+ err = mpfr_cmp_si (t, MPFR_EMIN_MIN >= -LONG_MAX ?
+ MPFR_EMIN_MIN : -LONG_MAX) <= 0 ?
+ - (MPFR_EMIN_MIN >= -LONG_MAX ? MPFR_EMIN_MIN : -LONG_MAX) :
+ - mpfr_get_si (t, MPFR_RNDU);
+ /* exp(x) = 2^(x/ln(2))
+ <= 2^max(MPFR_EMIN_MIN,-LONG_MAX,ceil(x/ln(2)+epsilon))
+ with epsilon > 0 */
+ mpfr_clear (t);
+ MPFR_SMALL_INPUT_AFTER_SAVE_EXPO (y, minus_one, err, 0, 0, rnd_mode,
+ expo, { mpfr_clear (minus_one); });
+ mpfr_clear (minus_one);
+ }
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t;
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(y); /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ mpfr_exp_t err, exp_te; /* error */
+ MPFR_ZIV_DECL (loop);
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + MPFR_INT_CEIL_LOG2 (Ny) + 6;
+
+ /* if |x| is smaller than 2^(-e), we will loose about e bits in the
+ subtraction exp(x) - 1 */
+ if (ex < 0)
+ Nt += - ex;
+
+ /* initialize auxiliary variable */
+ mpfr_init2 (t, Nt);
+
+ /* First computation of expm1 */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* exp(x) may overflow and underflow */
+ MPFR_BLOCK (flags, mpfr_exp (t, x, MPFR_RNDN));
+ if (MPFR_OVERFLOW (flags))
+ {
+ inexact = mpfr_overflow (y, rnd_mode, MPFR_SIGN_POS);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+ else if (MPFR_UNDERFLOW (flags))
+ {
+ inexact = mpfr_set_si (y, -1, rnd_mode);
+ MPFR_ASSERTD (inexact == 0);
+ inexact = -1;
+ if (MPFR_IS_LIKE_RNDZ (rnd_mode, 1))
+ {
+ inexact = 1;
+ mpfr_nexttozero (y);
+ }
+ break;
+ }
+
+ exp_te = MPFR_GET_EXP (t); /* FIXME: exp(x) may overflow! */
+ mpfr_sub_ui (t, t, 1, MPFR_RNDN); /* exp(x)-1 */
+
+ /* error estimate */
+ /*err=Nt-(__gmpfr_ceil_log2(1+pow(2,MPFR_EXP(te)-MPFR_EXP(t))));*/
+ err = Nt - (MAX (exp_te - MPFR_GET_EXP (t), 0) + 1);
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ {
+ inexact = mpfr_set (y, t, rnd_mode);
+ break;
+ }
+
+ /* increase the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ mpfr_clear (t);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/extract.c b/Build/source/libs/mpfr/mpfr-src/src/extract.c
new file mode 100644
index 00000000000..c3bb0190276
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/extract.c
@@ -0,0 +1,55 @@
+/* mpfr_extract -- bit-extraction function for the binary splitting algorithm
+
+Copyright 2000-2002, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* given 0 <= |p| < 1, this function extracts limbs of p and puts them in y.
+ It is mainly designed for the "binary splitting" algorithm.
+
+ More precisely, if B = 2^GMP_NUMB_BITS:
+ - for i=0, y = floor(p * B)
+ - for i>0, y = (p * B^(2^i)) mod B^(2^(i-1))
+ */
+
+void
+mpfr_extract (mpz_ptr y, mpfr_srcptr p, unsigned int i)
+{
+ unsigned long two_i = 1UL << i;
+ unsigned long two_i_2 = i ? two_i / 2 : 1;
+ mp_size_t size_p = MPFR_LIMB_SIZE (p);
+
+ /* as 0 <= |p| < 1, we don't have to care with infinities, NaN, ... */
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (p));
+
+ _mpz_realloc (y, two_i_2);
+ if ((mpfr_uexp_t) size_p < two_i)
+ {
+ MPN_ZERO (PTR(y), two_i_2);
+ if ((mpfr_uexp_t) size_p >= two_i_2)
+ MPN_COPY (PTR(y) + two_i - size_p, MPFR_MANT(p), size_p - two_i_2);
+ }
+ else
+ MPN_COPY (PTR(y), MPFR_MANT(p) + size_p - two_i, two_i_2);
+
+ MPN_NORMALIZE (PTR(y), two_i_2);
+ SIZ(y) = (MPFR_IS_NEG (p)) ? -two_i_2 : two_i_2;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/factorial.c b/Build/source/libs/mpfr/mpfr-src/src/factorial.c
new file mode 100644
index 00000000000..aa9a126d4e5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/factorial.c
@@ -0,0 +1,113 @@
+/* mpfr_fac_ui -- factorial of a non-negative integer
+
+Copyright 2001, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of n! is done by
+
+ n!=prod^{n}_{i=1}i
+ */
+
+/* FIXME: efficient problems with large arguments; see comments in gamma.c. */
+
+int
+mpfr_fac_ui (mpfr_ptr y, unsigned long int x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t t; /* Variable of Intermediary Calculation*/
+ unsigned long i;
+ int round, inexact;
+
+ mpfr_prec_t Ny; /* Precision of output variable */
+ mpfr_prec_t Nt; /* Precision of Intermediary Calculation variable */
+ mpfr_prec_t err; /* Precision of error */
+
+ mpfr_rnd_t rnd;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ /***** test x = 0 and x == 1******/
+ if (MPFR_UNLIKELY (x <= 1))
+ return mpfr_set_ui (y, 1, rnd_mode); /* 0! = 1 and 1! = 1 */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Initialisation of the Precision */
+ Ny = MPFR_PREC (y);
+
+ /* compute the size of intermediary variable */
+ Nt = Ny + 2 * MPFR_INT_CEIL_LOG2 (x) + 7;
+
+ mpfr_init2 (t, Nt); /* initialise of intermediary variable */
+
+ rnd = MPFR_RNDZ;
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute factorial */
+ inexact = mpfr_set_ui (t, 1, rnd);
+ for (i = 2 ; i <= x ; i++)
+ {
+ round = mpfr_mul_ui (t, t, i, rnd);
+ /* assume the first inexact product gives the sign
+ of difference: is that always correct? */
+ if (inexact == 0)
+ inexact = round;
+ }
+
+ err = Nt - 1 - MPFR_INT_CEIL_LOG2 (Nt);
+
+ round = !inexact || mpfr_can_round (t, err, rnd, MPFR_RNDZ,
+ Ny + (rnd_mode == MPFR_RNDN));
+
+ if (MPFR_LIKELY (round))
+ {
+ /* If inexact = 0, then t is exactly x!, so round is the
+ correct inexact flag.
+ Otherwise, t != x! since we rounded to zero or away. */
+ round = mpfr_set (y, t, rnd_mode);
+ if (inexact == 0)
+ {
+ inexact = round;
+ break;
+ }
+ else if ((inexact < 0 && round <= 0)
+ || (inexact > 0 && round >= 0))
+ break;
+ else /* inexact and round have opposite signs: we cannot
+ compute the inexact flag. Restart using the
+ symmetric rounding. */
+ rnd = (rnd == MPFR_RNDZ) ? MPFR_RNDU : MPFR_RNDZ;
+ }
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
+
+
+
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_intmax.c b/Build/source/libs/mpfr/mpfr-src/src/fits_intmax.c
new file mode 100644
index 00000000000..c3d072a228d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_intmax.c
@@ -0,0 +1,107 @@
+/* mpfr_fits_intmax_p -- test whether an mpfr fits an intmax_t.
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h" /* for a build within gmp */
+#endif
+
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+#ifdef _MPFR_H_HAVE_INTMAX_T
+
+/* We can't use fits_s.h <= mpfr_cmp_ui */
+int
+mpfr_fits_intmax_p (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ mpfr_exp_t e;
+ int prec;
+ mpfr_t x, y;
+ int neg;
+ int res;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+ /* Zero always fit */
+ return MPFR_IS_ZERO (f) ? 1 : 0;
+
+ /* now it fits if either
+ (a) MINIMUM <= f <= MAXIMUM
+ (b) or MINIMUM <= round(f, prec(slong), rnd) <= MAXIMUM */
+
+ e = MPFR_EXP (f);
+ if (e < 1)
+ return 1; /* |f| < 1: always fits */
+
+ neg = MPFR_IS_NEG (f);
+
+ /* let EXTREMUM be MAXIMUM if f > 0, and MINIMUM if f < 0 */
+
+ /* first compute prec(EXTREMUM), this could be done at configure time,
+ but the result can depend on neg (the loop is moved inside the "if"
+ to give the compiler a better chance to compute prec statically) */
+ if (neg)
+ {
+ uintmax_t s;
+ /* In C89, the division on negative integers isn't well-defined. */
+ s = SAFE_ABS (uintmax_t, MPFR_INTMAX_MIN);
+ for (prec = 0; s != 0; s /= 2, prec ++);
+ }
+ else
+ {
+ intmax_t s;
+ s = MPFR_INTMAX_MAX;
+ for (prec = 0; s != 0; s /= 2, prec ++);
+ }
+
+ /* EXTREMUM needs prec bits, i.e. 2^(prec-1) <= |EXTREMUM| < 2^prec */
+
+ /* if e <= prec - 1, then f < 2^(prec-1) <= |EXTREMUM| */
+ if (e <= prec - 1)
+ return 1;
+
+ /* if e >= prec + 1, then f >= 2^prec > |EXTREMUM| */
+ if (e >= prec + 1)
+ return 0;
+
+ MPFR_ASSERTD (e == prec);
+
+ /* hard case: first round to prec bits, then check */
+ mpfr_init2 (x, prec);
+ mpfr_set (x, f, rnd);
+
+ if (neg)
+ {
+ mpfr_init2 (y, prec);
+ mpfr_set_sj (y, MPFR_INTMAX_MIN, MPFR_RNDN);
+ res = mpfr_cmp (x, y) >= 0;
+ mpfr_clear (y);
+ }
+ else
+ {
+ res = MPFR_GET_EXP (x) == e;
+ }
+
+ mpfr_clear (x);
+ return res;
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_s.h b/Build/source/libs/mpfr/mpfr-src/src/fits_s.h
new file mode 100644
index 00000000000..0dd77fb45a2
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_s.h
@@ -0,0 +1,89 @@
+/* mpfr_fits_*_p -- test whether an mpfr fits a C signed type.
+
+Copyright 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* The original version of this file came from GMP's mpf/fits_s.h;
+ it has been adapted for MPFR. In particular, the result can be
+ rounded away from zero. */
+
+int
+FUNCTION (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ mpfr_exp_t e;
+ int prec;
+ mpfr_t x;
+ int neg;
+ int res;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+ /* Zero always fit */
+ return MPFR_IS_ZERO (f) ? 1 : 0;
+
+ /* now it fits if either
+ (a) MINIMUM <= f <= MAXIMUM
+ (b) or MINIMUM <= round(f, prec(slong), rnd) <= MAXIMUM */
+
+ e = MPFR_GET_EXP (f);
+ if (e < 1)
+ return 1; /* |f| < 1: always fits */
+
+ neg = MPFR_IS_NEG (f);
+
+ /* let EXTREMUM be MAXIMUM if f > 0, and MINIMUM if f < 0 */
+
+ /* first compute prec(EXTREMUM), this could be done at configure time,
+ but the result can depend on neg (the loop is moved inside the "if"
+ to give the compiler a better chance to compute prec statically) */
+ if (neg)
+ {
+ unsigned TYPE s;
+ /* In C89, the division on negative integers isn't well-defined. */
+ s = SAFE_ABS (unsigned TYPE, MINIMUM);
+ for (prec = 0; s != 0; s /= 2, prec ++);
+ }
+ else
+ {
+ TYPE s;
+ s = MAXIMUM;
+ for (prec = 0; s != 0; s /= 2, prec ++);
+ }
+
+ /* EXTREMUM needs prec bits, i.e. 2^(prec-1) <= |EXTREMUM| < 2^prec */
+
+ /* if e <= prec - 1, then f < 2^(prec-1) <= |EXTREMUM| */
+ if (e <= prec - 1)
+ return 1;
+
+ /* if e >= prec + 1, then f >= 2^prec > |EXTREMUM| */
+ if (e >= prec + 1)
+ return 0;
+
+ MPFR_ASSERTD (e == prec);
+
+ /* hard case: first round to prec bits, then check */
+ mpfr_init2 (x, prec);
+ mpfr_set (x, f, rnd);
+ res = neg ? (mpfr_cmp_si (x, MINIMUM) >= 0) : (MPFR_GET_EXP (x) == e);
+ mpfr_clear (x);
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_sint.c b/Build/source/libs/mpfr/mpfr-src/src/fits_sint.c
new file mode 100644
index 00000000000..5c32fd3046a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_sint.c
@@ -0,0 +1,28 @@
+/* mpfr_fits_sint_p -- test whether an mpfr fits an int.
+
+Copyright 2003, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_fits_sint_p
+#define MAXIMUM INT_MAX
+#define MINIMUM INT_MIN
+#define TYPE int
+
+#include "fits_s.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_slong.c b/Build/source/libs/mpfr/mpfr-src/src/fits_slong.c
new file mode 100644
index 00000000000..2f51700206e
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_slong.c
@@ -0,0 +1,28 @@
+/* mpfr_fits_slong_p -- test whether an mpfr fits a long.
+
+Copyright 2003, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_fits_slong_p
+#define MAXIMUM LONG_MAX
+#define MINIMUM LONG_MIN
+#define TYPE long
+
+#include "fits_s.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_sshort.c b/Build/source/libs/mpfr/mpfr-src/src/fits_sshort.c
new file mode 100644
index 00000000000..d7cdd0b6acf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_sshort.c
@@ -0,0 +1,28 @@
+/* mpfr_fits_sshort_p -- test whether an mpfr fits a short.
+
+Copyright 2003, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_fits_sshort_p
+#define MAXIMUM SHRT_MAX
+#define MINIMUM SHRT_MIN
+#define TYPE short
+
+#include "fits_s.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_u.h b/Build/source/libs/mpfr/mpfr-src/src/fits_u.h
new file mode 100644
index 00000000000..ed837a29bc9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_u.h
@@ -0,0 +1,70 @@
+/* mpfr_fits_*_p -- test whether an mpfr fits a C unsigned type.
+
+Copyright 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+FUNCTION (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ mpfr_exp_t e;
+ int prec;
+ TYPE s;
+ mpfr_t x;
+ int res;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+ return MPFR_IS_ZERO (f) ? 1 : 0; /* Zero always fits */
+
+ e = MPFR_GET_EXP (f);
+
+ if (MPFR_IS_NEG (f))
+ return e >= 1 ? 0 /* f <= -1 does not fit */
+ : rnd != MPFR_RNDN ? MPFR_IS_LIKE_RNDU (rnd, -1) /* directed mode */
+ : e < 0 ? 1 /* f > -1/2 fits in MPFR_RNDN */
+ : mpfr_powerof2_raw(f); /* -1/2 fits, -1 < f < -1/2 don't */
+
+ /* Now it fits if
+ (a) f <= MAXIMUM
+ (b) round(f, prec(slong), rnd) <= MAXIMUM */
+
+ /* first compute prec(MAXIMUM); fits in an int */
+ for (s = MAXIMUM, prec = 0; s != 0; s /= 2, prec ++);
+
+ /* MAXIMUM needs prec bits, i.e. MAXIMUM = 2^prec - 1 */
+
+ /* if e <= prec - 1, then f < 2^(prec-1) < MAXIMUM */
+ if (e <= prec - 1)
+ return 1;
+
+ /* if e >= prec + 1, then f >= 2^prec > MAXIMUM */
+ if (e >= prec + 1)
+ return 0;
+
+ MPFR_ASSERTD (e == prec);
+
+ /* hard case: first round to prec bits, then check */
+ mpfr_init2 (x, prec);
+ mpfr_set (x, f, rnd);
+ res = MPFR_GET_EXP (x) == e;
+ mpfr_clear (x);
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_uint.c b/Build/source/libs/mpfr/mpfr-src/src/fits_uint.c
new file mode 100644
index 00000000000..d62f9d21c75
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_uint.c
@@ -0,0 +1,27 @@
+/* mpfr_fits_uint_p -- test whether an mpfr fits an unsigned int.
+
+Copyright 2003, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_fits_uint_p
+#define MAXIMUM UINT_MAX
+#define TYPE unsigned int
+
+#include "fits_u.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_uintmax.c b/Build/source/libs/mpfr/mpfr-src/src/fits_uintmax.c
new file mode 100644
index 00000000000..fc51d91c5e1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_uintmax.c
@@ -0,0 +1,45 @@
+/* mpfr_fits_uintmax_p -- test whether an mpfr fits an uintmax_t.
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h" /* for a build within gmp */
+#endif
+
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+/* Note: though mpfr-impl.h is included in fits_u.h, we also include it
+ above so that it gets included even when _MPFR_H_HAVE_INTMAX_T is not
+ defined; this is necessary to avoid an empty translation unit, which
+ is forbidden by ISO C. Without this, a failing test can be reproduced
+ by creating an invalid stdint.h somewhere in the default include path
+ and by compiling MPFR with "gcc -ansi -pedantic-errors". */
+
+#ifdef _MPFR_H_HAVE_INTMAX_T
+
+#define FUNCTION mpfr_fits_uintmax_p
+#define MAXIMUM MPFR_UINTMAX_MAX
+#define TYPE uintmax_t
+
+#include "fits_u.h"
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_ulong.c b/Build/source/libs/mpfr/mpfr-src/src/fits_ulong.c
new file mode 100644
index 00000000000..bbd2a3a1e8b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_ulong.c
@@ -0,0 +1,27 @@
+/* mpfr_fits_ulong_p -- test whether an mpfr fits an unsigned long.
+
+Copyright 2003, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_fits_ulong_p
+#define MAXIMUM ULONG_MAX
+#define TYPE unsigned long
+
+#include "fits_u.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fits_ushort.c b/Build/source/libs/mpfr/mpfr-src/src/fits_ushort.c
new file mode 100644
index 00000000000..d4b389d630f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fits_ushort.c
@@ -0,0 +1,27 @@
+/* mpfr_fits_ushort_p -- test whether an mpfr fits an unsigned short.
+
+Copyright 2003, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_fits_ushort_p
+#define MAXIMUM USHRT_MAX
+#define TYPE unsigned short
+
+#include "fits_u.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fma.c b/Build/source/libs/mpfr/mpfr-src/src/fma.c
new file mode 100644
index 00000000000..8acb617f7d5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fma.c
@@ -0,0 +1,319 @@
+/* mpfr_fma -- Floating multiply-add
+
+Copyright 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* The fused-multiply-add (fma) of x, y and z is defined by:
+ fma(x,y,z)= x*y + z
+*/
+
+int
+mpfr_fma (mpfr_ptr s, mpfr_srcptr x, mpfr_srcptr y, mpfr_srcptr z,
+ mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t u;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_GROUP_DECL(group);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg y[%Pu]=%.*Rg z[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x,
+ mpfr_get_prec (y), mpfr_log_prec, y,
+ mpfr_get_prec (z), mpfr_log_prec, z, rnd_mode),
+ ("s[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (s), mpfr_log_prec, s, inexact));
+
+ /* particular cases */
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(x) ||
+ MPFR_IS_SINGULAR(y) ||
+ MPFR_IS_SINGULAR(z) ))
+ {
+ if (MPFR_IS_NAN(x) || MPFR_IS_NAN(y) || MPFR_IS_NAN(z))
+ {
+ MPFR_SET_NAN(s);
+ MPFR_RET_NAN;
+ }
+ /* now neither x, y or z is NaN */
+ else if (MPFR_IS_INF(x) || MPFR_IS_INF(y))
+ {
+ /* cases Inf*0+z, 0*Inf+z, Inf-Inf */
+ if ((MPFR_IS_ZERO(y)) ||
+ (MPFR_IS_ZERO(x)) ||
+ (MPFR_IS_INF(z) &&
+ ((MPFR_MULT_SIGN(MPFR_SIGN(x), MPFR_SIGN(y))) != MPFR_SIGN(z))))
+ {
+ MPFR_SET_NAN(s);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(z)) /* case Inf-Inf already checked above */
+ {
+ MPFR_SET_INF(s);
+ MPFR_SET_SAME_SIGN(s, z);
+ MPFR_RET(0);
+ }
+ else /* z is finite */
+ {
+ MPFR_SET_INF(s);
+ MPFR_SET_SIGN(s, MPFR_MULT_SIGN(MPFR_SIGN(x) , MPFR_SIGN(y)));
+ MPFR_RET(0);
+ }
+ }
+ /* now x and y are finite */
+ else if (MPFR_IS_INF(z))
+ {
+ MPFR_SET_INF(s);
+ MPFR_SET_SAME_SIGN(s, z);
+ MPFR_RET(0);
+ }
+ else if (MPFR_IS_ZERO(x) || MPFR_IS_ZERO(y))
+ {
+ if (MPFR_IS_ZERO(z))
+ {
+ int sign_p;
+ sign_p = MPFR_MULT_SIGN( MPFR_SIGN(x) , MPFR_SIGN(y) );
+ MPFR_SET_SIGN(s,(rnd_mode != MPFR_RNDD ?
+ ((MPFR_IS_NEG_SIGN(sign_p) && MPFR_IS_NEG(z))
+ ? -1 : 1) :
+ ((MPFR_IS_POS_SIGN(sign_p) && MPFR_IS_POS(z))
+ ? 1 : -1)));
+ MPFR_SET_ZERO(s);
+ MPFR_RET(0);
+ }
+ else
+ return mpfr_set (s, z, rnd_mode);
+ }
+ else /* necessarily z is zero here */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(z));
+ return mpfr_mul (s, x, y, rnd_mode);
+ }
+ }
+
+ /* If we take prec(u) >= prec(x) + prec(y), the product u <- x*y
+ is exact, except in case of overflow or underflow. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_GROUP_INIT_1 (group, MPFR_PREC(x) + MPFR_PREC(y), u);
+
+ if (MPFR_UNLIKELY (mpfr_mul (u, x, y, MPFR_RNDN)))
+ {
+ /* overflow or underflow - this case is regarded as rare, thus
+ does not need to be very efficient (even if some tests below
+ could have been done earlier).
+ It is an overflow iff u is an infinity (since MPFR_RNDN was used).
+ Alternatively, we could test the overflow flag, but in this case,
+ mpfr_clear_flags would have been necessary. */
+
+ if (MPFR_IS_INF (u)) /* overflow */
+ {
+ MPFR_LOG_MSG (("Overflow on x*y\n", 0));
+
+ /* Let's eliminate the obvious case where x*y and z have the
+ same sign. No possible cancellation -> real overflow.
+ Also, we know that |z| < 2^emax. If E(x) + E(y) >= emax+3,
+ then |x*y| >= 2^(emax+1), and |x*y + z| >= 2^emax. This case
+ is also an overflow. */
+ if (MPFR_SIGN (u) == MPFR_SIGN (z) ||
+ MPFR_GET_EXP (x) + MPFR_GET_EXP (y) >= __gmpfr_emax + 3)
+ {
+ MPFR_GROUP_CLEAR (group);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_overflow (s, rnd_mode, MPFR_SIGN (z));
+ }
+
+ /* E(x) + E(y) <= emax+2, therefore |x*y| < 2^(emax+2), and
+ (x/4)*y does not overflow (let's recall that the result
+ is exact with an unbounded exponent range). It does not
+ underflow either, because x*y overflows and the exponent
+ range is large enough. */
+ inexact = mpfr_div_2ui (u, x, 2, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+ inexact = mpfr_mul (u, u, y, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+
+ /* Now, we need to add z/4... But it may underflow! */
+ {
+ mpfr_t zo4;
+ mpfr_srcptr zz;
+ MPFR_BLOCK_DECL (flags);
+
+ if (MPFR_GET_EXP (u) > MPFR_GET_EXP (z) &&
+ MPFR_GET_EXP (u) - MPFR_GET_EXP (z) > MPFR_PREC (u))
+ {
+ /* |z| < ulp(u)/2, therefore one can use z instead of z/4. */
+ zz = z;
+ }
+ else
+ {
+ mpfr_init2 (zo4, MPFR_PREC (z));
+ if (mpfr_div_2ui (zo4, z, 2, MPFR_RNDZ))
+ {
+ /* The division by 4 underflowed! */
+ MPFR_ASSERTN (0); /* TODO... */
+ }
+ zz = zo4;
+ }
+
+ /* Let's recall that u = x*y/4 and zz = z/4 (or z if the
+ following addition would give the same result). */
+ MPFR_BLOCK (flags, inexact = mpfr_add (s, u, zz, rnd_mode));
+ /* u and zz have different signs, so that an overflow
+ is not possible. But an underflow is theoretically
+ possible! */
+ if (MPFR_UNDERFLOW (flags))
+ {
+ MPFR_ASSERTN (zz != z);
+ MPFR_ASSERTN (0); /* TODO... */
+ mpfr_clears (zo4, u, (mpfr_ptr) 0);
+ }
+ else
+ {
+ int inex2;
+
+ if (zz != z)
+ mpfr_clear (zo4);
+ MPFR_GROUP_CLEAR (group);
+ MPFR_ASSERTN (! MPFR_OVERFLOW (flags));
+ inex2 = mpfr_mul_2ui (s, s, 2, rnd_mode);
+ if (inex2) /* overflow */
+ {
+ inexact = inex2;
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ }
+ goto end;
+ }
+ }
+ }
+ else /* underflow: one has |xy| < 2^(emin-1). */
+ {
+ unsigned long scale = 0;
+ mpfr_t scaled_z;
+ mpfr_srcptr new_z;
+ mpfr_exp_t diffexp;
+ mpfr_prec_t pzs;
+ int xy_underflows;
+
+ MPFR_LOG_MSG (("Underflow on x*y\n", 0));
+
+ /* Let's scale z so that ulp(z) > 2^emin and ulp(s) > 2^emin
+ (the + 1 on MPFR_PREC (s) is necessary because the exponent
+ of the result can be EXP(z) - 1). */
+ diffexp = MPFR_GET_EXP (z) - __gmpfr_emin;
+ pzs = MAX (MPFR_PREC (z), MPFR_PREC (s) + 1);
+ MPFR_LOG_MSG (("diffexp=%" MPFR_EXP_FSPEC "d pzs=%Pd\n",
+ diffexp, pzs));
+ if (diffexp <= pzs)
+ {
+ mpfr_uexp_t uscale;
+ mpfr_t scaled_v;
+ MPFR_BLOCK_DECL (flags);
+
+ uscale = (mpfr_uexp_t) pzs - diffexp + 1;
+ MPFR_ASSERTN (uscale > 0);
+ MPFR_ASSERTN (uscale <= ULONG_MAX);
+ scale = uscale;
+ mpfr_init2 (scaled_z, MPFR_PREC (z));
+ inexact = mpfr_mul_2ui (scaled_z, z, scale, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0); /* TODO: overflow case */
+ new_z = scaled_z;
+ /* Now we need to recompute u = xy * 2^scale. */
+ MPFR_BLOCK (flags,
+ if (MPFR_GET_EXP (x) < MPFR_GET_EXP (y))
+ {
+ mpfr_init2 (scaled_v, MPFR_PREC (x));
+ mpfr_mul_2ui (scaled_v, x, scale, MPFR_RNDN);
+ mpfr_mul (u, scaled_v, y, MPFR_RNDN);
+ }
+ else
+ {
+ mpfr_init2 (scaled_v, MPFR_PREC (y));
+ mpfr_mul_2ui (scaled_v, y, scale, MPFR_RNDN);
+ mpfr_mul (u, x, scaled_v, MPFR_RNDN);
+ });
+ mpfr_clear (scaled_v);
+ MPFR_ASSERTN (! MPFR_OVERFLOW (flags));
+ xy_underflows = MPFR_UNDERFLOW (flags);
+ }
+ else
+ {
+ new_z = z;
+ xy_underflows = 1;
+ }
+
+ MPFR_LOG_MSG (("scale=%lu xy_underflows=%d\n",
+ scale, xy_underflows));
+
+ if (xy_underflows)
+ {
+ /* Let's replace xy by sign(xy) * 2^(emin-1). */
+ MPFR_PREC (u) = MPFR_PREC_MIN;
+ mpfr_setmin (u, __gmpfr_emin);
+ MPFR_SET_SIGN (u, MPFR_MULT_SIGN (MPFR_SIGN (x),
+ MPFR_SIGN (y)));
+ }
+
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_BLOCK (flags, inexact = mpfr_add (s, u, new_z, rnd_mode));
+ MPFR_LOG_MSG (("inexact=%d\n", inexact));
+ MPFR_GROUP_CLEAR (group);
+ if (scale != 0)
+ {
+ int inex2;
+
+ mpfr_clear (scaled_z);
+ /* Here an overflow is theoretically possible, in which case
+ the result may be wrong, hence the assert. An underflow
+ is not possible, but let's check that anyway. */
+ MPFR_ASSERTN (! MPFR_OVERFLOW (flags)); /* TODO... */
+ MPFR_ASSERTN (! MPFR_UNDERFLOW (flags)); /* not possible */
+ if (rnd_mode == MPFR_RNDN &&
+ MPFR_GET_EXP (s) == __gmpfr_emin - 1 + scale &&
+ mpfr_powerof2_raw (s))
+ {
+ MPFR_LOG_MSG (("Double rounding\n", 0));
+ rnd_mode = (MPFR_IS_NEG (s) ? inexact <= 0 : inexact >= 0)
+ ? MPFR_RNDZ : MPFR_RNDA;
+ }
+ inex2 = mpfr_div_2ui (s, s, scale, rnd_mode);
+ MPFR_LOG_MSG (("inex2=%d\n", inex2));
+ if (inex2) /* underflow */
+ inexact = inex2;
+ }
+ }
+
+ /* FIXME/TODO: I'm not sure that the following is correct.
+ Check for possible spurious exceptions due to intermediate
+ computations. */
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ goto end;
+ }
+ }
+
+ inexact = mpfr_add (s, u, z, rnd_mode);
+ MPFR_GROUP_CLEAR (group);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (s, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/fms.c b/Build/source/libs/mpfr/mpfr-src/src/fms.c
new file mode 100644
index 00000000000..fe17e5b201b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/fms.c
@@ -0,0 +1,304 @@
+/* mpfr_fms -- Floating multiply-subtract
+
+Copyright 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* The fused-multiply-subtract (fms) of x, y and z is defined by:
+ fms(x,y,z)= x*y - z
+ Note: this is neither in IEEE754R, nor in LIA-2, but both the
+ PowerPC and the Itanium define fms as x*y - z.
+*/
+
+int
+mpfr_fms (mpfr_ptr s, mpfr_srcptr x, mpfr_srcptr y, mpfr_srcptr z,
+ mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t u;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_GROUP_DECL(group);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg y[%Pu]=%.*Rg z[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x,
+ mpfr_get_prec (y), mpfr_log_prec, y,
+ mpfr_get_prec (z), mpfr_log_prec, z, rnd_mode),
+ ("s[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (s), mpfr_log_prec, s, inexact));
+
+ /* particular cases */
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(x) ||
+ MPFR_IS_SINGULAR(y) ||
+ MPFR_IS_SINGULAR(z) ))
+ {
+ if (MPFR_IS_NAN(x) || MPFR_IS_NAN(y) || MPFR_IS_NAN(z))
+ {
+ MPFR_SET_NAN(s);
+ MPFR_RET_NAN;
+ }
+ /* now neither x, y or z is NaN */
+ else if (MPFR_IS_INF(x) || MPFR_IS_INF(y))
+ {
+ /* cases Inf*0-z, 0*Inf-z, Inf-Inf */
+ if ((MPFR_IS_ZERO(y)) ||
+ (MPFR_IS_ZERO(x)) ||
+ (MPFR_IS_INF(z) &&
+ ((MPFR_MULT_SIGN(MPFR_SIGN(x), MPFR_SIGN(y))) == MPFR_SIGN(z))))
+ {
+ MPFR_SET_NAN(s);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(z)) /* case Inf-Inf already checked above */
+ {
+ MPFR_SET_INF(s);
+ MPFR_SET_OPPOSITE_SIGN(s, z);
+ MPFR_RET(0);
+ }
+ else /* z is finite */
+ {
+ MPFR_SET_INF(s);
+ MPFR_SET_SIGN(s, MPFR_MULT_SIGN(MPFR_SIGN(x) , MPFR_SIGN(y)));
+ MPFR_RET(0);
+ }
+ }
+ /* now x and y are finite */
+ else if (MPFR_IS_INF(z))
+ {
+ MPFR_SET_INF(s);
+ MPFR_SET_OPPOSITE_SIGN(s, z);
+ MPFR_RET(0);
+ }
+ else if (MPFR_IS_ZERO(x) || MPFR_IS_ZERO(y))
+ {
+ if (MPFR_IS_ZERO(z))
+ {
+ int sign_p;
+ sign_p = MPFR_MULT_SIGN( MPFR_SIGN(x) , MPFR_SIGN(y) );
+ MPFR_SET_SIGN(s,(rnd_mode != MPFR_RNDD ?
+ ((MPFR_IS_NEG_SIGN(sign_p) && MPFR_IS_POS(z))
+ ? -1 : 1) :
+ ((MPFR_IS_POS_SIGN(sign_p) && MPFR_IS_NEG(z))
+ ? 1 : -1)));
+ MPFR_SET_ZERO(s);
+ MPFR_RET(0);
+ }
+ else
+ return mpfr_neg (s, z, rnd_mode);
+ }
+ else /* necessarily z is zero here */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(z));
+ return mpfr_mul (s, x, y, rnd_mode);
+ }
+ }
+
+ /* If we take prec(u) >= prec(x) + prec(y), the product u <- x*y
+ is exact, except in case of overflow or underflow. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_GROUP_INIT_1 (group, MPFR_PREC(x) + MPFR_PREC(y), u);
+
+ if (MPFR_UNLIKELY (mpfr_mul (u, x, y, MPFR_RNDN)))
+ {
+ /* overflow or underflow - this case is regarded as rare, thus
+ does not need to be very efficient (even if some tests below
+ could have been done earlier).
+ It is an overflow iff u is an infinity (since MPFR_RNDN was used).
+ Alternatively, we could test the overflow flag, but in this case,
+ mpfr_clear_flags would have been necessary. */
+ if (MPFR_IS_INF (u)) /* overflow */
+ {
+ /* Let's eliminate the obvious case where x*y and z have the
+ same sign. No possible cancellation -> real overflow.
+ Also, we know that |z| < 2^emax. If E(x) + E(y) >= emax+3,
+ then |x*y| >= 2^(emax+1), and |x*y - z| >= 2^emax. This case
+ is also an overflow. */
+ if (MPFR_SIGN (u) != MPFR_SIGN (z) ||
+ MPFR_GET_EXP (x) + MPFR_GET_EXP (y) >= __gmpfr_emax + 3)
+ {
+ MPFR_GROUP_CLEAR (group);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_overflow (s, rnd_mode, - MPFR_SIGN (z));
+ }
+
+ /* E(x) + E(y) <= emax+2, therefore |x*y| < 2^(emax+2), and
+ (x/4)*y does not overflow (let's recall that the result
+ is exact with an unbounded exponent range). It does not
+ underflow either, because x*y overflows and the exponent
+ range is large enough. */
+ inexact = mpfr_div_2ui (u, x, 2, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+ inexact = mpfr_mul (u, u, y, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+
+ /* Now, we need to subtract z/4... But it may underflow! */
+ {
+ mpfr_t zo4;
+ mpfr_srcptr zz;
+ MPFR_BLOCK_DECL (flags);
+
+ if (MPFR_GET_EXP (u) > MPFR_GET_EXP (z) &&
+ MPFR_GET_EXP (u) - MPFR_GET_EXP (z) > MPFR_PREC (u))
+ {
+ /* |z| < ulp(u)/2, therefore one can use z instead of z/4. */
+ zz = z;
+ }
+ else
+ {
+ mpfr_init2 (zo4, MPFR_PREC (z));
+ if (mpfr_div_2ui (zo4, z, 2, MPFR_RNDZ))
+ {
+ /* The division by 4 underflowed! */
+ MPFR_ASSERTN (0); /* TODO... */
+ }
+ zz = zo4;
+ }
+
+ /* Let's recall that u = x*y/4 and zz = z/4 (or z if the
+ following subtraction would give the same result). */
+ MPFR_BLOCK (flags, inexact = mpfr_sub (s, u, zz, rnd_mode));
+ /* u and zz have the same sign, so that an overflow
+ is not possible. But an underflow is theoretically
+ possible! */
+ if (MPFR_UNDERFLOW (flags))
+ {
+ MPFR_ASSERTN (zz != z);
+ MPFR_ASSERTN (0); /* TODO... */
+ mpfr_clears (zo4, u, (mpfr_ptr) 0);
+ }
+ else
+ {
+ int inex2;
+
+ if (zz != z)
+ mpfr_clear (zo4);
+ MPFR_GROUP_CLEAR (group);
+ MPFR_ASSERTN (! MPFR_OVERFLOW (flags));
+ inex2 = mpfr_mul_2ui (s, s, 2, rnd_mode);
+ if (inex2) /* overflow */
+ {
+ inexact = inex2;
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ }
+ goto end;
+ }
+ }
+ }
+ else /* underflow: one has |xy| < 2^(emin-1). */
+ {
+ unsigned long scale = 0;
+ mpfr_t scaled_z;
+ mpfr_srcptr new_z;
+ mpfr_exp_t diffexp;
+ mpfr_prec_t pzs;
+ int xy_underflows;
+
+ /* Let's scale z so that ulp(z) > 2^emin and ulp(s) > 2^emin
+ (the + 1 on MPFR_PREC (s) is necessary because the exponent
+ of the result can be EXP(z) - 1). */
+ diffexp = MPFR_GET_EXP (z) - __gmpfr_emin;
+ pzs = MAX (MPFR_PREC (z), MPFR_PREC (s) + 1);
+ if (diffexp <= pzs)
+ {
+ mpfr_uexp_t uscale;
+ mpfr_t scaled_v;
+ MPFR_BLOCK_DECL (flags);
+
+ uscale = (mpfr_uexp_t) pzs - diffexp + 1;
+ MPFR_ASSERTN (uscale > 0);
+ MPFR_ASSERTN (uscale <= ULONG_MAX);
+ scale = uscale;
+ mpfr_init2 (scaled_z, MPFR_PREC (z));
+ inexact = mpfr_mul_2ui (scaled_z, z, scale, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0); /* TODO: overflow case */
+ new_z = scaled_z;
+ /* Now we need to recompute u = xy * 2^scale. */
+ MPFR_BLOCK (flags,
+ if (MPFR_GET_EXP (x) < MPFR_GET_EXP (y))
+ {
+ mpfr_init2 (scaled_v, MPFR_PREC (x));
+ mpfr_mul_2ui (scaled_v, x, scale, MPFR_RNDN);
+ mpfr_mul (u, scaled_v, y, MPFR_RNDN);
+ }
+ else
+ {
+ mpfr_init2 (scaled_v, MPFR_PREC (y));
+ mpfr_mul_2ui (scaled_v, y, scale, MPFR_RNDN);
+ mpfr_mul (u, x, scaled_v, MPFR_RNDN);
+ });
+ mpfr_clear (scaled_v);
+ MPFR_ASSERTN (! MPFR_OVERFLOW (flags));
+ xy_underflows = MPFR_UNDERFLOW (flags);
+ }
+ else
+ {
+ new_z = z;
+ xy_underflows = 1;
+ }
+
+ if (xy_underflows)
+ {
+ /* Let's replace xy by sign(xy) * 2^(emin-1). */
+ MPFR_PREC (u) = MPFR_PREC_MIN;
+ mpfr_setmin (u, __gmpfr_emin);
+ MPFR_SET_SIGN (u, MPFR_MULT_SIGN (MPFR_SIGN (x),
+ MPFR_SIGN (y)));
+ }
+
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_BLOCK (flags, inexact = mpfr_sub (s, u, new_z, rnd_mode));
+ MPFR_GROUP_CLEAR (group);
+ if (scale != 0)
+ {
+ int inex2;
+
+ mpfr_clear (scaled_z);
+ /* Here an overflow is theoretically possible, in which case
+ the result may be wrong, hence the assert. An underflow
+ is not possible, but let's check that anyway. */
+ MPFR_ASSERTN (! MPFR_OVERFLOW (flags)); /* TODO... */
+ MPFR_ASSERTN (! MPFR_UNDERFLOW (flags)); /* not possible */
+ inex2 = mpfr_div_2ui (s, s, scale, MPFR_RNDN);
+ /* FIXME: this seems incorrect. MPFR_RNDN -> rnd_mode?
+ Also, handle the double rounding case:
+ s / 2^scale = 2^(emin - 2) in MPFR_RNDN. */
+ if (inex2) /* underflow */
+ inexact = inex2;
+ }
+ }
+
+ /* FIXME/TODO: I'm not sure that the following is correct.
+ Check for possible spurious exceptions due to intermediate
+ computations. */
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ goto end;
+ }
+ }
+
+ inexact = mpfr_sub (s, u, z, rnd_mode);
+ MPFR_GROUP_CLEAR (group);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (s, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/frac.c b/Build/source/libs/mpfr/mpfr-src/src/frac.c
new file mode 100644
index 00000000000..5b26c2c2713
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/frac.c
@@ -0,0 +1,144 @@
+/* mpfr_frac -- Fractional part of a floating-point number.
+
+Copyright 2002-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Optimization note: it is not a good idea to call mpfr_integer_p,
+ as some cases will take longer (the number may be parsed twice). */
+
+int
+mpfr_frac (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ mpfr_exp_t re, ue;
+ mpfr_prec_t uq;
+ mp_size_t un, tn, t0;
+ mp_limb_t *up, *tp, k;
+ int sh;
+ mpfr_t tmp;
+ mpfr_ptr t;
+ int inex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ /* Special cases */
+ if (MPFR_UNLIKELY(MPFR_IS_NAN(u)))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_UNLIKELY(MPFR_IS_INF(u) || mpfr_integer_p (u)))
+ {
+ MPFR_SET_SAME_SIGN(r, u);
+ MPFR_SET_ZERO(r);
+ MPFR_RET(0); /* zero is exact */
+ }
+
+ ue = MPFR_GET_EXP (u);
+ if (ue <= 0) /* |u| < 1 */
+ return mpfr_set (r, u, rnd_mode);
+
+ /* Now |u| >= 1, meaning that an overflow is not possible. */
+
+ uq = MPFR_PREC(u);
+ un = (uq - 1) / GMP_NUMB_BITS; /* index of most significant limb */
+ un -= (mp_size_t) (ue / GMP_NUMB_BITS);
+ /* now the index of the MSL containing bits of the fractional part */
+
+ up = MPFR_MANT(u);
+ sh = ue % GMP_NUMB_BITS;
+ k = up[un] << sh;
+ /* the first bit of the fractional part is the MSB of k */
+
+ if (k != 0)
+ {
+ int cnt;
+
+ count_leading_zeros(cnt, k);
+ /* first bit 1 of the fractional part -> MSB of the number */
+ re = -cnt;
+ sh += cnt;
+ MPFR_ASSERTN (sh < GMP_NUMB_BITS);
+ k <<= cnt;
+ }
+ else
+ {
+ re = sh - GMP_NUMB_BITS;
+ /* searching for the first bit 1 (exists since u isn't an integer) */
+ while (up[--un] == 0)
+ re -= GMP_NUMB_BITS;
+ MPFR_ASSERTN(un >= 0);
+ k = up[un];
+ count_leading_zeros(sh, k);
+ re -= sh;
+ k <<= sh;
+ }
+ /* The exponent of r will be re */
+ /* un: index of the limb of u that contains the first bit 1 of the FP */
+
+ t = (mp_size_t) (MPFR_PREC(r) - 1) / GMP_NUMB_BITS < un ?
+ (mpfr_init2 (tmp, (un + 1) * GMP_NUMB_BITS), tmp) : r;
+ /* t has enough precision to contain the fractional part of u */
+ /* If we use a temporary variable, we take the non-significant bits
+ of u into account, because of the mpn_lshift below. */
+ MPFR_SET_SAME_SIGN(t, u);
+
+ /* Put the fractional part of u into t */
+ tn = (MPFR_PREC(t) - 1) / GMP_NUMB_BITS;
+ MPFR_ASSERTN(tn >= un);
+ t0 = tn - un;
+ tp = MPFR_MANT(t);
+ if (sh == 0)
+ MPN_COPY_DECR(tp + t0, up, un + 1);
+ else /* warning: un may be 0 here */
+ tp[tn] = k | ((un) ? mpn_lshift (tp + t0, up, un, sh) : (mp_limb_t) 0);
+ if (t0 > 0)
+ MPN_ZERO(tp, t0);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (t != r)
+ { /* t is tmp */
+ MPFR_EXP (t) = 0; /* should be re, but not necessarily in the range */
+ inex = mpfr_set (r, t, rnd_mode); /* no underflow */
+ mpfr_clear (t);
+ MPFR_EXP (r) += re;
+ }
+ else
+ { /* There may be remaining non-significant bits in t (= r). */
+ int carry;
+
+ MPFR_EXP (r) = re;
+ carry = mpfr_round_raw (tp, tp,
+ (mpfr_prec_t) (tn + 1) * GMP_NUMB_BITS,
+ MPFR_IS_NEG (r), MPFR_PREC (r), rnd_mode,
+ &inex);
+ if (carry)
+ {
+ tp[tn] = MPFR_LIMB_HIGHBIT;
+ MPFR_EXP (r) ++;
+ }
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inex, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/free_cache.c b/Build/source/libs/mpfr/mpfr-src/src/free_cache.c
new file mode 100644
index 00000000000..928936ade46
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/free_cache.c
@@ -0,0 +1,59 @@
+/* mpfr_free_cache - Free the cache used by MPFR for internal consts.
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#if 0
+static void
+free_l2b (void)
+{
+ int i, b;
+
+ for (b = 2; b <= BASE_MAX; b++)
+ for (i = 0; i < 2; i++)
+ {
+ mpfr_ptr p = __gmpfr_l2b[b-2][i];
+ if (p != NULL)
+ {
+ mpfr_clear (p);
+ (*__gmp_free_func) (p, sizeof (mpfr_t));
+ }
+ }
+}
+#endif
+
+void
+mpfr_free_cache (void)
+{
+#ifndef MPFR_USE_LOGGING
+ mpfr_clear_cache (__gmpfr_cache_const_pi);
+ mpfr_clear_cache (__gmpfr_cache_const_log2);
+#else
+ mpfr_clear_cache (__gmpfr_normal_pi);
+ mpfr_clear_cache (__gmpfr_normal_log2);
+ mpfr_clear_cache (__gmpfr_logging_pi);
+ mpfr_clear_cache (__gmpfr_logging_log2);
+#endif
+ mpfr_clear_cache (__gmpfr_cache_const_euler);
+ mpfr_clear_cache (__gmpfr_cache_const_catalan);
+ /* free_l2b (); */
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/frexp.c b/Build/source/libs/mpfr/mpfr-src/src/frexp.c
new file mode 100644
index 00000000000..0f8de7ed5e3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/frexp.c
@@ -0,0 +1,56 @@
+/* mpfr_frexp -- convert to integral and fractional parts
+
+Copyright 2011-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_frexp (mpfr_exp_t *exp, mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ int inex;
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
+ {
+ if (MPFR_IS_NAN(x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN; /* exp is unspecified */
+ }
+ else if (MPFR_IS_INF(x))
+ {
+ MPFR_SET_INF(y);
+ MPFR_SET_SAME_SIGN(y,x);
+ MPFR_RET(0); /* exp is unspecified */
+ }
+ else
+ {
+ MPFR_SET_ZERO(y);
+ MPFR_SET_SAME_SIGN(y,x);
+ *exp = 0;
+ MPFR_RET(0);
+ }
+ }
+
+ inex = mpfr_set (y, x, rnd);
+ *exp = MPFR_GET_EXP (y);
+ MPFR_SET_EXP (y, 0);
+ return mpfr_check_range (y, inex, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/gamma.c b/Build/source/libs/mpfr/mpfr-src/src/gamma.c
new file mode 100644
index 00000000000..d19a5b7212a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/gamma.c
@@ -0,0 +1,439 @@
+/* mpfr_gamma -- gamma function
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#define IS_GAMMA
+#include "lngamma.c"
+#undef IS_GAMMA
+
+/* return a sufficient precision such that 2-x is exact, assuming x < 0 */
+static mpfr_prec_t
+mpfr_gamma_2_minus_x_exact (mpfr_srcptr x)
+{
+ /* Since x < 0, 2-x = 2+y with y := -x.
+ If y < 2, a precision w >= PREC(y) + EXP(2)-EXP(y) = PREC(y) + 2 - EXP(y)
+ is enough, since no overlap occurs in 2+y, so no carry happens.
+ If y >= 2, either ULP(y) <= 2, and we need w >= PREC(y)+1 since a
+ carry can occur, or ULP(y) > 2, and we need w >= EXP(y)-1:
+ (a) if EXP(y) <= 1, w = PREC(y) + 2 - EXP(y)
+ (b) if EXP(y) > 1 and EXP(y)-PREC(y) <= 1, w = PREC(y) + 1
+ (c) if EXP(y) > 1 and EXP(y)-PREC(y) > 1, w = EXP(y) - 1 */
+ return (MPFR_GET_EXP(x) <= 1) ? MPFR_PREC(x) + 2 - MPFR_GET_EXP(x)
+ : ((MPFR_GET_EXP(x) <= MPFR_PREC(x) + 1) ? MPFR_PREC(x) + 1
+ : MPFR_GET_EXP(x) - 1);
+}
+
+/* return a sufficient precision such that 1-x is exact, assuming x < 1 */
+static mpfr_prec_t
+mpfr_gamma_1_minus_x_exact (mpfr_srcptr x)
+{
+ if (MPFR_IS_POS(x))
+ return MPFR_PREC(x) - MPFR_GET_EXP(x);
+ else if (MPFR_GET_EXP(x) <= 0)
+ return MPFR_PREC(x) + 1 - MPFR_GET_EXP(x);
+ else if (MPFR_PREC(x) >= MPFR_GET_EXP(x))
+ return MPFR_PREC(x) + 1;
+ else
+ return MPFR_GET_EXP(x);
+}
+
+/* returns a lower bound of the number of significant bits of n!
+ (not counting the low zero bits).
+ We know n! >= (n/e)^n*sqrt(2*Pi*n) for n >= 1, and the number of zero bits
+ is floor(n/2) + floor(n/4) + floor(n/8) + ...
+ This approximation is exact for n <= 500000, except for n = 219536, 235928,
+ 298981, 355854, 464848, 493725, 498992 where it returns a value 1 too small.
+*/
+static unsigned long
+bits_fac (unsigned long n)
+{
+ mpfr_t x, y;
+ unsigned long r, k;
+ mpfr_init2 (x, 38);
+ mpfr_init2 (y, 38);
+ mpfr_set_ui (x, n, MPFR_RNDZ);
+ mpfr_set_str_binary (y, "10.101101111110000101010001011000101001"); /* upper bound of e */
+ mpfr_div (x, x, y, MPFR_RNDZ);
+ mpfr_pow_ui (x, x, n, MPFR_RNDZ);
+ mpfr_const_pi (y, MPFR_RNDZ);
+ mpfr_mul_ui (y, y, 2 * n, MPFR_RNDZ);
+ mpfr_sqrt (y, y, MPFR_RNDZ);
+ mpfr_mul (x, x, y, MPFR_RNDZ);
+ mpfr_log2 (x, x, MPFR_RNDZ);
+ r = mpfr_get_ui (x, MPFR_RNDU);
+ for (k = 2; k <= n; k *= 2)
+ r -= n / k;
+ mpfr_clear (x);
+ mpfr_clear (y);
+ return r;
+}
+
+/* We use the reflection formula
+ Gamma(1+t) Gamma(1-t) = - Pi t / sin(Pi (1 + t))
+ in order to treat the case x <= 1,
+ i.e. with x = 1-t, then Gamma(x) = -Pi*(1-x)/sin(Pi*(2-x))/GAMMA(2-x)
+*/
+int
+mpfr_gamma (mpfr_ptr gamma, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t xp, GammaTrial, tmp, tmp2;
+ mpz_t fact;
+ mpfr_prec_t realprec;
+ int compared, is_integer;
+ int inex = 0; /* 0 means: result gamma not set yet */
+ MPFR_GROUP_DECL (group);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("gamma[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (gamma), mpfr_log_prec, gamma, inex));
+
+ /* Trivial cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (gamma);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ if (MPFR_IS_NEG (x))
+ {
+ MPFR_SET_NAN (gamma);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_SET_INF (gamma);
+ MPFR_SET_POS (gamma);
+ MPFR_RET (0); /* exact */
+ }
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(x));
+ MPFR_SET_INF(gamma);
+ MPFR_SET_SAME_SIGN(gamma, x);
+ mpfr_set_divby0 ();
+ MPFR_RET (0); /* exact */
+ }
+ }
+
+ /* Check for tiny arguments, where gamma(x) ~ 1/x - euler + ....
+ We know from "Bound on Runs of Zeros and Ones for Algebraic Functions",
+ Proceedings of Arith15, T. Lang and J.-M. Muller, 2001, that the maximal
+ number of consecutive zeroes or ones after the round bit is n-1 for an
+ input of n bits. But we need a more precise lower bound. Assume x has
+ n bits, and 1/x is near a floating-point number y of n+1 bits. We can
+ write x = X*2^e, y = Y/2^f with X, Y integers of n and n+1 bits.
+ Thus X*Y^2^(e-f) is near from 1, i.e., X*Y is near from 2^(f-e).
+ Two cases can happen:
+ (i) either X*Y is exactly 2^(f-e), but this can happen only if X and Y
+ are themselves powers of two, i.e., x is a power of two;
+ (ii) or X*Y is at distance at least one from 2^(f-e), thus
+ |xy-1| >= 2^(e-f), or |y-1/x| >= 2^(e-f)/x = 2^(-f)/X >= 2^(-f-n).
+ Since ufp(y) = 2^(n-f) [ufp = unit in first place], this means
+ that the distance |y-1/x| >= 2^(-2n) ufp(y).
+ Now assuming |gamma(x)-1/x| <= 1, which is true for x <= 1,
+ if 2^(-2n) ufp(y) >= 2, the error is at most 2^(-2n-1) ufp(y),
+ and round(1/x) with precision >= 2n+2 gives the correct result.
+ If x < 2^E, then y > 2^(-E), thus ufp(y) > 2^(-E-1).
+ A sufficient condition is thus EXP(x) + 2 <= -2 MAX(PREC(x),PREC(Y)).
+ */
+ if (MPFR_GET_EXP (x) + 2
+ <= -2 * (mpfr_exp_t) MAX(MPFR_PREC(x), MPFR_PREC(gamma)))
+ {
+ int sign = MPFR_SIGN (x); /* retrieve sign before possible override */
+ int special;
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* for overflow cases, see below; this needs to be done
+ before x possibly gets overridden. */
+ special =
+ MPFR_GET_EXP (x) == 1 - MPFR_EMAX_MAX &&
+ MPFR_IS_POS_SIGN (sign) &&
+ MPFR_IS_LIKE_RNDD (rnd_mode, sign) &&
+ mpfr_powerof2_raw (x);
+
+ MPFR_BLOCK (flags, inex = mpfr_ui_div (gamma, 1, x, rnd_mode));
+ if (inex == 0) /* x is a power of two */
+ {
+ /* return RND(1/x - euler) = RND(+/- 2^k - eps) with eps > 0 */
+ if (rnd_mode == MPFR_RNDN || MPFR_IS_LIKE_RNDU (rnd_mode, sign))
+ inex = 1;
+ else
+ {
+ mpfr_nextbelow (gamma);
+ inex = -1;
+ }
+ }
+ else if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
+ {
+ /* Overflow in the division 1/x. This is a real overflow, except
+ in RNDZ or RNDD when 1/x = 2^emax, i.e. x = 2^(-emax): due to
+ the "- euler", the rounded value in unbounded exponent range
+ is 0.111...11 * 2^emax (not an overflow). */
+ if (!special)
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, flags);
+ }
+ MPFR_SAVE_EXPO_FREE (expo);
+ /* Note: an overflow is possible with an infinite result;
+ in this case, the overflow flag will automatically be
+ restored by mpfr_check_range. */
+ return mpfr_check_range (gamma, inex, rnd_mode);
+ }
+
+ is_integer = mpfr_integer_p (x);
+ /* gamma(x) for x a negative integer gives NaN */
+ if (is_integer && MPFR_IS_NEG(x))
+ {
+ MPFR_SET_NAN (gamma);
+ MPFR_RET_NAN;
+ }
+
+ compared = mpfr_cmp_ui (x, 1);
+ if (compared == 0)
+ return mpfr_set_ui (gamma, 1, rnd_mode);
+
+ /* if x is an integer that fits into an unsigned long, use mpfr_fac_ui
+ if argument is not too large.
+ If precision is p, fac_ui costs O(u*p), whereas gamma costs O(p*M(p)),
+ so for u <= M(p), fac_ui should be faster.
+ We approximate here M(p) by p*log(p)^2, which is not a bad guess.
+ Warning: since the generic code does not handle exact cases,
+ we want all cases where gamma(x) is exact to be treated here.
+ */
+ if (is_integer && mpfr_fits_ulong_p (x, MPFR_RNDN))
+ {
+ unsigned long int u;
+ mpfr_prec_t p = MPFR_PREC(gamma);
+ u = mpfr_get_ui (x, MPFR_RNDN);
+ if (u < 44787929UL && bits_fac (u - 1) <= p + (rnd_mode == MPFR_RNDN))
+ /* bits_fac: lower bound on the number of bits of m,
+ where gamma(x) = (u-1)! = m*2^e with m odd. */
+ return mpfr_fac_ui (gamma, u - 1, rnd_mode);
+ /* if bits_fac(...) > p (resp. p+1 for rounding to nearest),
+ then gamma(x) cannot be exact in precision p (resp. p+1).
+ FIXME: remove the test u < 44787929UL after changing bits_fac
+ to return a mpz_t or mpfr_t. */
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* check for overflow: according to (6.1.37) in Abramowitz & Stegun,
+ gamma(x) >= exp(-x) * x^(x-1/2) * sqrt(2*Pi)
+ >= 2 * (x/e)^x / x for x >= 1 */
+ if (compared > 0)
+ {
+ mpfr_t yp;
+ mpfr_exp_t expxp;
+ MPFR_BLOCK_DECL (flags);
+
+ /* 1/e rounded down to 53 bits */
+#define EXPM1_STR "0.010111100010110101011000110110001011001110111100111"
+ mpfr_init2 (xp, 53);
+ mpfr_init2 (yp, 53);
+ mpfr_set_str_binary (xp, EXPM1_STR);
+ mpfr_mul (xp, x, xp, MPFR_RNDZ);
+ mpfr_sub_ui (yp, x, 2, MPFR_RNDZ);
+ mpfr_pow (xp, xp, yp, MPFR_RNDZ); /* (x/e)^(x-2) */
+ mpfr_set_str_binary (yp, EXPM1_STR);
+ mpfr_mul (xp, xp, yp, MPFR_RNDZ); /* x^(x-2) / e^(x-1) */
+ mpfr_mul (xp, xp, yp, MPFR_RNDZ); /* x^(x-2) / e^x */
+ mpfr_mul (xp, xp, x, MPFR_RNDZ); /* lower bound on x^(x-1) / e^x */
+ MPFR_BLOCK (flags, mpfr_mul_2ui (xp, xp, 1, MPFR_RNDZ));
+ expxp = MPFR_GET_EXP (xp);
+ mpfr_clear (xp);
+ mpfr_clear (yp);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return MPFR_OVERFLOW (flags) || expxp > __gmpfr_emax ?
+ mpfr_overflow (gamma, rnd_mode, 1) :
+ mpfr_gamma_aux (gamma, x, rnd_mode);
+ }
+
+ /* now compared < 0 */
+
+ /* check for underflow: for x < 1,
+ gamma(x) = Pi*(x-1)/sin(Pi*(2-x))/gamma(2-x).
+ Since gamma(2-x) >= 2 * ((2-x)/e)^(2-x) / (2-x), we have
+ |gamma(x)| <= Pi*(1-x)*(2-x)/2/((2-x)/e)^(2-x) / |sin(Pi*(2-x))|
+ <= 12 * ((2-x)/e)^x / |sin(Pi*(2-x))|.
+ To avoid an underflow in ((2-x)/e)^x, we compute the logarithm.
+ */
+ if (MPFR_IS_NEG(x))
+ {
+ int underflow = 0, sgn, ck;
+ mpfr_prec_t w;
+
+ mpfr_init2 (xp, 53);
+ mpfr_init2 (tmp, 53);
+ mpfr_init2 (tmp2, 53);
+ /* we want an upper bound for x * [log(2-x)-1].
+ since x < 0, we need a lower bound on log(2-x) */
+ mpfr_ui_sub (xp, 2, x, MPFR_RNDD);
+ mpfr_log (xp, xp, MPFR_RNDD);
+ mpfr_sub_ui (xp, xp, 1, MPFR_RNDD);
+ mpfr_mul (xp, xp, x, MPFR_RNDU);
+
+ /* we need an upper bound on 1/|sin(Pi*(2-x))|,
+ thus a lower bound on |sin(Pi*(2-x))|.
+ If 2-x is exact, then the error of Pi*(2-x) is (1+u)^2 with u = 2^(-p)
+ thus the error on sin(Pi*(2-x)) is less than 1/2ulp + 3Pi(2-x)u,
+ assuming u <= 1, thus <= u + 3Pi(2-x)u */
+
+ w = mpfr_gamma_2_minus_x_exact (x); /* 2-x is exact for prec >= w */
+ w += 17; /* to get tmp2 small enough */
+ mpfr_set_prec (tmp, w);
+ mpfr_set_prec (tmp2, w);
+ ck = mpfr_ui_sub (tmp, 2, x, MPFR_RNDN);
+ MPFR_ASSERTD (ck == 0); (void) ck; /* use ck to avoid a warning */
+ mpfr_const_pi (tmp2, MPFR_RNDN);
+ mpfr_mul (tmp2, tmp2, tmp, MPFR_RNDN); /* Pi*(2-x) */
+ mpfr_sin (tmp, tmp2, MPFR_RNDN); /* sin(Pi*(2-x)) */
+ sgn = mpfr_sgn (tmp);
+ mpfr_abs (tmp, tmp, MPFR_RNDN);
+ mpfr_mul_ui (tmp2, tmp2, 3, MPFR_RNDU); /* 3Pi(2-x) */
+ mpfr_add_ui (tmp2, tmp2, 1, MPFR_RNDU); /* 3Pi(2-x)+1 */
+ mpfr_div_2ui (tmp2, tmp2, mpfr_get_prec (tmp), MPFR_RNDU);
+ /* if tmp2<|tmp|, we get a lower bound */
+ if (mpfr_cmp (tmp2, tmp) < 0)
+ {
+ mpfr_sub (tmp, tmp, tmp2, MPFR_RNDZ); /* low bnd on |sin(Pi*(2-x))| */
+ mpfr_ui_div (tmp, 12, tmp, MPFR_RNDU); /* upper bound */
+ mpfr_log2 (tmp, tmp, MPFR_RNDU);
+ mpfr_add (xp, tmp, xp, MPFR_RNDU);
+ /* The assert below checks that expo.saved_emin - 2 always
+ fits in a long. FIXME if we want to allow mpfr_exp_t to
+ be a long long, for instance. */
+ MPFR_ASSERTN (MPFR_EMIN_MIN - 2 >= LONG_MIN);
+ underflow = mpfr_cmp_si (xp, expo.saved_emin - 2) <= 0;
+ }
+
+ mpfr_clear (xp);
+ mpfr_clear (tmp);
+ mpfr_clear (tmp2);
+ if (underflow) /* the sign is the opposite of that of sin(Pi*(2-x)) */
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (gamma, (rnd_mode == MPFR_RNDN) ? MPFR_RNDZ : rnd_mode, -sgn);
+ }
+ }
+
+ realprec = MPFR_PREC (gamma);
+ /* we want both 1-x and 2-x to be exact */
+ {
+ mpfr_prec_t w;
+ w = mpfr_gamma_1_minus_x_exact (x);
+ if (realprec < w)
+ realprec = w;
+ w = mpfr_gamma_2_minus_x_exact (x);
+ if (realprec < w)
+ realprec = w;
+ }
+ realprec = realprec + MPFR_INT_CEIL_LOG2 (realprec) + 20;
+ MPFR_ASSERTD(realprec >= 5);
+
+ MPFR_GROUP_INIT_4 (group, realprec + MPFR_INT_CEIL_LOG2 (realprec) + 20,
+ xp, tmp, tmp2, GammaTrial);
+ mpz_init (fact);
+ MPFR_ZIV_INIT (loop, realprec);
+ for (;;)
+ {
+ mpfr_exp_t err_g;
+ int ck;
+ MPFR_GROUP_REPREC_4 (group, realprec, xp, tmp, tmp2, GammaTrial);
+
+ /* reflection formula: gamma(x) = Pi*(x-1)/sin(Pi*(2-x))/gamma(2-x) */
+
+ ck = mpfr_ui_sub (xp, 2, x, MPFR_RNDN); /* 2-x, exact */
+ MPFR_ASSERTD(ck == 0); (void) ck; /* use ck to avoid a warning */
+ mpfr_gamma (tmp, xp, MPFR_RNDN); /* gamma(2-x), error (1+u) */
+ mpfr_const_pi (tmp2, MPFR_RNDN); /* Pi, error (1+u) */
+ mpfr_mul (GammaTrial, tmp2, xp, MPFR_RNDN); /* Pi*(2-x), error (1+u)^2 */
+ err_g = MPFR_GET_EXP(GammaTrial);
+ mpfr_sin (GammaTrial, GammaTrial, MPFR_RNDN); /* sin(Pi*(2-x)) */
+ /* If tmp is +Inf, we compute exp(lngamma(x)). */
+ if (mpfr_inf_p (tmp))
+ {
+ inex = mpfr_explgamma (gamma, x, &expo, tmp, tmp2, rnd_mode);
+ if (inex)
+ goto end;
+ else
+ goto ziv_next;
+ }
+ err_g = err_g + 1 - MPFR_GET_EXP(GammaTrial);
+ /* let g0 the true value of Pi*(2-x), g the computed value.
+ We have g = g0 + h with |h| <= |(1+u^2)-1|*g.
+ Thus sin(g) = sin(g0) + h' with |h'| <= |(1+u^2)-1|*g.
+ The relative error is thus bounded by |(1+u^2)-1|*g/sin(g)
+ <= |(1+u^2)-1|*2^err_g. <= 2.25*u*2^err_g for |u|<=1/4.
+ With the rounding error, this gives (0.5 + 2.25*2^err_g)*u. */
+ ck = mpfr_sub_ui (xp, x, 1, MPFR_RNDN); /* x-1, exact */
+ MPFR_ASSERTD(ck == 0); (void) ck; /* use ck to avoid a warning */
+ mpfr_mul (xp, tmp2, xp, MPFR_RNDN); /* Pi*(x-1), error (1+u)^2 */
+ mpfr_mul (GammaTrial, GammaTrial, tmp, MPFR_RNDN);
+ /* [1 + (0.5 + 2.25*2^err_g)*u]*(1+u)^2 = 1 + (2.5 + 2.25*2^err_g)*u
+ + (0.5 + 2.25*2^err_g)*u*(2u+u^2) + u^2.
+ For err_g <= realprec-2, we have (0.5 + 2.25*2^err_g)*u <=
+ 0.5*u + 2.25/4 <= 0.6875 and u^2 <= u/4, thus
+ (0.5 + 2.25*2^err_g)*u*(2u+u^2) + u^2 <= 0.6875*(2u+u/4) + u/4
+ <= 1.8*u, thus the rel. error is bounded by (4.5 + 2.25*2^err_g)*u. */
+ mpfr_div (GammaTrial, xp, GammaTrial, MPFR_RNDN);
+ /* the error is of the form (1+u)^3/[1 + (4.5 + 2.25*2^err_g)*u].
+ For realprec >= 5 and err_g <= realprec-2, [(4.5 + 2.25*2^err_g)*u]^2
+ <= 0.71, and for |y|<=0.71, 1/(1-y) can be written 1+a*y with a<=4.
+ (1+u)^3 * (1+4*(4.5 + 2.25*2^err_g)*u)
+ = 1 + (21 + 9*2^err_g)*u + (57+27*2^err_g)*u^2 + (55+27*2^err_g)*u^3
+ + (18+9*2^err_g)*u^4
+ <= 1 + (21 + 9*2^err_g)*u + (57+27*2^err_g)*u^2 + (56+28*2^err_g)*u^3
+ <= 1 + (21 + 9*2^err_g)*u + (59+28*2^err_g)*u^2
+ <= 1 + (23 + 10*2^err_g)*u.
+ The final error is thus bounded by (23 + 10*2^err_g) ulps,
+ which is <= 2^6 for err_g<=2, and <= 2^(err_g+4) for err_g >= 2. */
+ err_g = (err_g <= 2) ? 6 : err_g + 4;
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (GammaTrial, realprec - err_g,
+ MPFR_PREC(gamma), rnd_mode)))
+ break;
+
+ ziv_next:
+ MPFR_ZIV_NEXT (loop, realprec);
+ }
+
+ end:
+ MPFR_ZIV_FREE (loop);
+
+ if (inex == 0)
+ inex = mpfr_set (gamma, GammaTrial, rnd_mode);
+ MPFR_GROUP_CLEAR (group);
+ mpz_clear (fact);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (gamma, inex, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/gammaonethird.c b/Build/source/libs/mpfr/mpfr-src/src/gammaonethird.c
new file mode 100644
index 00000000000..255e3fbbedc
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/gammaonethird.c
@@ -0,0 +1,191 @@
+/* Functions for evaluating Gamma(1/3) and Gamma(2/3). Used by mpfr_ai.
+
+Copyright 2010-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#define MPFR_ACC_OR_MUL(v) \
+ do \
+ { \
+ if (v <= ULONG_MAX / acc) \
+ acc *= v; \
+ else \
+ { \
+ mpfr_mul_ui (y, y, acc, mode); acc = v; \
+ } \
+ } \
+ while (0)
+
+#define MPFR_ACC_OR_DIV(v) \
+ do \
+ { \
+ if (v <= ULONG_MAX / acc) \
+ acc *= v; \
+ else \
+ { \
+ mpfr_div_ui (y, y, acc, mode); acc = v; \
+ } \
+ } \
+ while (0)
+
+static void
+mpfr_mul_ui5 (mpfr_ptr y, mpfr_srcptr x,
+ unsigned long int v1, unsigned long int v2,
+ unsigned long int v3, unsigned long int v4,
+ unsigned long int v5, mpfr_rnd_t mode)
+{
+ unsigned long int acc = v1;
+ mpfr_set (y, x, mode);
+ MPFR_ACC_OR_MUL (v2);
+ MPFR_ACC_OR_MUL (v3);
+ MPFR_ACC_OR_MUL (v4);
+ MPFR_ACC_OR_MUL (v5);
+ mpfr_mul_ui (y, y, acc, mode);
+}
+
+void
+mpfr_div_ui2 (mpfr_ptr y, mpfr_srcptr x,
+ unsigned long int v1, unsigned long int v2, mpfr_rnd_t mode)
+{
+ unsigned long int acc = v1;
+ mpfr_set (y, x, mode);
+ MPFR_ACC_OR_DIV (v2);
+ mpfr_div_ui (y, y, acc, mode);
+}
+
+static void
+mpfr_div_ui8 (mpfr_ptr y, mpfr_srcptr x,
+ unsigned long int v1, unsigned long int v2,
+ unsigned long int v3, unsigned long int v4,
+ unsigned long int v5, unsigned long int v6,
+ unsigned long int v7, unsigned long int v8, mpfr_rnd_t mode)
+{
+ unsigned long int acc = v1;
+ mpfr_set (y, x, mode);
+ MPFR_ACC_OR_DIV (v2);
+ MPFR_ACC_OR_DIV (v3);
+ MPFR_ACC_OR_DIV (v4);
+ MPFR_ACC_OR_DIV (v5);
+ MPFR_ACC_OR_DIV (v6);
+ MPFR_ACC_OR_DIV (v7);
+ MPFR_ACC_OR_DIV (v8);
+ mpfr_div_ui (y, y, acc, mode);
+}
+
+
+/* Gives an approximation of omega = Gamma(1/3)^6 * sqrt(10) / (12pi^4) */
+/* using C. H. Brown's formula. */
+/* The computed value s satisfies |s-omega| <= 2^{1-prec}*omega */
+/* As usual, the variable s is supposed to be initialized. */
+static void
+mpfr_Browns_const (mpfr_ptr s, mpfr_prec_t prec)
+{
+ mpfr_t uk;
+ unsigned long int k;
+
+ mpfr_prec_t working_prec = prec + 10 + MPFR_INT_CEIL_LOG2 (2 + prec / 10);
+
+ mpfr_init2 (uk, working_prec);
+ mpfr_set_prec (s, working_prec);
+
+ mpfr_set_ui (uk, 1, MPFR_RNDN);
+ mpfr_set (s, uk, MPFR_RNDN);
+ k = 1;
+
+ /* Invariants: uk ~ u(k-1) and s ~ sum(i=0..k-1, u(i)) */
+ for (;;)
+ {
+ mpfr_mul_ui5 (uk, uk, 6 * k - 5, 6 * k - 4, 6 * k - 3, 6 * k - 2,
+ 6 * k - 1, MPFR_RNDN);
+ mpfr_div_ui8 (uk, uk, k, k, 3 * k - 2, 3 * k - 1, 3 * k, 80, 160, 160,
+ MPFR_RNDN);
+ MPFR_CHANGE_SIGN (uk);
+
+ mpfr_add (s, s, uk, MPFR_RNDN);
+ k++;
+ if (MPFR_GET_EXP (uk) + prec <= MPFR_GET_EXP (s) + 7)
+ break;
+ }
+
+ mpfr_clear (uk);
+ return;
+}
+
+/* Returns y such that |Gamma(1/3)-y| <= 2^{1-prec}*Gamma(1/3) */
+static void
+mpfr_gamma_one_third (mpfr_ptr y, mpfr_prec_t prec)
+{
+ mpfr_t tmp, tmp2, tmp3;
+
+ mpfr_init2 (tmp, prec + 9);
+ mpfr_init2 (tmp2, prec + 9);
+ mpfr_init2 (tmp3, prec + 4);
+ mpfr_set_prec (y, prec + 2);
+
+ mpfr_const_pi (tmp, MPFR_RNDN);
+ mpfr_sqr (tmp, tmp, MPFR_RNDN);
+ mpfr_sqr (tmp, tmp, MPFR_RNDN);
+ mpfr_mul_ui (tmp, tmp, 12, MPFR_RNDN);
+
+ mpfr_Browns_const (tmp2, prec + 9);
+ mpfr_mul (tmp, tmp, tmp2, MPFR_RNDN);
+
+ mpfr_set_ui (tmp2, 10, MPFR_RNDN);
+ mpfr_sqrt (tmp2, tmp2, MPFR_RNDN);
+ mpfr_div (tmp, tmp, tmp2, MPFR_RNDN);
+
+ mpfr_sqrt (tmp3, tmp, MPFR_RNDN);
+ mpfr_cbrt (y, tmp3, MPFR_RNDN);
+
+ mpfr_clear (tmp);
+ mpfr_clear (tmp2);
+ mpfr_clear (tmp3);
+ return;
+}
+
+/* Computes y1 and y2 such that: */
+/* |y1-Gamma(1/3)| <= 2^{1-prec}Gamma(1/3) */
+/* and |y2-Gamma(2/3)| <= 2^{1-prec}Gamma(2/3) */
+/* */
+/* Uses the formula Gamma(z)Gamma(1-z) = pi / sin(pi*z) */
+/* to compute Gamma(2/3) from Gamma(1/3). */
+void
+mpfr_gamma_one_and_two_third (mpfr_ptr y1, mpfr_ptr y2, mpfr_prec_t prec)
+{
+ mpfr_t temp;
+
+ mpfr_init2 (temp, prec + 4);
+ mpfr_set_prec (y2, prec + 4);
+
+ mpfr_gamma_one_third (y1, prec + 4);
+
+ mpfr_set_ui (temp, 3, MPFR_RNDN);
+ mpfr_sqrt (temp, temp, MPFR_RNDN);
+ mpfr_mul (temp, y1, temp, MPFR_RNDN);
+
+ mpfr_const_pi (y2, MPFR_RNDN);
+ mpfr_mul_2ui (y2, y2, 1, MPFR_RNDN);
+
+ mpfr_div (y2, y2, temp, MPFR_RNDN);
+
+ mpfr_clear (temp);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/gen_inverse.h b/Build/source/libs/mpfr/mpfr-src/src/gen_inverse.h
new file mode 100644
index 00000000000..643cdb06350
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/gen_inverse.h
@@ -0,0 +1,106 @@
+/* generic inverse of a function.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#ifndef ACTION_SPECIAL
+#define ACTION_SPECIAL
+#endif
+
+#ifndef ACTION_TINY
+#define ACTION_TINY
+#endif
+
+/* example of use:
+#define FUNCTION mpfr_sec
+#define INVERSE mpfr_cos
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_ZERO(y) return mpfr_set_ui (y, 1, MPFR_RNDN)
+#include "gen_inverse.h"
+*/
+
+int
+FUNCTION (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t precy; /* target precision */
+ mpfr_prec_t m; /* working precision */
+ mpfr_t z; /* temporary variable to store INVERSE(x) */
+ int inexact; /* inexact flag */
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
+ {
+ if (MPFR_IS_NAN(x))
+ ACTION_NAN(y);
+ else if (MPFR_IS_INF(x))
+ ACTION_INF(y);
+ else /* x = 0 */
+ ACTION_ZERO(y,x);
+ }
+
+ /* x is neither NaN, Inf nor zero */
+ MPFR_SAVE_EXPO_MARK (expo);
+ ACTION_TINY (y, x, rnd_mode); /* special case for very small input x */
+ precy = MPFR_PREC(y);
+ m = precy + MPFR_INT_CEIL_LOG2 (precy) + 3;
+ mpfr_init2 (z, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for(;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_BLOCK (flags, INVERSE (z, x, MPFR_RNDZ)); /* error k_u < 1 ulp */
+ /* FIXME: the following assumes that if an overflow happens with
+ MPFR_EMAX_MAX, then necessarily an underflow happens with
+ __gmpfr_emin */
+ if (MPFR_OVERFLOW (flags))
+ {
+ int s = MPFR_SIGN(z);
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (z);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (y, (rnd_mode == MPFR_RNDN) ?
+ MPFR_RNDZ : rnd_mode, s);
+ }
+ mpfr_ui_div (z, 1, z, MPFR_RNDN);
+ /* the error is less than c_w + 2*c_u*k_u (see algorithms.tex),
+ where c_w = 1/2, c_u = 1 since z was rounded toward zero,
+ thus 1/2 + 2 < 4 */
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (z, m - 2, precy, rnd_mode)))
+ break;
+ ACTION_SPECIAL;
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (z, m);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (y, z, rnd_mode);
+ mpfr_clear (z);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/generic/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/generic/mparam.h
new file mode 100644
index 00000000000..b850e6508f5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/generic/mparam.h
@@ -0,0 +1,69 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef MPFR_MULHIGH_TAB
+# define MPFR_MULHIGH_TAB -1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0
+#endif
+
+#ifndef MPFR_SQRHIGH_TAB
+# define MPFR_SQRHIGH_TAB -1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0
+#endif
+
+#ifndef MPFR_DIVHIGH_TAB
+# define MPFR_DIVHIGH_TAB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
+#endif
+
+#ifndef MPFR_MUL_THRESHOLD
+# define MPFR_MUL_THRESHOLD 20 /* limbs */
+#endif
+
+#ifndef MPFR_SQR_THRESHOLD
+# define MPFR_SQR_THRESHOLD 20 /* limbs */
+#endif
+
+#ifndef MPFR_DIV_THRESHOLD
+# define MPFR_DIV_THRESHOLD 25 /* limbs */
+#endif
+
+#ifndef MPFR_EXP_2_THRESHOLD
+# define MPFR_EXP_2_THRESHOLD 100 /* bits */
+#endif
+
+#ifndef MPFR_EXP_THRESHOLD
+# define MPFR_EXP_THRESHOLD 25000 /* bits */
+#endif
+
+#ifndef MPFR_SINCOS_THRESHOLD
+# define MPFR_SINCOS_THRESHOLD 30000 /* bits */
+#endif
+
+#ifndef MPFR_AI_THRESHOLD1
+# define MPFR_AI_THRESHOLD1 -13107 /* threshold for negative input of mpfr_ai */
+#endif
+
+#ifndef MPFR_AI_THRESHOLD2
+# define MPFR_AI_THRESHOLD2 1311
+#endif
+
+#ifndef MPFR_AI_THRESHOLD3
+# define MPFR_AI_THRESHOLD3 19661
+#endif
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_d.c b/Build/source/libs/mpfr/mpfr-src/src/get_d.c
new file mode 100644
index 00000000000..e4098264a1e
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_d.c
@@ -0,0 +1,183 @@
+/* mpfr_get_d, mpfr_get_d_2exp -- convert a multiple precision floating-point
+ number to a machine double precision float
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <float.h>
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#include "ieee_floats.h"
+
+/* Assumes IEEE-754 double precision; otherwise, only an approximated
+ result will be returned, without any guaranty (and special cases
+ such as NaN must be avoided if not supported). */
+
+double
+mpfr_get_d (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
+{
+ double d;
+ int negative;
+ mpfr_exp_t e;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (src)))
+ {
+ if (MPFR_IS_NAN (src))
+ return MPFR_DBL_NAN;
+
+ negative = MPFR_IS_NEG (src);
+
+ if (MPFR_IS_INF (src))
+ return negative ? MPFR_DBL_INFM : MPFR_DBL_INFP;
+
+ MPFR_ASSERTD (MPFR_IS_ZERO(src));
+ return negative ? DBL_NEG_ZERO : 0.0;
+ }
+
+ e = MPFR_GET_EXP (src);
+ negative = MPFR_IS_NEG (src);
+
+ if (MPFR_UNLIKELY(rnd_mode == MPFR_RNDA))
+ rnd_mode = negative ? MPFR_RNDD : MPFR_RNDU;
+
+ /* the smallest normalized number is 2^(-1022)=0.1e-1021, and the smallest
+ subnormal is 2^(-1074)=0.1e-1073 */
+ if (MPFR_UNLIKELY (e < -1073))
+ {
+ /* Note: Avoid using a constant expression DBL_MIN * DBL_EPSILON
+ as this gives 0 instead of the correct result with gcc on some
+ Alpha machines. */
+ d = negative ?
+ (rnd_mode == MPFR_RNDD ||
+ (rnd_mode == MPFR_RNDN && mpfr_cmp_si_2exp(src, -1, -1075) < 0)
+ ? -DBL_MIN : DBL_NEG_ZERO) :
+ (rnd_mode == MPFR_RNDU ||
+ (rnd_mode == MPFR_RNDN && mpfr_cmp_si_2exp(src, 1, -1075) > 0)
+ ? DBL_MIN : 0.0);
+ if (d != 0.0) /* we multiply DBL_MIN = 2^(-1022) by DBL_EPSILON = 2^(-52)
+ to get +-2^(-1074) */
+ d *= DBL_EPSILON;
+ }
+ /* the largest normalized number is 2^1024*(1-2^(-53))=0.111...111e1024 */
+ else if (MPFR_UNLIKELY (e > 1024))
+ {
+ d = negative ?
+ (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDU ?
+ -DBL_MAX : MPFR_DBL_INFM) :
+ (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDD ?
+ DBL_MAX : MPFR_DBL_INFP);
+ }
+ else
+ {
+ int nbits;
+ mp_size_t np, i;
+ mp_limb_t tp[ MPFR_LIMBS_PER_DOUBLE ];
+ int carry;
+
+ nbits = IEEE_DBL_MANT_DIG; /* 53 */
+ if (MPFR_UNLIKELY (e < -1021))
+ /*In the subnormal case, compute the exact number of significant bits*/
+ {
+ nbits += (1021 + e);
+ MPFR_ASSERTD (nbits >= 1);
+ }
+ np = MPFR_PREC2LIMBS (nbits);
+ MPFR_ASSERTD ( np <= MPFR_LIMBS_PER_DOUBLE );
+ carry = mpfr_round_raw_4 (tp, MPFR_MANT(src), MPFR_PREC(src), negative,
+ nbits, rnd_mode);
+ if (MPFR_UNLIKELY(carry))
+ d = 1.0;
+ else
+ {
+ /* The following computations are exact thanks to the previous
+ mpfr_round_raw. */
+ d = (double) tp[0] / MP_BASE_AS_DOUBLE;
+ for (i = 1 ; i < np ; i++)
+ d = (d + tp[i]) / MP_BASE_AS_DOUBLE;
+ /* d is the mantissa (between 1/2 and 1) of the argument rounded
+ to 53 bits */
+ }
+ d = mpfr_scale2 (d, e);
+ if (negative)
+ d = -d;
+ }
+
+ return d;
+}
+
+#undef mpfr_get_d1
+double
+mpfr_get_d1 (mpfr_srcptr src)
+{
+ return mpfr_get_d (src, __gmpfr_default_rounding_mode);
+}
+
+double
+mpfr_get_d_2exp (long *expptr, mpfr_srcptr src, mpfr_rnd_t rnd_mode)
+{
+ double ret;
+ mpfr_exp_t exp;
+ mpfr_t tmp;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (src)))
+ {
+ int negative;
+ *expptr = 0;
+ if (MPFR_IS_NAN (src))
+ return MPFR_DBL_NAN;
+ negative = MPFR_IS_NEG (src);
+ if (MPFR_IS_INF (src))
+ return negative ? MPFR_DBL_INFM : MPFR_DBL_INFP;
+ MPFR_ASSERTD (MPFR_IS_ZERO(src));
+ return negative ? DBL_NEG_ZERO : 0.0;
+ }
+
+ tmp[0] = *src; /* Hack copy mpfr_t */
+ MPFR_SET_EXP (tmp, 0);
+ ret = mpfr_get_d (tmp, rnd_mode);
+
+ if (MPFR_IS_PURE_FP(src))
+ {
+ exp = MPFR_GET_EXP (src);
+
+ /* rounding can give 1.0, adjust back to 0.5 <= abs(ret) < 1.0 */
+ if (ret == 1.0)
+ {
+ ret = 0.5;
+ exp++;
+ }
+ else if (ret == -1.0)
+ {
+ ret = -0.5;
+ exp++;
+ }
+
+ MPFR_ASSERTN ((ret >= 0.5 && ret < 1.0)
+ || (ret <= -0.5 && ret > -1.0));
+ MPFR_ASSERTN (exp >= LONG_MIN && exp <= LONG_MAX);
+ }
+ else
+ exp = 0;
+
+ *expptr = exp;
+ return ret;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_d64.c b/Build/source/libs/mpfr/mpfr-src/src/get_d64.c
new file mode 100644
index 00000000000..16c9c936e56
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_d64.c
@@ -0,0 +1,400 @@
+/* mpfr_get_decimal64 -- convert a multiple precision floating-point number
+ to a IEEE 754r decimal64 float
+
+See http://gcc.gnu.org/ml/gcc/2006-06/msg00691.html,
+http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html,
+and TR 24732 <http://www.open-std.org/jtc1/sc22/wg14/www/projects#24732>.
+
+Copyright 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdlib.h> /* for strtol */
+#include "mpfr-impl.h"
+
+#define ISDIGIT(c) ('0' <= c && c <= '9')
+
+#ifdef MPFR_WANT_DECIMAL_FLOATS
+
+#ifndef DEC64_MAX
+# define DEC64_MAX 9.999999999999999E384dd
+#endif
+
+#ifdef DPD_FORMAT
+static int T[1000] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 10, 11, 42, 43, 74, 75, 106, 107, 78, 79, 26, 27,
+ 58, 59, 90, 91, 122, 123, 94, 95, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 138, 139, 170,
+ 171, 202, 203, 234, 235, 206, 207, 154, 155, 186, 187, 218, 219, 250, 251,
+ 222, 223, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 266, 267, 298, 299, 330, 331, 362, 363,
+ 334, 335, 282, 283, 314, 315, 346, 347, 378, 379, 350, 351, 384, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 394, 395, 426, 427, 458, 459, 490, 491, 462, 463, 410, 411, 442,
+ 443, 474, 475, 506, 507, 478, 479, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 522, 523, 554,
+ 555, 586, 587, 618, 619, 590, 591, 538, 539, 570, 571, 602, 603, 634, 635,
+ 606, 607, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 672, 673, 674, 675, 676, 677, 678, 679,
+ 680, 681, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 752, 753, 754,
+ 755, 756, 757, 758, 759, 760, 761, 650, 651, 682, 683, 714, 715, 746, 747,
+ 718, 719, 666, 667, 698, 699, 730, 731, 762, 763, 734, 735, 768, 769, 770,
+ 771, 772, 773, 774, 775, 776, 777, 784, 785, 786, 787, 788, 789, 790, 791,
+ 792, 793, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 816, 817, 818,
+ 819, 820, 821, 822, 823, 824, 825, 832, 833, 834, 835, 836, 837, 838, 839,
+ 840, 841, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 864, 865, 866,
+ 867, 868, 869, 870, 871, 872, 873, 880, 881, 882, 883, 884, 885, 886, 887,
+ 888, 889, 778, 779, 810, 811, 842, 843, 874, 875, 846, 847, 794, 795, 826,
+ 827, 858, 859, 890, 891, 862, 863, 896, 897, 898, 899, 900, 901, 902, 903,
+ 904, 905, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 928, 929, 930,
+ 931, 932, 933, 934, 935, 936, 937, 944, 945, 946, 947, 948, 949, 950, 951,
+ 952, 953, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 976, 977, 978,
+ 979, 980, 981, 982, 983, 984, 985, 992, 993, 994, 995, 996, 997, 998, 999,
+ 1000, 1001, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 906,
+ 907, 938, 939, 970, 971, 1002, 1003, 974, 975, 922, 923, 954, 955, 986,
+ 987, 1018, 1019, 990, 991, 12, 13, 268, 269, 524, 525, 780, 781, 46, 47, 28,
+ 29, 284, 285, 540, 541, 796, 797, 62, 63, 44, 45, 300, 301, 556, 557, 812,
+ 813, 302, 303, 60, 61, 316, 317, 572, 573, 828, 829, 318, 319, 76, 77,
+ 332, 333, 588, 589, 844, 845, 558, 559, 92, 93, 348, 349, 604, 605, 860,
+ 861, 574, 575, 108, 109, 364, 365, 620, 621, 876, 877, 814, 815, 124, 125,
+ 380, 381, 636, 637, 892, 893, 830, 831, 14, 15, 270, 271, 526, 527, 782,
+ 783, 110, 111, 30, 31, 286, 287, 542, 543, 798, 799, 126, 127, 140, 141,
+ 396, 397, 652, 653, 908, 909, 174, 175, 156, 157, 412, 413, 668, 669, 924,
+ 925, 190, 191, 172, 173, 428, 429, 684, 685, 940, 941, 430, 431, 188, 189,
+ 444, 445, 700, 701, 956, 957, 446, 447, 204, 205, 460, 461, 716, 717, 972,
+ 973, 686, 687, 220, 221, 476, 477, 732, 733, 988, 989, 702, 703, 236, 237,
+ 492, 493, 748, 749, 1004, 1005, 942, 943, 252, 253, 508, 509, 764, 765,
+ 1020, 1021, 958, 959, 142, 143, 398, 399, 654, 655, 910, 911, 238, 239, 158,
+ 159, 414, 415, 670, 671, 926, 927, 254, 255};
+#endif
+
+/* construct a decimal64 NaN */
+static _Decimal64
+get_decimal64_nan (void)
+{
+ union ieee_double_extract x;
+ union ieee_double_decimal64 y;
+
+ x.s.exp = 1984; /* G[0]..G[4] = 11111: quiet NaN */
+ y.d = x.d;
+ return y.d64;
+}
+
+/* construct the decimal64 Inf with given sign */
+static _Decimal64
+get_decimal64_inf (int negative)
+{
+ union ieee_double_extract x;
+ union ieee_double_decimal64 y;
+
+ x.s.sig = (negative) ? 1 : 0;
+ x.s.exp = 1920; /* G[0]..G[4] = 11110: Inf */
+ y.d = x.d;
+ return y.d64;
+}
+
+/* construct the decimal64 zero with given sign */
+static _Decimal64
+get_decimal64_zero (int negative)
+{
+ union ieee_double_decimal64 y;
+
+ /* zero has the same representation in binary64 and decimal64 */
+ y.d = negative ? DBL_NEG_ZERO : 0.0;
+ return y.d64;
+}
+
+/* construct the decimal64 smallest non-zero with given sign */
+static _Decimal64
+get_decimal64_min (int negative)
+{
+ return negative ? - 1E-398dd : 1E-398dd;
+}
+
+/* construct the decimal64 largest finite number with given sign */
+static _Decimal64
+get_decimal64_max (int negative)
+{
+ return negative ? - DEC64_MAX : DEC64_MAX;
+}
+
+/* one-to-one conversion:
+ s is a decimal string representing a number x = m * 10^e which must be
+ exactly representable in the decimal64 format, i.e.
+ (a) the mantissa m has at most 16 decimal digits
+ (b1) -383 <= e <= 384 with m integer multiple of 10^(-15), |m| < 10
+ (b2) or -398 <= e <= 369 with m integer, |m| < 10^16.
+ Assumes s is neither NaN nor +Inf nor -Inf.
+*/
+static _Decimal64
+string_to_Decimal64 (char *s)
+{
+ long int exp = 0;
+ char m[17];
+ long n = 0; /* mantissa length */
+ char *endptr[1];
+ union ieee_double_extract x;
+ union ieee_double_decimal64 y;
+#ifdef DPD_FORMAT
+ unsigned int G, d1, d2, d3, d4, d5;
+#endif
+
+ /* read sign */
+ if (*s == '-')
+ {
+ x.s.sig = 1;
+ s ++;
+ }
+ else
+ x.s.sig = 0;
+ /* read mantissa */
+ while (ISDIGIT (*s))
+ m[n++] = *s++;
+ exp = n;
+ if (*s == '.')
+ {
+ s ++;
+ while (ISDIGIT (*s))
+ m[n++] = *s++;
+ }
+ /* we have exp digits before decimal point, and a total of n digits */
+ exp -= n; /* we will consider an integer mantissa */
+ MPFR_ASSERTN(n <= 16);
+ if (*s == 'E' || *s == 'e')
+ exp += strtol (s + 1, endptr, 10);
+ else
+ *endptr = s;
+ MPFR_ASSERTN(**endptr == '\0');
+ MPFR_ASSERTN(-398 <= exp && exp <= (long) (385 - n));
+ while (n < 16)
+ {
+ m[n++] = '0';
+ exp --;
+ }
+ /* now n=16 and -398 <= exp <= 369 */
+ m[n] = '\0';
+
+ /* compute biased exponent */
+ exp += 398;
+
+ MPFR_ASSERTN(exp >= -15);
+ if (exp < 0)
+ {
+ int i;
+ n = -exp;
+ /* check the last n digits of the mantissa are zero */
+ for (i = 1; i <= n; i++)
+ MPFR_ASSERTN(m[16 - n] == '0');
+ /* shift the first (16-n) digits to the right */
+ for (i = 16 - n - 1; i >= 0; i--)
+ m[i + n] = m[i];
+ /* zero the first n digits */
+ for (i = 0; i < n; i ++)
+ m[i] = '0';
+ exp = 0;
+ }
+
+ /* now convert to DPD or BID */
+#ifdef DPD_FORMAT
+#define CH(d) (d - '0')
+ if (m[0] >= '8')
+ G = (3 << 11) | ((exp & 768) << 1) | ((CH(m[0]) & 1) << 8);
+ else
+ G = ((exp & 768) << 3) | (CH(m[0]) << 8);
+ /* now the most 5 significant bits of G are filled */
+ G |= exp & 255;
+ d1 = T[100 * CH(m[1]) + 10 * CH(m[2]) + CH(m[3])]; /* 10-bit encoding */
+ d2 = T[100 * CH(m[4]) + 10 * CH(m[5]) + CH(m[6])]; /* 10-bit encoding */
+ d3 = T[100 * CH(m[7]) + 10 * CH(m[8]) + CH(m[9])]; /* 10-bit encoding */
+ d4 = T[100 * CH(m[10]) + 10 * CH(m[11]) + CH(m[12])]; /* 10-bit encoding */
+ d5 = T[100 * CH(m[13]) + 10 * CH(m[14]) + CH(m[15])]; /* 10-bit encoding */
+ x.s.exp = G >> 2;
+ x.s.manh = ((G & 3) << 18) | (d1 << 8) | (d2 >> 2);
+ x.s.manl = (d2 & 3) << 30;
+ x.s.manl |= (d3 << 20) | (d4 << 10) | d5;
+#else /* BID format */
+ {
+ mp_size_t rn;
+ mp_limb_t rp[2];
+ int case_i = strcmp (m, "9007199254740992") < 0;
+
+ for (n = 0; n < 16; n++)
+ m[n] -= '0';
+ rn = mpn_set_str (rp, (unsigned char *) m, 16, 10);
+ if (rn == 1)
+ rp[1] = 0;
+#if GMP_NUMB_BITS > 32
+ rp[1] = rp[1] << (GMP_NUMB_BITS - 32);
+ rp[1] |= rp[0] >> 32;
+ rp[0] &= 4294967295UL;
+#endif
+ if (case_i)
+ { /* s < 2^53: case i) */
+ x.s.exp = exp << 1;
+ x.s.manl = rp[0]; /* 32 bits */
+ x.s.manh = rp[1] & 1048575; /* 20 low bits */
+ x.s.exp |= rp[1] >> 20; /* 1 bit */
+ }
+ else /* s >= 2^53: case ii) */
+ {
+ x.s.exp = 1536 | (exp >> 1);
+ x.s.manl = rp[0];
+ x.s.manh = (rp[1] ^ 2097152) | ((exp & 1) << 19);
+ }
+ }
+#endif /* DPD_FORMAT */
+ y.d = x.d;
+ return y.d64;
+}
+
+_Decimal64
+mpfr_get_decimal64 (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
+{
+ int negative;
+ mpfr_exp_t e;
+
+ /* the encoding of NaN, Inf, zero is the same under DPD or BID */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (src)))
+ {
+ if (MPFR_IS_NAN (src))
+ return get_decimal64_nan ();
+
+ negative = MPFR_IS_NEG (src);
+
+ if (MPFR_IS_INF (src))
+ return get_decimal64_inf (negative);
+
+ MPFR_ASSERTD (MPFR_IS_ZERO(src));
+ return get_decimal64_zero (negative);
+ }
+
+ e = MPFR_GET_EXP (src);
+ negative = MPFR_IS_NEG (src);
+
+ if (MPFR_UNLIKELY(rnd_mode == MPFR_RNDA))
+ rnd_mode = negative ? MPFR_RNDD : MPFR_RNDU;
+
+ /* the smallest decimal64 number is 10^(-398),
+ with 2^(-1323) < 10^(-398) < 2^(-1322) */
+ if (MPFR_UNLIKELY (e < -1323)) /* src <= 2^(-1324) < 1/2*10^(-398) */
+ {
+ if (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDN
+ || (rnd_mode == MPFR_RNDD && negative == 0)
+ || (rnd_mode == MPFR_RNDU && negative != 0))
+ return get_decimal64_zero (negative);
+ else /* return the smallest non-zero number */
+ return get_decimal64_min (negative);
+ }
+ /* the largest decimal64 number is just below 10^(385) < 2^1279 */
+ else if (MPFR_UNLIKELY (e > 1279)) /* then src >= 2^1279 */
+ {
+ if (rnd_mode == MPFR_RNDZ
+ || (rnd_mode == MPFR_RNDU && negative != 0)
+ || (rnd_mode == MPFR_RNDD && negative == 0))
+ return get_decimal64_max (negative);
+ else
+ return get_decimal64_inf (negative);
+ }
+ else
+ {
+ /* we need to store the sign (1), the mantissa (16), and the terminating
+ character, thus we need at least 18 characters in s */
+ char s[23];
+ mpfr_get_str (s, &e, 10, 16, src, rnd_mode);
+ /* the smallest normal number is 1.000...000E-383,
+ which corresponds to s=[0.]1000...000 and e=-382 */
+ if (e < -382)
+ {
+ /* the smallest subnormal number is 0.000...001E-383 = 1E-398,
+ which corresponds to s=[0.]1000...000 and e=-397 */
+ if (e < -397)
+ {
+ if (rnd_mode == MPFR_RNDN && e == -398)
+ {
+ /* If 0.5E-398 < |src| < 1E-398 (smallest subnormal),
+ src should round to +/- 1E-398 in MPFR_RNDN. */
+ mpfr_get_str (s, &e, 10, 1, src, MPFR_RNDA);
+ return e == -398 && s[negative] <= '5' ?
+ get_decimal64_zero (negative) :
+ get_decimal64_min (negative);
+ }
+ if (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDN
+ || (rnd_mode == MPFR_RNDD && negative == 0)
+ || (rnd_mode == MPFR_RNDU && negative != 0))
+ return get_decimal64_zero (negative);
+ else /* return the smallest non-zero number */
+ return get_decimal64_min (negative);
+ }
+ else
+ {
+ mpfr_exp_t e2;
+ long digits = 16 - (-382 - e);
+ /* if e = -397 then 16 - (-382 - e) = 1 */
+ mpfr_get_str (s, &e2, 10, digits, src, rnd_mode);
+ /* Warning: we can have e2 = e + 1 here, when rounding to
+ nearest or away from zero. */
+ s[negative + digits] = 'E';
+ sprintf (s + negative + digits + 1, "%ld",
+ (long int)e2 - digits);
+ return string_to_Decimal64 (s);
+ }
+ }
+ /* the largest number is 9.999...999E+384,
+ which corresponds to s=[0.]9999...999 and e=385 */
+ else if (e > 385)
+ {
+ if (rnd_mode == MPFR_RNDZ
+ || (rnd_mode == MPFR_RNDU && negative != 0)
+ || (rnd_mode == MPFR_RNDD && negative == 0))
+ return get_decimal64_max (negative);
+ else
+ return get_decimal64_inf (negative);
+ }
+ else /* -382 <= e <= 385 */
+ {
+ s[16 + negative] = 'E';
+ sprintf (s + 17 + negative, "%ld", (long int)e - 16);
+ return string_to_Decimal64 (s);
+ }
+ }
+}
+
+#endif /* MPFR_WANT_DECIMAL_FLOATS */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_exp.c b/Build/source/libs/mpfr/mpfr-src/src/get_exp.c
new file mode 100644
index 00000000000..9e177687bb0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_exp.c
@@ -0,0 +1,31 @@
+/* mpfr_get_exp - get the exponent of a floating-point number
+
+Copyright 2002-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#undef mpfr_get_exp
+mpfr_exp_t
+mpfr_get_exp (mpfr_srcptr x)
+{
+ MPFR_ASSERTN(MPFR_IS_PURE_FP(x));
+ return MPFR_EXP(x); /* do not use MPFR_GET_EXP of course... */
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_f.c b/Build/source/libs/mpfr/mpfr-src/src/get_f.c
new file mode 100644
index 00000000000..f129845b965
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_f.c
@@ -0,0 +1,148 @@
+/* mpfr_get_f -- convert a MPFR number to a GNU MPF number
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Since MPFR-3.0, return the usual inexact value.
+ The erange flag is set if an error occurred in the conversion
+ (y is NaN, +Inf, or -Inf that have no equivalent in mpf)
+*/
+int
+mpfr_get_f (mpf_ptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ int inex;
+ mp_size_t sx, sy;
+ mpfr_prec_t precx, precy;
+ mp_limb_t *xp;
+ int sh;
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(y)))
+ {
+ if (MPFR_IS_ZERO(y))
+ {
+ mpf_set_ui (x, 0);
+ return 0;
+ }
+ else if (MPFR_IS_NAN (y))
+ {
+ MPFR_SET_ERANGE ();
+ return 0;
+ }
+ else /* y is plus infinity (resp. minus infinity), set x to the maximum
+ value (resp. the minimum value) in precision PREC(x) */
+ {
+ int i;
+ mp_limb_t *xp;
+
+ MPFR_SET_ERANGE ();
+
+ /* To this day, [mp_exp_t] and mp_size_t are #defined as the same
+ type */
+ EXP (x) = MP_SIZE_T_MAX;
+
+ sx = PREC (x);
+ SIZ (x) = sx;
+ xp = PTR (x);
+ for (i = 0; i < sx; i++)
+ xp[i] = MP_LIMB_T_MAX;
+
+ if (MPFR_IS_POS (y))
+ return -1;
+ else
+ {
+ mpf_neg (x, x);
+ return +1;
+ }
+ }
+ }
+
+ sx = PREC(x); /* number of limbs of the mantissa of x */
+
+ precy = MPFR_PREC(y);
+ precx = (mpfr_prec_t) sx * GMP_NUMB_BITS;
+ sy = MPFR_LIMB_SIZE (y);
+
+ xp = PTR (x);
+
+ /* since mpf numbers are represented in base 2^GMP_NUMB_BITS,
+ we loose -EXP(y) % GMP_NUMB_BITS bits in the most significant limb */
+ sh = MPFR_GET_EXP(y) % GMP_NUMB_BITS;
+ sh = sh <= 0 ? - sh : GMP_NUMB_BITS - sh;
+ MPFR_ASSERTD (sh >= 0);
+ if (precy + sh <= precx) /* we can copy directly */
+ {
+ mp_size_t ds;
+
+ MPFR_ASSERTN (sx >= sy);
+ ds = sx - sy;
+
+ if (sh != 0)
+ {
+ mp_limb_t out;
+ out = mpn_rshift (xp + ds, MPFR_MANT(y), sy, sh);
+ MPFR_ASSERTN (ds > 0 || out == 0);
+ if (ds > 0)
+ xp[--ds] = out;
+ }
+ else
+ MPN_COPY (xp + ds, MPFR_MANT (y), sy);
+ if (ds > 0)
+ MPN_ZERO (xp, ds);
+ EXP(x) = (MPFR_GET_EXP(y) + sh) / GMP_NUMB_BITS;
+ inex = 0;
+ }
+ else /* we have to round to precx - sh bits */
+ {
+ mpfr_t z;
+ mp_size_t sz;
+
+ /* Recall that precx = (mpfr_prec_t) sx * GMP_NUMB_BITS, thus removing
+ sh bits (sh < GMP_NUMB_BITSS) won't reduce the number of limbs. */
+ mpfr_init2 (z, precx - sh);
+ sz = MPFR_LIMB_SIZE (z);
+ MPFR_ASSERTN (sx == sz);
+
+ inex = mpfr_set (z, y, rnd_mode);
+ /* warning, sh may change due to rounding, but then z is a power of two,
+ thus we can safely ignore its last bit which is 0 */
+ sh = MPFR_GET_EXP(z) % GMP_NUMB_BITS;
+ sh = sh <= 0 ? - sh : GMP_NUMB_BITS - sh;
+ MPFR_ASSERTD (sh >= 0);
+ if (sh != 0)
+ {
+ mp_limb_t out;
+ out = mpn_rshift (xp, MPFR_MANT(z), sz, sh);
+ /* If sh hasn't changed, it is the number of the non-significant
+ bits in the lowest limb of z. Therefore out == 0. */
+ MPFR_ASSERTD (out == 0); (void) out; /* avoid a warning */
+ }
+ else
+ MPN_COPY (xp, MPFR_MANT(z), sz);
+ EXP(x) = (MPFR_GET_EXP(z) + sh) / GMP_NUMB_BITS;
+ mpfr_clear (z);
+ }
+
+ /* set size and sign */
+ SIZ(x) = (MPFR_FROM_SIGN_TO_INT(MPFR_SIGN(y)) < 0) ? -sx : sx;
+
+ return inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_flt.c b/Build/source/libs/mpfr/mpfr-src/src/get_flt.c
new file mode 100644
index 00000000000..0fb66c32d0c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_flt.c
@@ -0,0 +1,123 @@
+/* mpfr_get_flt -- convert a mpfr_t to a machine single precision float
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <float.h> /* for FLT_MIN */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#include "ieee_floats.h"
+
+#define FLT_NEG_ZERO ((float) DBL_NEG_ZERO)
+#define MPFR_FLT_INFM ((float) MPFR_DBL_INFM)
+#define MPFR_FLT_INFP ((float) MPFR_DBL_INFP)
+
+float
+mpfr_get_flt (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
+{
+ int negative;
+ mpfr_exp_t e;
+ float d;
+
+ /* in case of NaN, +Inf, -Inf, +0, -0, the conversion from double to float
+ is exact */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (src)))
+ return (float) mpfr_get_d (src, rnd_mode);
+
+ e = MPFR_GET_EXP (src);
+ negative = MPFR_IS_NEG (src);
+
+ if (MPFR_UNLIKELY(rnd_mode == MPFR_RNDA))
+ rnd_mode = negative ? MPFR_RNDD : MPFR_RNDU;
+
+ /* the smallest positive normal float number is 2^(-126) = 0.5*2^(-125),
+ and the smallest positive subnormal number is 2^(-149) = 0.5*2^(-148) */
+ if (MPFR_UNLIKELY (e < -148))
+ {
+ /* |src| < 2^(-149), i.e., |src| is smaller than the smallest positive
+ subnormal number.
+ In round-to-nearest mode, 2^(-150) is rounded to zero.
+ */
+ d = negative ?
+ (rnd_mode == MPFR_RNDD ||
+ (rnd_mode == MPFR_RNDN && mpfr_cmp_si_2exp (src, -1, -150) < 0)
+ ? -FLT_MIN : FLT_NEG_ZERO) :
+ (rnd_mode == MPFR_RNDU ||
+ (rnd_mode == MPFR_RNDN && mpfr_cmp_si_2exp (src, 1, -150) > 0)
+ ? FLT_MIN : 0.0);
+ if (d != 0.0) /* we multiply FLT_MIN = 2^(-126) by FLT_EPSILON = 2^(-23)
+ to get +-2^(-149) */
+ d *= FLT_EPSILON;
+ }
+ /* the largest normal number is 2^128*(1-2^(-24)) = 0.111...111e128 */
+ else if (MPFR_UNLIKELY (e > 128))
+ {
+ d = negative ?
+ (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDU ?
+ -FLT_MAX : MPFR_FLT_INFM) :
+ (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDD ?
+ FLT_MAX : MPFR_FLT_INFP);
+ }
+ else /* -148 <= e <= 127 */
+ {
+ int nbits;
+ mp_size_t np, i;
+ mp_limb_t tp[MPFR_LIMBS_PER_FLT];
+ int carry;
+ double dd;
+
+ nbits = IEEE_FLT_MANT_DIG; /* 24 */
+ if (MPFR_UNLIKELY (e < -125))
+ /*In the subnormal case, compute the exact number of significant bits*/
+ {
+ nbits += (125 + e);
+ MPFR_ASSERTD (nbits >= 1);
+ }
+ np = MPFR_PREC2LIMBS (nbits);
+ MPFR_ASSERTD(np <= MPFR_LIMBS_PER_FLT);
+ carry = mpfr_round_raw_4 (tp, MPFR_MANT(src), MPFR_PREC(src), negative,
+ nbits, rnd_mode);
+ /* we perform the reconstruction using the 'double' type here,
+ knowing the result is exactly representable as 'float' */
+ if (MPFR_UNLIKELY(carry))
+ dd = 1.0;
+ else
+ {
+ /* The following computations are exact thanks to the previous
+ mpfr_round_raw. */
+ dd = (double) tp[0] / MP_BASE_AS_DOUBLE;
+ for (i = 1 ; i < np ; i++)
+ dd = (dd + tp[i]) / MP_BASE_AS_DOUBLE;
+ /* dd is the mantissa (between 1/2 and 1) of the argument rounded
+ to 24 bits */
+ }
+ dd = mpfr_scale2 (dd, e);
+ if (negative)
+ dd = -dd;
+
+ /* convert (exacly) to float */
+ d = (float) dd;
+ }
+
+ return d;
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_ld.c b/Build/source/libs/mpfr/mpfr-src/src/get_ld.c
new file mode 100644
index 00000000000..b24f9b94ba6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_ld.c
@@ -0,0 +1,222 @@
+/* mpfr_get_ld, mpfr_get_ld_2exp -- convert a multiple precision floating-point
+ number to a machine long double
+
+Copyright 2002-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <float.h>
+
+#include "mpfr-impl.h"
+
+#ifndef HAVE_LDOUBLE_IEEE_EXT_LITTLE
+
+long double
+mpfr_get_ld (mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return (long double) mpfr_get_d (x, rnd_mode);
+ else /* now x is a normal non-zero number */
+ {
+ long double r; /* result */
+ long double m;
+ double s; /* part of result */
+ mpfr_exp_t sh; /* exponent shift, so that x/2^sh is in the double range */
+ mpfr_t y, z;
+ int sign;
+
+ /* first round x to the target long double precision, so that
+ all subsequent operations are exact (this avoids double rounding
+ problems) */
+ mpfr_init2 (y, MPFR_LDBL_MANT_DIG);
+ mpfr_init2 (z, MPFR_LDBL_MANT_DIG);
+ /* Note about the precision of z: even though IEEE_DBL_MANT_DIG is
+ sufficient, z has been set to the same precision as y so that
+ the mpfr_sub below calls mpfr_sub1sp, which is faster than the
+ generic subtraction, even in this particular case (from tests
+ done by Patrick Pelissier on a 64-bit Core2 Duo against r7285).
+ But here there is an important cancellation in the subtraction.
+ TODO: get more information about what has been tested. */
+
+ mpfr_set (y, x, rnd_mode);
+ sh = MPFR_GET_EXP (y);
+ sign = MPFR_SIGN (y);
+ MPFR_SET_EXP (y, 0);
+ MPFR_SET_POS (y);
+
+ r = 0.0;
+ do {
+ s = mpfr_get_d (y, MPFR_RNDN); /* high part of y */
+ r += (long double) s;
+ mpfr_set_d (z, s, MPFR_RNDN); /* exact */
+ mpfr_sub (y, y, z, MPFR_RNDN); /* exact */
+ } while (!MPFR_IS_ZERO (y));
+
+ mpfr_clear (z);
+ mpfr_clear (y);
+
+ /* we now have to multiply back by 2^sh */
+ MPFR_ASSERTD (r > 0);
+ if (sh != 0)
+ {
+ /* An overflow may occurs (example: 0.5*2^1024) */
+ while (r < 1.0)
+ {
+ r += r;
+ sh--;
+ }
+
+ if (sh > 0)
+ m = 2.0;
+ else
+ {
+ m = 0.5;
+ sh = -sh;
+ }
+
+ for (;;)
+ {
+ if (sh % 2)
+ r = r * m;
+ sh >>= 1;
+ if (sh == 0)
+ break;
+ m = m * m;
+ }
+ }
+ if (sign < 0)
+ r = -r;
+ return r;
+ }
+}
+
+#else
+
+long double
+mpfr_get_ld (mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_long_double_t ld;
+ mpfr_t tmp;
+ int inex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (tmp, MPFR_LDBL_MANT_DIG);
+ inex = mpfr_set (tmp, x, rnd_mode);
+
+ mpfr_set_emin (-16382-63);
+ mpfr_set_emax (16384);
+ mpfr_subnormalize (tmp, mpfr_check_range (tmp, inex, rnd_mode), rnd_mode);
+ mpfr_prec_round (tmp, 64, MPFR_RNDZ); /* exact */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (tmp)))
+ ld.ld = (long double) mpfr_get_d (tmp, rnd_mode);
+ else
+ {
+ mp_limb_t *tmpmant;
+ mpfr_exp_t e, denorm;
+
+ tmpmant = MPFR_MANT (tmp);
+ e = MPFR_GET_EXP (tmp);
+ /* the smallest normal number is 2^(-16382), which is 0.5*2^(-16381)
+ in MPFR, thus any exponent <= -16382 corresponds to a subnormal
+ number */
+ denorm = MPFR_UNLIKELY (e <= -16382) ? - e - 16382 + 1 : 0;
+#if GMP_NUMB_BITS >= 64
+ ld.s.manl = (tmpmant[0] >> denorm);
+ ld.s.manh = (tmpmant[0] >> denorm) >> 32;
+#elif GMP_NUMB_BITS == 32
+ if (MPFR_LIKELY (denorm == 0))
+ {
+ ld.s.manl = tmpmant[0];
+ ld.s.manh = tmpmant[1];
+ }
+ else if (denorm < 32)
+ {
+ ld.s.manl = (tmpmant[0] >> denorm) | (tmpmant[1] << (32 - denorm));
+ ld.s.manh = tmpmant[1] >> denorm;
+ }
+ else /* 32 <= denorm <= 64 */
+ {
+ ld.s.manl = tmpmant[1] >> (denorm - 32);
+ ld.s.manh = 0;
+ }
+#else
+# error "GMP_NUMB_BITS must be 32 or >= 64"
+ /* Other values have never been supported anyway. */
+#endif
+ if (MPFR_LIKELY (denorm == 0))
+ {
+ ld.s.exph = (e + 0x3FFE) >> 8;
+ ld.s.expl = (e + 0x3FFE);
+ }
+ else
+ ld.s.exph = ld.s.expl = 0;
+ ld.s.sign = MPFR_IS_NEG (x);
+ }
+
+ mpfr_clear (tmp);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return ld.ld;
+}
+
+#endif
+
+/* contributed by Damien Stehle */
+long double
+mpfr_get_ld_2exp (long *expptr, mpfr_srcptr src, mpfr_rnd_t rnd_mode)
+{
+ long double ret;
+ mpfr_exp_t exp;
+ mpfr_t tmp;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (src)))
+ return (long double) mpfr_get_d_2exp (expptr, src, rnd_mode);
+
+ tmp[0] = *src; /* Hack copy mpfr_t */
+ MPFR_SET_EXP (tmp, 0);
+ ret = mpfr_get_ld (tmp, rnd_mode);
+
+ if (MPFR_IS_PURE_FP(src))
+ {
+ exp = MPFR_GET_EXP (src);
+
+ /* rounding can give 1.0, adjust back to 0.5 <= abs(ret) < 1.0 */
+ if (ret == 1.0)
+ {
+ ret = 0.5;
+ exp ++;
+ }
+ else if (ret == -1.0)
+ {
+ ret = -0.5;
+ exp ++;
+ }
+
+ MPFR_ASSERTN ((ret >= 0.5 && ret < 1.0)
+ || (ret <= -0.5 && ret > -1.0));
+ MPFR_ASSERTN (exp >= LONG_MIN && exp <= LONG_MAX);
+ }
+ else
+ exp = 0;
+
+ *expptr = exp;
+ return ret;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_patches.c b/Build/source/libs/mpfr/mpfr-src/src/get_patches.c
new file mode 100644
index 00000000000..d5d93b4ebb6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_patches.c
@@ -0,0 +1,29 @@
+/* mpfr_get_patches -- Patches that have been applied
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+const char *
+mpfr_get_patches (void)
+{
+ return "";
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_si.c b/Build/source/libs/mpfr/mpfr-src/src/get_si.c
new file mode 100644
index 00000000000..ea3fb164f70
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_si.c
@@ -0,0 +1,69 @@
+/* mpfr_get_si -- convert a floating-point number to a signed long.
+
+Copyright 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+long
+mpfr_get_si (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t prec;
+ long s;
+ mpfr_t x;
+
+ if (MPFR_UNLIKELY (!mpfr_fits_slong_p (f, rnd)))
+ {
+ MPFR_SET_ERANGE ();
+ return MPFR_IS_NAN (f) ? 0 :
+ MPFR_IS_NEG (f) ? LONG_MIN : LONG_MAX;
+ }
+
+ if (MPFR_IS_ZERO (f))
+ return (long) 0;
+
+ /* determine prec of long */
+ for (s = LONG_MIN, prec = 0; s != 0; s /= 2, prec++)
+ { }
+
+ /* first round to prec bits */
+ mpfr_init2 (x, prec);
+ mpfr_rint (x, f, rnd);
+
+ /* warning: if x=0, taking its exponent is illegal */
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO(x)))
+ s = 0;
+ else
+ {
+ mp_limb_t a;
+ mp_size_t n;
+ mpfr_exp_t exp;
+
+ /* now the result is in the most significant limb of x */
+ exp = MPFR_GET_EXP (x); /* since |x| >= 1, exp >= 1 */
+ n = MPFR_LIMB_SIZE(x);
+ a = MPFR_MANT(x)[n - 1] >> (GMP_NUMB_BITS - exp);
+ s = MPFR_SIGN(f) > 0 ? a : a <= LONG_MAX ? - (long) a : LONG_MIN;
+ }
+
+ mpfr_clear (x);
+
+ return s;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_sj.c b/Build/source/libs/mpfr/mpfr-src/src/get_sj.c
new file mode 100644
index 00000000000..49de8a00650
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_sj.c
@@ -0,0 +1,123 @@
+/* mpfr_get_sj -- convert a MPFR number to a huge machine signed integer
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h" /* for a build within gmp */
+#endif
+
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+#ifdef _MPFR_H_HAVE_INTMAX_T
+
+intmax_t
+mpfr_get_sj (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ intmax_t r;
+ mpfr_prec_t prec;
+ mpfr_t x;
+
+ if (MPFR_UNLIKELY (!mpfr_fits_intmax_p (f, rnd)))
+ {
+ MPFR_SET_ERANGE ();
+ return MPFR_IS_NAN (f) ? 0 :
+ MPFR_IS_NEG (f) ? MPFR_INTMAX_MIN : MPFR_INTMAX_MAX;
+ }
+
+ if (MPFR_IS_ZERO (f))
+ return (intmax_t) 0;
+
+ /* determine the precision of intmax_t */
+ for (r = MPFR_INTMAX_MIN, prec = 0; r != 0; r /= 2, prec++)
+ { }
+ /* Note: though INTMAX_MAX would have been sufficient for the conversion,
+ we chose INTMAX_MIN so that INTMAX_MIN - 1 is always representable in
+ precision prec; this is useful to detect overflows in MPFR_RNDZ (will
+ be needed later). */
+
+ /* Now, r = 0. */
+
+ mpfr_init2 (x, prec);
+ mpfr_rint (x, f, rnd);
+ MPFR_ASSERTN (MPFR_IS_FP (x));
+
+ if (MPFR_NOTZERO (x))
+ {
+ mp_limb_t *xp;
+ int sh, n; /* An int should be sufficient in this context. */
+
+ xp = MPFR_MANT (x);
+ sh = MPFR_GET_EXP (x);
+ MPFR_ASSERTN ((mpfr_prec_t) sh <= prec);
+ if (MPFR_INTMAX_MIN + MPFR_INTMAX_MAX != 0
+ && MPFR_UNLIKELY ((mpfr_prec_t) sh == prec))
+ {
+ /* 2's complement and x <= INTMAX_MIN: in the case mp_limb_t
+ has the same size as intmax_t, we cannot use the code in
+ the for loop since the operations would be performed in
+ unsigned arithmetic. */
+ MPFR_ASSERTN (MPFR_IS_NEG (x) && (mpfr_powerof2_raw (x)));
+ r = MPFR_INTMAX_MIN;
+ }
+ else if (MPFR_IS_POS (x))
+ {
+ /* Note: testing the condition sh >= 0 is necessary to avoid
+ an undefined behavior on xp[n] >> S when S >= GMP_NUMB_BITS
+ (even though xp[n] == 0 in such a case). This can happen if
+ sizeof(mp_limb_t) < sizeof(intmax_t) and |x| is small enough
+ because of the trailing bits due to its normalization. */
+ for (n = MPFR_LIMB_SIZE (x) - 1; n >= 0 && sh >= 0; n--)
+ {
+ sh -= GMP_NUMB_BITS;
+ /* Note the concerning the casts below:
+ When sh >= 0, the cast must be performed before the shift
+ for the case sizeof(intmax_t) > sizeof(mp_limb_t).
+ When sh < 0, the cast must be performed after the shift
+ for the case sizeof(intmax_t) == sizeof(mp_limb_t), as
+ mp_limb_t is unsigned, therefore not representable as an
+ intmax_t when the MSB is 1 (this is the case here). */
+ MPFR_ASSERTD (sh < GMP_NUMB_BITS && -sh < GMP_NUMB_BITS);
+ r += (sh >= 0
+ ? (intmax_t) xp[n] << sh
+ : (intmax_t) (xp[n] >> (-sh)));
+ }
+ }
+ else
+ {
+ /* See the comments for the case x positive. */
+ for (n = MPFR_LIMB_SIZE (x) - 1; n >= 0 && sh >= 0; n--)
+ {
+ sh -= GMP_NUMB_BITS;
+ MPFR_ASSERTD (sh < GMP_NUMB_BITS && -sh < GMP_NUMB_BITS);
+ r -= (sh >= 0
+ ? (intmax_t) xp[n] << sh
+ : (intmax_t) (xp[n] >> (-sh)));
+ }
+ }
+ }
+
+ mpfr_clear (x);
+
+ return r;
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_str.c b/Build/source/libs/mpfr/mpfr-src/src/get_str.c
new file mode 100644
index 00000000000..137aaa4f79d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_str.c
@@ -0,0 +1,2555 @@
+/* mpfr_get_str -- output a floating-point number to a string
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+static int mpfr_get_str_aux (char *const, mpfr_exp_t *const, mp_limb_t *const,
+ mp_size_t, mpfr_exp_t, long, int, size_t, mpfr_rnd_t);
+
+/* The implicit \0 is useless, but we do not write num_to_text[62] otherwise
+ g++ complains. */
+static const char num_to_text36[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+static const char num_to_text62[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz";
+
+/* copy most important limbs of {op, n2} in {rp, n1} */
+/* if n1 > n2 put 0 in low limbs of {rp, n1} */
+#define MPN_COPY2(rp, n1, op, n2) \
+ if ((n1) <= (n2)) \
+ { \
+ MPN_COPY ((rp), (op) + (n2) - (n1), (n1)); \
+ } \
+ else \
+ { \
+ MPN_COPY ((rp) + (n1) - (n2), (op), (n2)); \
+ MPN_ZERO ((rp), (n1) - (n2)); \
+ }
+
+#define MPFR_ROUND_FAILED 3
+
+/* Input: an approximation r*2^f of a real Y, with |r*2^f-Y| <= 2^(e+f).
+ Returns if possible in the string s the mantissa corresponding to
+ the integer nearest to Y, within the direction rnd, and returns the
+ exponent in exp.
+ n is the number of limbs of r.
+ e represents the maximal error in the approximation of Y
+ (e < 0 iff the approximation is exact, i.e., r*2^f = Y).
+ b is the wanted base (2 <= b <= 62).
+ m is the number of wanted digits in the mantissa.
+ rnd is the rounding mode.
+ It is assumed that b^(m-1) <= Y < b^(m+1), thus the returned value
+ satisfies b^(m-1) <= rnd(Y) < b^(m+1).
+
+ Rounding may fail for two reasons:
+ - the error is too large to determine the integer N nearest to Y
+ - either the number of digits of N in base b is too large (m+1),
+ N=2*N1+(b/2) and the rounding mode is to nearest. This can
+ only happen when b is even.
+
+ Return value:
+ - the direction of rounding (-1, 0, 1) if rounding is possible
+ - -MPFR_ROUND_FAILED if rounding not possible because m+1 digits
+ - MPFR_ROUND_FAILED otherwise (too large error)
+*/
+static int
+mpfr_get_str_aux (char *const str, mpfr_exp_t *const exp, mp_limb_t *const r,
+ mp_size_t n, mpfr_exp_t f, long e, int b, size_t m,
+ mpfr_rnd_t rnd)
+{
+ const char *num_to_text;
+ int dir; /* direction of the rounded result */
+ mp_limb_t ret = 0; /* possible carry in addition */
+ mp_size_t i0, j0; /* number of limbs and bits of Y */
+ unsigned char *str1; /* string of m+2 characters */
+ size_t size_s1; /* length of str1 */
+ mpfr_rnd_t rnd1;
+ size_t i;
+ int exact = (e < 0);
+ MPFR_TMP_DECL(marker);
+
+ /* if f > 0, then the maximal error 2^(e+f) is larger than 2 so we can't
+ determine the integer Y */
+ MPFR_ASSERTN(f <= 0);
+ /* if f is too small, then r*2^f is smaller than 1 */
+ MPFR_ASSERTN(f > (-n * GMP_NUMB_BITS));
+
+ MPFR_TMP_MARK(marker);
+
+ num_to_text = b < 37 ? num_to_text36 : num_to_text62;
+
+ /* R = 2^f sum r[i]K^(i)
+ r[i] = (r_(i,k-1)...r_(i,0))_2
+ R = sum r(i,j)2^(j+ki+f)
+ the bits from R are referenced by pairs (i,j) */
+
+ /* check if is possible to round r with rnd mode
+ where |r*2^f-Y| <= 2^(e+f)
+ the exponent of R is: f + n*GMP_NUMB_BITS
+ we must have e + f == f + n*GMP_NUMB_BITS - err
+ err = n*GMP_NUMB_BITS - e
+ R contains exactly -f bits after the integer point:
+ to determine the nearest integer, we thus need a precision of
+ n * GMP_NUMB_BITS + f */
+
+ if (exact || mpfr_can_round_raw (r, n, (mp_size_t) 1,
+ n * GMP_NUMB_BITS - e, MPFR_RNDN, rnd, n * GMP_NUMB_BITS + f))
+ {
+ /* compute the nearest integer to R */
+
+ /* bit of weight 0 in R has position j0 in limb r[i0] */
+ i0 = (-f) / GMP_NUMB_BITS;
+ j0 = (-f) % GMP_NUMB_BITS;
+
+ ret = mpfr_round_raw (r + i0, r, n * GMP_NUMB_BITS, 0,
+ n * GMP_NUMB_BITS + f, rnd, &dir);
+ MPFR_ASSERTD(dir != MPFR_ROUND_FAILED);
+
+ /* warning: mpfr_round_raw_generic returns MPFR_EVEN_INEX (2) or
+ -MPFR_EVEN_INEX (-2) in case of even rounding */
+
+ if (ret) /* Y is a power of 2 */
+ {
+ if (j0)
+ r[n - 1] = MPFR_LIMB_HIGHBIT >> (j0 - 1);
+ else /* j0=0, necessarily i0 >= 1 otherwise f=0 and r is exact */
+ {
+ r[n - 1] = ret;
+ r[--i0] = 0; /* set to zero the new low limb */
+ }
+ }
+ else /* shift r to the right by (-f) bits (i0 already done) */
+ {
+ if (j0)
+ mpn_rshift (r + i0, r + i0, n - i0, j0);
+ }
+
+ /* now the rounded value Y is in {r+i0, n-i0} */
+
+ /* convert r+i0 into base b */
+ str1 = (unsigned char*) MPFR_TMP_ALLOC (m + 3); /* need one extra character for mpn_get_str */
+ size_s1 = mpn_get_str (str1, b, r + i0, n - i0);
+
+ /* round str1 */
+ MPFR_ASSERTN(size_s1 >= m);
+ *exp = size_s1 - m; /* number of superfluous characters */
+
+ /* if size_s1 = m + 2, necessarily we have b^(m+1) as result,
+ and the result will not change */
+
+ /* so we have to double-round only when size_s1 = m + 1 and
+ (i) the result is inexact
+ (ii) or the last digit is non-zero */
+ if ((size_s1 == m + 1) && ((dir != 0) || (str1[size_s1 - 1] != 0)))
+ {
+ /* rounding mode */
+ rnd1 = rnd;
+
+ /* round to nearest case */
+ if (rnd == MPFR_RNDN)
+ {
+ if (2 * str1[size_s1 - 1] == b)
+ {
+ if (dir == 0 && exact) /* exact: even rounding */
+ {
+ rnd1 = ((str1[size_s1 - 2] & 1) == 0)
+ ? MPFR_RNDD : MPFR_RNDU;
+ }
+ else
+ {
+ /* otherwise we cannot round correctly: for example
+ if b=10, we might have a mantissa of
+ xxxxxxx5.00000000 which can be rounded to nearest
+ to 8 digits but not to 7 */
+ dir = -MPFR_ROUND_FAILED;
+ MPFR_ASSERTD(dir != MPFR_EVEN_INEX);
+ goto free_and_return;
+ }
+ }
+ else if (2 * str1[size_s1 - 1] < b)
+ rnd1 = MPFR_RNDD;
+ else
+ rnd1 = MPFR_RNDU;
+ }
+
+ /* now rnd1 is either
+ MPFR_RNDD or MPFR_RNDZ -> truncate, or
+ MPFR_RNDU or MPFR_RNDA -> round toward infinity */
+
+ /* round away from zero */
+ if (rnd1 == MPFR_RNDU || rnd1 == MPFR_RNDA)
+ {
+ if (str1[size_s1 - 1] != 0)
+ {
+ /* the carry cannot propagate to the whole string, since
+ Y = x*b^(m-g) < 2*b^m <= b^(m+1)-b
+ where x is the input float */
+ MPFR_ASSERTN(size_s1 >= 2);
+ i = size_s1 - 2;
+ while (str1[i] == b - 1)
+ {
+ MPFR_ASSERTD(i > 0);
+ str1[i--] = 0;
+ }
+ str1[i]++;
+ }
+ dir = 1;
+ }
+ /* round toward zero (truncate) */
+ else
+ dir = -1;
+ }
+
+ /* copy str1 into str and convert to characters (digits and
+ lowercase letters from the source character set) */
+ for (i = 0; i < m; i++)
+ str[i] = num_to_text[(int) str1[i]]; /* str1[i] is an unsigned char */
+ str[m] = 0;
+ }
+ /* mpfr_can_round_raw failed: rounding is not possible */
+ else
+ {
+ dir = MPFR_ROUND_FAILED; /* should be different from MPFR_EVEN_INEX */
+ MPFR_ASSERTD(dir != MPFR_EVEN_INEX);
+ }
+
+ free_and_return:
+ MPFR_TMP_FREE(marker);
+
+ return dir;
+}
+
+/***************************************************************************
+ * __gmpfr_l2b[b-2][0] is a 23-bit upper approximation to log(b)/log(2), *
+ * __gmpfr_l2b[b-2][1] is a 76-bit upper approximation to log(2)/log(b). *
+ * The following code is generated by tests/tl2b (with an argument). *
+ ***************************************************************************/
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x0000, 0x8000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x80000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x8000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x800000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x80000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x00000000, 0x00000000, 0x80000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x0000000000000000, 0x8000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x800000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x80000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_3_0__tab[] = { 0x0e00, 0xcae0 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_3_1__tab[] = { 0x0448, 0xe94e, 0xa9a9, 0x9cc1, 0xa184 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_3_1__tab[] = { 0x04480000, 0xa9a9e94e, 0xa1849cc1 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_3_1__tab[] = { 0x0448000000000000, 0xa1849cc1a9a9e94e };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_3_1__tab[] = { 0xa1849cc1a9a9e94e04480000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_3_1__tab[] = { 0xa1849cc1a9a9e94e0448000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_3_1__tab[] = { 0xa1849cc1a9a9e94e044800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x0000, 0x8000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x80000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x8000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x800000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x80000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x00000000, 0x00000000, 0x80000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x0000000000000000, 0x8000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x800000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x80000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x7a00, 0x949a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_5_1__tab[] = { 0x67b8, 0x9728, 0x287b, 0xa348, 0xdc81 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_5_1__tab[] = { 0x67b80000, 0x287b9728, 0xdc81a348 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_5_1__tab[] = { 0x67b8000000000000, 0xdc81a348287b9728 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xdc81a348287b972867b80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xdc81a348287b972867b8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xdc81a348287b972867b800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_6_0__tab[] = { 0x0800, 0xa570 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa5700800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa570080000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa57008000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa5700800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa570080000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xff10, 0xf9e9, 0xe054, 0x9236, 0xc611 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xff100000, 0xe054f9e9, 0xc6119236 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xff10000000000000, 0xc6119236e054f9e9 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xc6119236e054f9e9ff100000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xc6119236e054f9e9ff10000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xc6119236e054f9e9ff1000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb400, 0xb3ab };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb40000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb4000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb40000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_7_1__tab[] = { 0x37b8, 0xa711, 0x754d, 0xc9d6, 0xb660 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_7_1__tab[] = { 0x37b80000, 0x754da711, 0xb660c9d6 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_7_1__tab[] = { 0x37b8000000000000, 0xb660c9d6754da711 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb660c9d6754da71137b80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb660c9d6754da71137b8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb660c9d6754da71137b800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_8_0__tab[] = { 0x0000, 0xc000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc0000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc00000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc0000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaab0, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaab00000, 0xaaaaaaaa, 0xaaaaaaaa };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaab0000000000000, 0xaaaaaaaaaaaaaaaa };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaaaaaaaaaaaaaaaaaab00000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaaaaaaaaaaaaaaaaaab0000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaaaaaaaaaaaaaaaaaab000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_9_0__tab[] = { 0x0e00, 0xcae0 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_9_1__tab[] = { 0x0448, 0xe94e, 0xa9a9, 0x9cc1, 0xa184 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_9_1__tab[] = { 0x04480000, 0xa9a9e94e, 0xa1849cc1 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_9_1__tab[] = { 0x0448000000000000, 0xa1849cc1a9a9e94e };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_9_1__tab[] = { 0xa1849cc1a9a9e94e04480000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_9_1__tab[] = { 0xa1849cc1a9a9e94e0448000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_9_1__tab[] = { 0xa1849cc1a9a9e94e044800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_10_0__tab[] = { 0x7a00, 0xd49a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x8f90, 0xf798, 0xfbcf, 0x9a84, 0x9a20 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x8f900000, 0xfbcff798, 0x9a209a84 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x8f90000000000000, 0x9a209a84fbcff798 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x9a209a84fbcff7988f900000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x9a209a84fbcff7988f90000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x9a209a84fbcff7988f9000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_11_0__tab[] = { 0x5400, 0xdd67 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd675400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd67540000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd6754000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd675400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd67540000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_11_1__tab[] = { 0xe170, 0x9d10, 0xeb22, 0x4e0e, 0x9400 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_11_1__tab[] = { 0xe1700000, 0xeb229d10, 0x94004e0e };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_11_1__tab[] = { 0xe170000000000000, 0x94004e0eeb229d10 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x94004e0eeb229d10e1700000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x94004e0eeb229d10e170000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x94004e0eeb229d10e17000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_12_0__tab[] = { 0x0800, 0xe570 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe5700800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe570080000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe57008000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe5700800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe570080000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_12_1__tab[] = { 0xfe28, 0x1c24, 0x0b03, 0x9c1a, 0x8ed1 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_12_1__tab[] = { 0xfe280000, 0x0b031c24, 0x8ed19c1a };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_12_1__tab[] = { 0xfe28000000000000, 0x8ed19c1a0b031c24 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x8ed19c1a0b031c24fe280000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x8ed19c1a0b031c24fe28000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x8ed19c1a0b031c24fe2800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_13_0__tab[] = { 0x0200, 0xecd4 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd40200 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd4020000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd402000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd40200000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd4020000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x57f8, 0xf7b4, 0xcb20, 0xa7c6, 0x8a5c };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x57f80000, 0xcb20f7b4, 0x8a5ca7c6 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x57f8000000000000, 0x8a5ca7c6cb20f7b4 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x8a5ca7c6cb20f7b457f80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x8a5ca7c6cb20f7b457f8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x8a5ca7c6cb20f7b457f800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xb400, 0xf3ab };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb40000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb4000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb40000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x85a8, 0x5cab, 0x96b5, 0xfff6, 0x8679 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x85a80000, 0x96b55cab, 0x8679fff6 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x85a8000000000000, 0x8679fff696b55cab };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x8679fff696b55cab85a80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x8679fff696b55cab85a8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x8679fff696b55cab85a800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_15_0__tab[] = { 0x8000, 0xfa0a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a8000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a800000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a80000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a8000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a800000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x6f80, 0xa6aa, 0x69f0, 0xee23, 0x830c };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x6f800000, 0x69f0a6aa, 0x830cee23 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x6f80000000000000, 0x830cee2369f0a6aa };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x830cee2369f0a6aa6f800000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x830cee2369f0a6aa6f80000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x830cee2369f0a6aa6f8000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x0000, 0x8000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x80000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x8000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x800000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x80000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x00000000, 0x00000000, 0x80000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x0000000000000000, 0x8000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x800000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x80000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x8000, 0x82cc };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc8000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc800000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc80000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc8000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc800000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_17_1__tab[] = { 0x8720, 0x259b, 0x62c4, 0xabf5, 0xfa85 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_17_1__tab[] = { 0x87200000, 0x62c4259b, 0xfa85abf5 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_17_1__tab[] = { 0x8720000000000000, 0xfa85abf562c4259b };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_17_1__tab[] = { 0xfa85abf562c4259b87200000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_17_1__tab[] = { 0xfa85abf562c4259b8720000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_17_1__tab[] = { 0xfa85abf562c4259b872000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x0800, 0x8570 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x85700800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x8570080000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x857008000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x85700800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x8570080000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_18_1__tab[] = { 0x3698, 0x1378, 0x5537, 0x6634, 0xf591 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_18_1__tab[] = { 0x36980000, 0x55371378, 0xf5916634 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_18_1__tab[] = { 0x3698000000000000, 0xf591663455371378 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_18_1__tab[] = { 0xf59166345537137836980000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_18_1__tab[] = { 0xf5916634553713783698000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_18_1__tab[] = { 0xf591663455371378369800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x0600, 0x87ef };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef0600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef060000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef06000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef0600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef060000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_19_1__tab[] = { 0x0db8, 0x558c, 0x62ed, 0x08c0, 0xf10f };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_19_1__tab[] = { 0x0db80000, 0x62ed558c, 0xf10f08c0 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_19_1__tab[] = { 0x0db8000000000000, 0xf10f08c062ed558c };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xf10f08c062ed558c0db80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xf10f08c062ed558c0db8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xf10f08c062ed558c0db800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x3e00, 0x8a4d };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_20_1__tab[] = { 0x0b40, 0xa71c, 0x1cc1, 0x690a, 0xecee };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_20_1__tab[] = { 0x0b400000, 0x1cc1a71c, 0xecee690a };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_20_1__tab[] = { 0x0b40000000000000, 0xecee690a1cc1a71c };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_20_1__tab[] = { 0xecee690a1cc1a71c0b400000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_20_1__tab[] = { 0xecee690a1cc1a71c0b40000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_20_1__tab[] = { 0xecee690a1cc1a71c0b4000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_21_0__tab[] = { 0xde00, 0x8c8d };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_21_1__tab[] = { 0x4108, 0x6b26, 0xb3d0, 0x63c1, 0xe922 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_21_1__tab[] = { 0x41080000, 0xb3d06b26, 0xe92263c1 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_21_1__tab[] = { 0x4108000000000000, 0xe92263c1b3d06b26 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_21_1__tab[] = { 0xe92263c1b3d06b2641080000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_21_1__tab[] = { 0xe92263c1b3d06b264108000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_21_1__tab[] = { 0xe92263c1b3d06b26410800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_22_0__tab[] = { 0xaa00, 0x8eb3 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xdbe8, 0xf061, 0x60b9, 0x2c4d, 0xe5a0 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xdbe80000, 0x60b9f061, 0xe5a02c4d };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xdbe8000000000000, 0xe5a02c4d60b9f061 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe5a02c4d60b9f061dbe80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe5a02c4d60b9f061dbe8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe5a02c4d60b9f061dbe800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x0600, 0x90c1 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c10600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c1060000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c106000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c10600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c1060000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xc3e0, 0x586a, 0x46b9, 0xcadd, 0xe25e };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xc3e00000, 0x46b9586a, 0xe25ecadd };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xc3e0000000000000, 0xe25ecadd46b9586a };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe25ecadd46b9586ac3e00000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe25ecadd46b9586ac3e0000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe25ecadd46b9586ac3e000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x0400, 0x92b8 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b80400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b8040000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b804000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b80400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b8040000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_24_1__tab[] = { 0x3668, 0x7263, 0xc7c6, 0xbb44, 0xdf56 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_24_1__tab[] = { 0x36680000, 0xc7c67263, 0xdf56bb44 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_24_1__tab[] = { 0x3668000000000000, 0xdf56bb44c7c67263 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_24_1__tab[] = { 0xdf56bb44c7c6726336680000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_24_1__tab[] = { 0xdf56bb44c7c672633668000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_24_1__tab[] = { 0xdf56bb44c7c67263366800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x7a00, 0x949a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_25_1__tab[] = { 0x67b8, 0x9728, 0x287b, 0xa348, 0xdc81 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_25_1__tab[] = { 0x67b80000, 0x287b9728, 0xdc81a348 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_25_1__tab[] = { 0x67b8000000000000, 0xdc81a348287b9728 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xdc81a348287b972867b80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xdc81a348287b972867b8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xdc81a348287b972867b800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x0200, 0x966a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a0200 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a020000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a02000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a0200000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a020000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_26_1__tab[] = { 0x6458, 0x78a4, 0x7583, 0x19f9, 0xd9da };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_26_1__tab[] = { 0x64580000, 0x758378a4, 0xd9da19f9 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_26_1__tab[] = { 0x6458000000000000, 0xd9da19f9758378a4 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_26_1__tab[] = { 0xd9da19f9758378a464580000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_26_1__tab[] = { 0xd9da19f9758378a46458000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_26_1__tab[] = { 0xd9da19f9758378a4645800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x0a00, 0x9828 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_27_1__tab[] = { 0x5b08, 0xe1bd, 0xe237, 0x7bac, 0xd75b };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_27_1__tab[] = { 0x5b080000, 0xe237e1bd, 0xd75b7bac };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_27_1__tab[] = { 0x5b08000000000000, 0xd75b7bace237e1bd };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_27_1__tab[] = { 0xd75b7bace237e1bd5b080000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_27_1__tab[] = { 0xd75b7bace237e1bd5b08000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_27_1__tab[] = { 0xd75b7bace237e1bd5b0800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_28_0__tab[] = { 0xda00, 0x99d5 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xdeb8, 0xe8b8, 0x71df, 0xc758, 0xd501 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xdeb80000, 0x71dfe8b8, 0xd501c758 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xdeb8000000000000, 0xd501c75871dfe8b8 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xd501c75871dfe8b8deb80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xd501c75871dfe8b8deb8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xd501c75871dfe8b8deb800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9600, 0x9b74 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b749600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b74960000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b7496000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b749600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b74960000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xccc8, 0x62b3, 0x9c6c, 0x8315, 0xd2c9 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xccc80000, 0x9c6c62b3, 0xd2c98315 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xccc8000000000000, 0xd2c983159c6c62b3 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xd2c983159c6c62b3ccc80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xd2c983159c6c62b3ccc8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xd2c983159c6c62b3ccc800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x4000, 0x9d05 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d054000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d05400000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d0540000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d054000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d05400000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_30_1__tab[] = { 0x3588, 0x1732, 0x5cad, 0xa619, 0xd0af };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_30_1__tab[] = { 0x35880000, 0x5cad1732, 0xd0afa619 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_30_1__tab[] = { 0x3588000000000000, 0xd0afa6195cad1732 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_30_1__tab[] = { 0xd0afa6195cad173235880000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_30_1__tab[] = { 0xd0afa6195cad17323588000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_30_1__tab[] = { 0xd0afa6195cad1732358800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_31_0__tab[] = { 0xc800, 0x9e88 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c80000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c8000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c80000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xd578, 0xf7ca, 0x63ee, 0x86e6, 0xceb1 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xd5780000, 0x63eef7ca, 0xceb186e6 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xd578000000000000, 0xceb186e663eef7ca };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xceb186e663eef7cad5780000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xceb186e663eef7cad578000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xceb186e663eef7cad57800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_32_0__tab[] = { 0x0000, 0xa000 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa0000000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa000000000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa00000000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa0000000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa000000000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccd0, 0xcccc, 0xcccc, 0xcccc, 0xcccc };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccd00000, 0xcccccccc, 0xcccccccc };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccd0000000000000, 0xcccccccccccccccc };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccccccccccccccccccd00000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccccccccccccccccccd0000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccccccccccccccccccd000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xae00, 0xa16b };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_33_1__tab[] = { 0x0888, 0xa187, 0x5304, 0x6404, 0xcaff };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_33_1__tab[] = { 0x08880000, 0x5304a187, 0xcaff6404 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_33_1__tab[] = { 0x0888000000000000, 0xcaff64045304a187 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_33_1__tab[] = { 0xcaff64045304a18708880000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_33_1__tab[] = { 0xcaff64045304a1870888000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_33_1__tab[] = { 0xcaff64045304a187088800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_34_0__tab[] = { 0x8000, 0xa2cc };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc8000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc800000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc80000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc8000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc800000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xfb50, 0x17ca, 0x5a79, 0x73d8, 0xc947 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xfb500000, 0x5a7917ca, 0xc94773d8 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xfb50000000000000, 0xc94773d85a7917ca };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xc94773d85a7917cafb500000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xc94773d85a7917cafb50000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xc94773d85a7917cafb5000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_35_0__tab[] = { 0x1800, 0xa423 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa4231800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa423180000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa42318000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa4231800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa423180000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_35_1__tab[] = { 0x6960, 0x18c2, 0x6037, 0x567c, 0xc7a3 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_35_1__tab[] = { 0x69600000, 0x603718c2, 0xc7a3567c };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_35_1__tab[] = { 0x6960000000000000, 0xc7a3567c603718c2 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_35_1__tab[] = { 0xc7a3567c603718c269600000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_35_1__tab[] = { 0xc7a3567c603718c26960000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_35_1__tab[] = { 0xc7a3567c603718c2696000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_36_0__tab[] = { 0x0800, 0xa570 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa5700800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa570080000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa57008000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa5700800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa570080000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xff10, 0xf9e9, 0xe054, 0x9236, 0xc611 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xff100000, 0xe054f9e9, 0xc6119236 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xff10000000000000, 0xc6119236e054f9e9 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xc6119236e054f9e9ff100000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xc6119236e054f9e9ff10000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xc6119236e054f9e9ff1000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xd800, 0xa6b3 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d80000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d8000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d80000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_37_1__tab[] = { 0x1618, 0x6b36, 0x70d7, 0xd3a2, 0xc490 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_37_1__tab[] = { 0x16180000, 0x70d76b36, 0xc490d3a2 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_37_1__tab[] = { 0x1618000000000000, 0xc490d3a270d76b36 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_37_1__tab[] = { 0xc490d3a270d76b3616180000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_37_1__tab[] = { 0xc490d3a270d76b361618000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_37_1__tab[] = { 0xc490d3a270d76b36161800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_38_0__tab[] = { 0x0600, 0xa7ef };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef0600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef060000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef06000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef0600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef060000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xa3e0, 0x9505, 0x5182, 0xe8d2, 0xc31f };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xa3e00000, 0x51829505, 0xc31fe8d2 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xa3e0000000000000, 0xc31fe8d251829505 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xc31fe8d251829505a3e00000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xc31fe8d251829505a3e0000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xc31fe8d251829505a3e000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_39_0__tab[] = { 0x0400, 0xa922 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa9220400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa922040000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa92204000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa9220400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa922040000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xfcf8, 0xf1b5, 0x10ca, 0xbd32, 0xc1bd };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xfcf80000, 0x10caf1b5, 0xc1bdbd32 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xfcf8000000000000, 0xc1bdbd3210caf1b5 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xc1bdbd3210caf1b5fcf80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xc1bdbd3210caf1b5fcf8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xc1bdbd3210caf1b5fcf800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_40_0__tab[] = { 0x3e00, 0xaa4d };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xdce8, 0x4948, 0xeff7, 0x55ff, 0xc069 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xdce80000, 0xeff74948, 0xc06955ff };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xdce8000000000000, 0xc06955ffeff74948 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xc06955ffeff74948dce80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xc06955ffeff74948dce8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xc06955ffeff74948dce800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_41_0__tab[] = { 0x1200, 0xab71 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab711200 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab71120000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab7112000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab711200000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab71120000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xdc28, 0x7cef, 0xf695, 0xcf47, 0xbf21 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xdc280000, 0xf6957cef, 0xbf21cf47 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xdc28000000000000, 0xbf21cf47f6957cef };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xbf21cf47f6957cefdc280000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xbf21cf47f6957cefdc28000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xbf21cf47f6957cefdc2800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xde00, 0xac8d };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xba10, 0x7125, 0x939b, 0x594a, 0xbde6 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xba100000, 0x939b7125, 0xbde6594a };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xba10000000000000, 0xbde6594a939b7125 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xbde6594a939b7125ba100000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xbde6594a939b7125ba10000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xbde6594a939b7125ba1000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xf600, 0xada3 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f60000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f6000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f60000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_43_1__tab[] = { 0x9560, 0x2ab5, 0x9118, 0x363d, 0xbcb6 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_43_1__tab[] = { 0x95600000, 0x91182ab5, 0xbcb6363d };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_43_1__tab[] = { 0x9560000000000000, 0xbcb6363d91182ab5 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_43_1__tab[] = { 0xbcb6363d91182ab595600000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_43_1__tab[] = { 0xbcb6363d91182ab59560000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_43_1__tab[] = { 0xbcb6363d91182ab5956000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaa00, 0xaeb3 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_44_1__tab[] = { 0x1590, 0x4e90, 0x3a3d, 0xb859, 0xbb90 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_44_1__tab[] = { 0x15900000, 0x3a3d4e90, 0xbb90b859 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_44_1__tab[] = { 0x1590000000000000, 0xbb90b8593a3d4e90 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_44_1__tab[] = { 0xbb90b8593a3d4e9015900000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_44_1__tab[] = { 0xbb90b8593a3d4e901590000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_44_1__tab[] = { 0xbb90b8593a3d4e90159000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_45_0__tab[] = { 0x4400, 0xafbd };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd4400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd440000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd44000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd4400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd440000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_45_1__tab[] = { 0x1e78, 0x76f5, 0x1010, 0x4026, 0xba75 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_45_1__tab[] = { 0x1e780000, 0x101076f5, 0xba754026 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_45_1__tab[] = { 0x1e78000000000000, 0xba754026101076f5 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_45_1__tab[] = { 0xba754026101076f51e780000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_45_1__tab[] = { 0xba754026101076f51e78000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_45_1__tab[] = { 0xba754026101076f51e7800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_46_0__tab[] = { 0x0600, 0xb0c1 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c10600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c1060000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c106000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c10600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c1060000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb670, 0x0512, 0x69aa, 0x3b01, 0xb963 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb6700000, 0x69aa0512, 0xb9633b01 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb670000000000000, 0xb9633b0169aa0512 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb9633b0169aa0512b6700000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb9633b0169aa0512b670000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb9633b0169aa0512b67000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_47_0__tab[] = { 0x3200, 0xb1bf };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf3200 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf320000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf32000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf3200000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf320000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_47_1__tab[] = { 0x5118, 0x4133, 0xfbe4, 0x21d0, 0xb85a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_47_1__tab[] = { 0x51180000, 0xfbe44133, 0xb85a21d0 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_47_1__tab[] = { 0x5118000000000000, 0xb85a21d0fbe44133 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_47_1__tab[] = { 0xb85a21d0fbe4413351180000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_47_1__tab[] = { 0xb85a21d0fbe441335118000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_47_1__tab[] = { 0xb85a21d0fbe44133511800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_48_0__tab[] = { 0x0400, 0xb2b8 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b80400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b8040000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b804000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b80400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b8040000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_48_1__tab[] = { 0x0490, 0x663d, 0x960d, 0x77de, 0xb759 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_48_1__tab[] = { 0x04900000, 0x960d663d, 0xb75977de };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_48_1__tab[] = { 0x0490000000000000, 0xb75977de960d663d };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_48_1__tab[] = { 0xb75977de960d663d04900000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_48_1__tab[] = { 0xb75977de960d663d0490000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_48_1__tab[] = { 0xb75977de960d663d049000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb400, 0xb3ab };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb40000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb4000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb40000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_49_1__tab[] = { 0x37b8, 0xa711, 0x754d, 0xc9d6, 0xb660 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_49_1__tab[] = { 0x37b80000, 0x754da711, 0xb660c9d6 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_49_1__tab[] = { 0x37b8000000000000, 0xb660c9d6754da711 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb660c9d6754da71137b80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb660c9d6754da71137b8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb660c9d6754da71137b800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_50_0__tab[] = { 0x7a00, 0xb49a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_50_1__tab[] = { 0x27f0, 0xe532, 0x7344, 0xace3, 0xb56f };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_50_1__tab[] = { 0x27f00000, 0x7344e532, 0xb56face3 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_50_1__tab[] = { 0x27f0000000000000, 0xb56face37344e532 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xb56face37344e53227f00000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xb56face37344e53227f0000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xb56face37344e53227f000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_51_0__tab[] = { 0x8400, 0xb584 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb5848400 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb584840000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb58484000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb5848400000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb584840000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_51_1__tab[] = { 0x4000, 0xe9a9, 0x0f8a, 0xbde5, 0xb485 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_51_1__tab[] = { 0x40000000, 0x0f8ae9a9, 0xb485bde5 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_51_1__tab[] = { 0x4000000000000000, 0xb485bde50f8ae9a9 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_51_1__tab[] = { 0xb485bde50f8ae9a940000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_51_1__tab[] = { 0xb485bde50f8ae9a94000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_51_1__tab[] = { 0xb485bde50f8ae9a9400000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_52_0__tab[] = { 0x0200, 0xb66a };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a0200 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a020000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a02000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a0200000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a020000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_52_1__tab[] = { 0x4608, 0xfcb3, 0xeecf, 0xa0bb, 0xb3a2 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_52_1__tab[] = { 0x46080000, 0xeecffcb3, 0xb3a2a0bb };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_52_1__tab[] = { 0x4608000000000000, 0xb3a2a0bbeecffcb3 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_52_1__tab[] = { 0xb3a2a0bbeecffcb346080000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_52_1__tab[] = { 0xb3a2a0bbeecffcb34608000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_52_1__tab[] = { 0xb3a2a0bbeecffcb3460800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_53_0__tab[] = { 0x2000, 0xb74b };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b2000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b200000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b20000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b2000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b200000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xa360, 0x8ccb, 0xeb5f, 0xffa9, 0xb2c5 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xa3600000, 0xeb5f8ccb, 0xb2c5ffa9 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xa360000000000000, 0xb2c5ffa9eb5f8ccb };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xb2c5ffa9eb5f8ccba3600000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xb2c5ffa9eb5f8ccba360000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xb2c5ffa9eb5f8ccba36000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_54_0__tab[] = { 0x0a00, 0xb828 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xf368, 0xe940, 0x3e86, 0x8ac3, 0xb1ef };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xf3680000, 0x3e86e940, 0xb1ef8ac3 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xf368000000000000, 0xb1ef8ac33e86e940 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xb1ef8ac33e86e940f3680000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xb1ef8ac33e86e940f368000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xb1ef8ac33e86e940f36800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xe800, 0xb900 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e80000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e8000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e80000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_55_1__tab[] = { 0x7a40, 0xd18e, 0xa4b5, 0xf76e, 0xb11e };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_55_1__tab[] = { 0x7a400000, 0xa4b5d18e, 0xb11ef76e };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_55_1__tab[] = { 0x7a40000000000000, 0xb11ef76ea4b5d18e };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_55_1__tab[] = { 0xb11ef76ea4b5d18e7a400000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_55_1__tab[] = { 0xb11ef76ea4b5d18e7a40000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_55_1__tab[] = { 0xb11ef76ea4b5d18e7a4000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xda00, 0xb9d5 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xe818, 0x4c7b, 0xaa2c, 0xfff2, 0xb053 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xe8180000, 0xaa2c4c7b, 0xb053fff2 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xe818000000000000, 0xb053fff2aa2c4c7b };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xb053fff2aa2c4c7be8180000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xb053fff2aa2c4c7be818000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xb053fff2aa2c4c7be81800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_57_0__tab[] = { 0x0a00, 0xbaa7 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xefb0, 0x814f, 0x8e2f, 0x630e, 0xaf8e };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xefb00000, 0x8e2f814f, 0xaf8e630e };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xefb0000000000000, 0xaf8e630e8e2f814f };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xaf8e630e8e2f814fefb00000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xaf8e630e8e2f814fefb0000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xaf8e630e8e2f814fefb000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_58_0__tab[] = { 0x9600, 0xbb74 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb749600 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb74960000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb7496000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb749600000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb74960000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_58_1__tab[] = { 0x5d18, 0x41a1, 0x6114, 0xe39d, 0xaecd };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_58_1__tab[] = { 0x5d180000, 0x611441a1, 0xaecde39d };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_58_1__tab[] = { 0x5d18000000000000, 0xaecde39d611441a1 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_58_1__tab[] = { 0xaecde39d611441a15d180000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_58_1__tab[] = { 0xaecde39d611441a15d18000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_58_1__tab[] = { 0xaecde39d611441a15d1800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_59_0__tab[] = { 0x9e00, 0xbc3e };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xd000, 0x97df, 0x2f97, 0x4842, 0xae12 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xd0000000, 0x2f9797df, 0xae124842 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xd000000000000000, 0xae1248422f9797df };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xae1248422f9797dfd0000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xae1248422f9797dfd000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xae1248422f9797dfd00000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_60_0__tab[] = { 0x4000, 0xbd05 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd054000 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd05400000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd0540000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd054000000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd05400000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xfe58, 0x206d, 0x3555, 0x5b1c, 0xad5b };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xfe580000, 0x3555206d, 0xad5b5b1c };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xfe58000000000000, 0xad5b5b1c3555206d };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xad5b5b1c3555206dfe580000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xad5b5b1c3555206dfe58000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xad5b5b1c3555206dfe5800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_61_0__tab[] = { 0x9a00, 0xbdc8 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a00 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a0000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a00000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a0000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_61_1__tab[] = { 0x4df8, 0x7757, 0x31cb, 0xe982, 0xaca8 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_61_1__tab[] = { 0x4df80000, 0x31cb7757, 0xaca8e982 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_61_1__tab[] = { 0x4df8000000000000, 0xaca8e98231cb7757 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xaca8e98231cb77574df80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xaca8e98231cb77574df8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xaca8e98231cb77574df800000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xc800, 0xbe88 };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c800 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c80000000000 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c8000000000000000000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c800000000000000000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c80000000000000000000000000000000000000000000000000000000000 };
+#endif
+
+#if 0
+#elif GMP_NUMB_BITS == 16
+const mp_limb_t mpfr_l2b_62_1__tab[] = { 0x74f8, 0xf905, 0x1831, 0xc3c4, 0xabfa };
+#elif GMP_NUMB_BITS == 32
+const mp_limb_t mpfr_l2b_62_1__tab[] = { 0x74f80000, 0x1831f905, 0xabfac3c4 };
+#elif GMP_NUMB_BITS == 64
+const mp_limb_t mpfr_l2b_62_1__tab[] = { 0x74f8000000000000, 0xabfac3c41831f905 };
+#elif GMP_NUMB_BITS == 96
+const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xabfac3c41831f90574f80000 };
+#elif GMP_NUMB_BITS == 128
+const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xabfac3c41831f90574f8000000000000 };
+#elif GMP_NUMB_BITS == 256
+const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xabfac3c41831f90574f800000000000000000000000000000000000000000000 };
+#endif
+
+const __mpfr_struct __gmpfr_l2b[BASE_MAX-1][2] = {
+ { { 23, 1, 1, (mp_limb_t *) mpfr_l2b_2_0__tab },
+ { 77, 1, 1, (mp_limb_t *) mpfr_l2b_2_1__tab } },
+ { { 23, 1, 1, (mp_limb_t *) mpfr_l2b_3_0__tab },
+ { 77, 1, 0, (mp_limb_t *) mpfr_l2b_3_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_4_0__tab },
+ { 77, 1, 0, (mp_limb_t *) mpfr_l2b_4_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_5_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_5_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_6_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_6_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_7_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_7_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_8_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_8_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_9_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_9_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_10_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_10_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_11_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_11_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_12_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_12_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_13_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_13_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_14_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_14_1__tab } },
+ { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_15_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_15_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_16_0__tab },
+ { 77, 1, -1, (mp_limb_t *) mpfr_l2b_16_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_17_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_17_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_18_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_18_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_19_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_19_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_20_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_20_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_21_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_21_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_22_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_22_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_23_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_23_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_24_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_24_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_25_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_25_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_26_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_26_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_27_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_27_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_28_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_28_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_29_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_29_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_30_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_30_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_31_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_31_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_32_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_32_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_33_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_33_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_34_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_34_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_35_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_35_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_36_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_36_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_37_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_37_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_38_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_38_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_39_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_39_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_40_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_40_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_41_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_41_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_42_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_42_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_43_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_43_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_44_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_44_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_45_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_45_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_46_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_46_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_47_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_47_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_48_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_48_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_49_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_49_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_50_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_50_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_51_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_51_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_52_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_52_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_53_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_53_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_54_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_54_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_55_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_55_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_56_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_56_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_57_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_57_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_58_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_58_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_59_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_59_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_60_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_60_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_61_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_61_1__tab } },
+ { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_62_0__tab },
+ { 77, 1, -2, (mp_limb_t *) mpfr_l2b_62_1__tab } } };
+
+/***************************************************************************/
+
+/* returns ceil(e * log2(b)^((-1)^i)), or ... + 1.
+ For i=0, uses a 23-bit upper approximation to log(beta)/log(2).
+ For i=1, uses a 76-bit upper approximation to log(2)/log(beta).
+ Note: this function should be called only in the extended exponent range.
+*/
+mpfr_exp_t
+mpfr_ceil_mul (mpfr_exp_t e, int beta, int i)
+{
+ mpfr_srcptr p;
+ mpfr_t t;
+ mpfr_exp_t r;
+
+ p = &__gmpfr_l2b[beta-2][i];
+ mpfr_init2 (t, sizeof (mpfr_exp_t) * CHAR_BIT);
+ mpfr_set_exp_t (t, e, MPFR_RNDU);
+ mpfr_mul (t, t, p, MPFR_RNDU);
+ r = mpfr_get_exp_t (t, MPFR_RNDU);
+ mpfr_clear (t);
+ return r;
+}
+
+/* prints the mantissa of x in the string s, and writes the corresponding
+ exponent in e.
+ x is rounded with direction rnd, m is the number of digits of the mantissa,
+ b is the given base (2 <= b <= 62).
+
+ Return value:
+ if s=NULL, allocates a string to store the mantissa, with
+ m characters, plus a final '\0', plus a possible minus sign
+ (thus m+1 or m+2 characters).
+
+ Important: when you call this function with s=NULL, don't forget to free
+ the memory space allocated, with free(s, strlen(s)).
+*/
+char*
+mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ const char *num_to_text;
+ int exact; /* exact result */
+ mpfr_exp_t exp, g;
+ mpfr_exp_t prec; /* precision of the computation */
+ long err;
+ mp_limb_t *a;
+ mpfr_exp_t exp_a;
+ mp_limb_t *result;
+ mp_limb_t *xp;
+ mp_limb_t *reste;
+ size_t nx, nx1;
+ size_t n, i;
+ char *s0;
+ int neg;
+ int ret; /* return value of mpfr_get_str_aux */
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_TMP_DECL(marker);
+
+ /* if exact = 1 then err is undefined */
+ /* otherwise err is such that |x*b^(m-g)-a*2^exp_a| < 2^(err+exp_a) */
+
+ /* is the base valid? */
+ if (b < 2 || b > 62)
+ return NULL;
+
+ num_to_text = b < 37 ? num_to_text36 : num_to_text62;
+
+ if (MPFR_UNLIKELY (MPFR_IS_NAN (x)))
+ {
+ if (s == NULL)
+ s = (char *) (*__gmp_allocate_func) (6);
+ strcpy (s, "@NaN@");
+ return s;
+ }
+
+ neg = MPFR_SIGN(x) < 0; /* 0 if positive, 1 if negative */
+
+ if (MPFR_UNLIKELY (MPFR_IS_INF (x)))
+ {
+ if (s == NULL)
+ s = (char *) (*__gmp_allocate_func) (neg + 6);
+ strcpy (s, (neg) ? "-@Inf@" : "@Inf@");
+ return s;
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo); /* needed for mpfr_ceil_mul (at least) */
+
+ if (m == 0)
+ {
+
+ /* take at least 1 + ceil(n*log(2)/log(b)) digits, where n is the
+ number of bits of the mantissa, to ensure back conversion from
+ the output gives the same floating-point.
+
+ Warning: if b = 2^k, this may be too large. The worst case is when
+ the first base-b digit contains only one bit, so we get
+ 1 + ceil((n-1)/k) = 2 + floor((n-2)/k) instead.
+ */
+ m = 1 +
+ mpfr_ceil_mul (IS_POW2(b) ? MPFR_PREC(x) - 1 : MPFR_PREC(x), b, 1);
+ if (m < 2)
+ m = 2;
+ }
+
+ /* the code below for non-power-of-two bases works for m=1 */
+ MPFR_ASSERTN (m >= 2 || (IS_POW2(b) == 0 && m >= 1));
+
+ /* x is a floating-point number */
+
+ if (MPFR_IS_ZERO(x))
+ {
+ if (s == NULL)
+ s = (char*) (*__gmp_allocate_func) (neg + m + 1);
+ s0 = s;
+ if (neg)
+ *s++ = '-';
+ memset (s, '0', m);
+ s[m] = '\0';
+ *e = 0; /* a bit like frexp() in ISO C99 */
+ MPFR_SAVE_EXPO_FREE (expo);
+ return s0; /* strlen(s0) = neg + m */
+ }
+
+ if (s == NULL)
+ s = (char*) (*__gmp_allocate_func) (neg + m + 1);
+ s0 = s;
+ if (neg)
+ *s++ = '-';
+
+ xp = MPFR_MANT(x);
+
+ if (IS_POW2(b))
+ {
+ int pow2;
+ mpfr_exp_t f, r;
+ mp_limb_t *x1;
+ mp_size_t nb;
+ int inexp;
+
+ count_leading_zeros (pow2, (mp_limb_t) b);
+ pow2 = GMP_NUMB_BITS - pow2 - 1; /* base = 2^pow2 */
+
+ /* set MPFR_EXP(x) = f*pow2 + r, 1 <= r <= pow2 */
+ f = (MPFR_GET_EXP (x) - 1) / pow2;
+ r = MPFR_GET_EXP (x) - f * pow2;
+ if (r <= 0)
+ {
+ f --;
+ r += pow2;
+ }
+
+ /* the first digit will contain only r bits */
+ prec = (m - 1) * pow2 + r; /* total number of bits */
+ n = MPFR_PREC2LIMBS (prec);
+
+ MPFR_TMP_MARK (marker);
+ x1 = MPFR_TMP_LIMBS_ALLOC (n + 1);
+ nb = n * GMP_NUMB_BITS - prec;
+ /* round xp to the precision prec, and put it into x1
+ put the carry into x1[n] */
+ if ((x1[n] = mpfr_round_raw (x1, xp, MPFR_PREC(x),
+ MPFR_IS_STRICTNEG(x),
+ prec, rnd, &inexp)))
+ {
+ /* overflow when rounding x: x1 = 2^prec */
+ if (r == pow2) /* prec = m * pow2,
+ 2^prec will need (m+1) digits in base 2^pow2 */
+ {
+ /* divide x1 by 2^pow2, and increase the exponent */
+ mpn_rshift (x1, x1, n + 1, pow2);
+ f ++;
+ }
+ else /* 2^prec needs still m digits, but x1 may need n+1 limbs */
+ n ++;
+ }
+
+ /* it remains to shift x1 by nb limbs to the right, since mpn_get_str
+ expects a right-normalized number */
+ if (nb != 0)
+ {
+ mpn_rshift (x1, x1, n, nb);
+ /* the most significant word may be zero */
+ if (x1[n - 1] == 0)
+ n --;
+ }
+
+ mpn_get_str ((unsigned char*) s, b, x1, n);
+ for (i=0; i<m; i++)
+ s[i] = num_to_text[(int) s[i]];
+ s[m] = 0;
+
+ /* the exponent of s is f + 1 */
+ *e = f + 1;
+
+ MPFR_TMP_FREE(marker);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return (s0);
+ }
+
+ /* if x < 0, reduce to x > 0 */
+ if (neg)
+ rnd = MPFR_INVERT_RND(rnd);
+
+ g = mpfr_ceil_mul (MPFR_GET_EXP (x) - 1, b, 1);
+ exact = 1;
+ prec = mpfr_ceil_mul (m, b, 0) + 1;
+ exp = ((mpfr_exp_t) m < g) ? g - (mpfr_exp_t) m : (mpfr_exp_t) m - g;
+ prec += MPFR_INT_CEIL_LOG2 (prec); /* number of guard bits */
+ if (exp != 0) /* add maximal exponentiation error */
+ prec += 3 * (mpfr_exp_t) MPFR_INT_CEIL_LOG2 (exp);
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ MPFR_TMP_MARK(marker);
+
+ exact = 1;
+
+ /* number of limbs */
+ n = MPFR_PREC2LIMBS (prec);
+
+ /* a will contain the approximation of the mantissa */
+ a = MPFR_TMP_LIMBS_ALLOC (n);
+
+ nx = MPFR_LIMB_SIZE (x);
+
+ if ((mpfr_exp_t) m == g) /* final exponent is 0, no multiplication or
+ division to perform */
+ {
+ if (nx > n)
+ exact = mpn_scan1 (xp, 0) >= (nx - n) * GMP_NUMB_BITS;
+ err = !exact;
+ MPN_COPY2 (a, n, xp, nx);
+ exp_a = MPFR_GET_EXP (x) - n * GMP_NUMB_BITS;
+ }
+ else if ((mpfr_exp_t) m > g) /* we have to multiply x by b^exp */
+ {
+ mp_limb_t *x1;
+
+ /* a2*2^exp_a = b^e */
+ err = mpfr_mpn_exp (a, &exp_a, b, exp, n);
+ /* here, the error on a is at most 2^err ulps */
+ exact = (err == -1);
+
+ /* x = x1*2^(n*GMP_NUMB_BITS) */
+ x1 = (nx >= n) ? xp + nx - n : xp;
+ nx1 = (nx >= n) ? n : nx; /* nx1 = min(n, nx) */
+
+ /* test si exact */
+ if (nx > n)
+ exact = (exact &&
+ ((mpn_scan1 (xp, 0) >= (nx - n) * GMP_NUMB_BITS)));
+
+ /* we loose one more bit in the multiplication,
+ except when err=0 where we loose two bits */
+ err = (err <= 0) ? 2 : err + 1;
+
+ /* result = a * x */
+ result = MPFR_TMP_LIMBS_ALLOC (n + nx1);
+ mpn_mul (result, a, n, x1, nx1);
+ exp_a += MPFR_GET_EXP (x);
+ if (mpn_scan1 (result, 0) < (nx1 * GMP_NUMB_BITS))
+ exact = 0;
+
+ /* normalize a and truncate */
+ if ((result[n + nx1 - 1] & MPFR_LIMB_HIGHBIT) == 0)
+ {
+ mpn_lshift (a, result + nx1, n , 1);
+ a[0] |= result[nx1 - 1] >> (GMP_NUMB_BITS - 1);
+ exp_a --;
+ }
+ else
+ MPN_COPY (a, result + nx1, n);
+ }
+ else
+ {
+ mp_limb_t *x1;
+
+ /* a2*2^exp_a = b^e */
+ err = mpfr_mpn_exp (a, &exp_a, b, exp, n);
+ exact = (err == -1);
+
+ /* allocate memory for x1, result and reste */
+ x1 = MPFR_TMP_LIMBS_ALLOC (2 * n);
+ result = MPFR_TMP_LIMBS_ALLOC (n + 1);
+ reste = MPFR_TMP_LIMBS_ALLOC (n);
+
+ /* initialize x1 = x */
+ MPN_COPY2 (x1, 2 * n, xp, nx);
+ if ((exact) && (nx > 2 * n) &&
+ (mpn_scan1 (xp, 0) < (nx - 2 * n) * GMP_NUMB_BITS))
+ exact = 0;
+
+ /* result = x / a */
+ mpn_tdiv_qr (result, reste, 0, x1, 2 * n, a, n);
+ exp_a = MPFR_GET_EXP (x) - exp_a - 2 * n * GMP_NUMB_BITS;
+
+ /* test if division was exact */
+ if (exact)
+ exact = mpn_popcount (reste, n) == 0;
+
+ /* normalize the result and copy into a */
+ if (result[n] == 1)
+ {
+ mpn_rshift (a, result, n, 1);
+ a[n - 1] |= MPFR_LIMB_HIGHBIT;;
+ exp_a ++;
+ }
+ else
+ MPN_COPY (a, result, n);
+
+ err = (err == -1) ? 2 : err + 2;
+ }
+
+ /* check if rounding is possible */
+ if (exact)
+ err = -1;
+ ret = mpfr_get_str_aux (s, e, a, n, exp_a, err, b, m, rnd);
+ if (ret == MPFR_ROUND_FAILED)
+ {
+ /* too large error: increment the working precision */
+ MPFR_ZIV_NEXT (loop, prec);
+ }
+ else if (ret == -MPFR_ROUND_FAILED)
+ {
+ /* too many digits in mantissa: exp = |m-g| */
+ if ((mpfr_exp_t) m > g) /* exp = m - g, multiply by b^exp */
+ {
+ g++;
+ exp --;
+ }
+ else /* exp = g - m, divide by b^exp */
+ {
+ g++;
+ exp ++;
+ }
+ }
+ else
+ break;
+
+ MPFR_TMP_FREE(marker);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ *e += g;
+
+ MPFR_TMP_FREE(marker);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return s0;
+}
+
+void mpfr_free_str (char *str)
+{
+ (*__gmp_free_func) (str, strlen (str) + 1);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_ui.c b/Build/source/libs/mpfr/mpfr-src/src/get_ui.c
new file mode 100644
index 00000000000..374d35dd1eb
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_ui.c
@@ -0,0 +1,65 @@
+/* mpfr_get_ui -- convert a floating-point number to an unsigned long.
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+unsigned long
+mpfr_get_ui (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t prec;
+ unsigned long s;
+ mpfr_t x;
+ mp_size_t n;
+ mpfr_exp_t exp;
+
+ if (MPFR_UNLIKELY (!mpfr_fits_ulong_p (f, rnd)))
+ {
+ MPFR_SET_ERANGE ();
+ return MPFR_IS_NAN (f) || MPFR_IS_NEG (f) ?
+ (unsigned long) 0 : ULONG_MAX;
+ }
+
+ if (MPFR_IS_ZERO (f))
+ return (unsigned long) 0;
+
+ for (s = ULONG_MAX, prec = 0; s != 0; s /= 2, prec ++)
+ { }
+
+ /* first round to prec bits */
+ mpfr_init2 (x, prec);
+ mpfr_rint (x, f, rnd);
+
+ /* warning: if x=0, taking its exponent is illegal */
+ if (MPFR_IS_ZERO(x))
+ s = 0;
+ else
+ {
+ /* now the result is in the most significant limb of x */
+ exp = MPFR_GET_EXP (x); /* since |x| >= 1, exp >= 1 */
+ n = MPFR_LIMB_SIZE(x);
+ s = MPFR_MANT(x)[n - 1] >> (GMP_NUMB_BITS - exp);
+ }
+
+ mpfr_clear (x);
+
+ return s;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_uj.c b/Build/source/libs/mpfr/mpfr-src/src/get_uj.c
new file mode 100644
index 00000000000..eb79e5d4030
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_uj.c
@@ -0,0 +1,82 @@
+/* mpfr_get_uj -- convert a MPFR number to a huge machine unsigned integer
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h" /* for a build within gmp */
+#endif
+
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+#ifdef _MPFR_H_HAVE_INTMAX_T
+
+uintmax_t
+mpfr_get_uj (mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ uintmax_t r;
+ mpfr_prec_t prec;
+ mpfr_t x;
+
+ if (MPFR_UNLIKELY (!mpfr_fits_uintmax_p (f, rnd)))
+ {
+ MPFR_SET_ERANGE ();
+ return MPFR_IS_NAN (f) || MPFR_IS_NEG (f) ?
+ (uintmax_t) 0 : MPFR_UINTMAX_MAX;
+ }
+
+ if (MPFR_IS_ZERO (f))
+ return (uintmax_t) 0;
+
+ /* determine the precision of uintmax_t */
+ for (r = MPFR_UINTMAX_MAX, prec = 0; r != 0; r /= 2, prec++)
+ { }
+
+ /* Now, r = 0. */
+
+ mpfr_init2 (x, prec);
+ mpfr_rint (x, f, rnd);
+ MPFR_ASSERTN (MPFR_IS_FP (x));
+
+ if (MPFR_NOTZERO (x))
+ {
+ mp_limb_t *xp;
+ int sh, n; /* An int should be sufficient in this context. */
+
+ MPFR_ASSERTN (MPFR_IS_POS (x));
+ xp = MPFR_MANT (x);
+ sh = MPFR_GET_EXP (x);
+ MPFR_ASSERTN ((mpfr_prec_t) sh <= prec);
+ for (n = MPFR_LIMB_SIZE(x) - 1; n >= 0; n--)
+ {
+ sh -= GMP_NUMB_BITS;
+ r += (sh >= 0
+ ? (uintmax_t) xp[n] << sh
+ : (uintmax_t) xp[n] >> (- sh));
+ }
+ }
+
+ mpfr_clear (x);
+
+ return r;
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_z.c b/Build/source/libs/mpfr/mpfr-src/src/get_z.c
new file mode 100644
index 00000000000..aebbfa33ed7
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_z.c
@@ -0,0 +1,61 @@
+/* mpfr_get_z -- get a multiple-precision integer from
+ a floating-point number
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_get_z (mpz_ptr z, mpfr_srcptr f, mpfr_rnd_t rnd)
+{
+ int inex;
+ mpfr_t r;
+ mpfr_exp_t exp;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+ {
+ if (MPFR_UNLIKELY (MPFR_NOTZERO (f)))
+ MPFR_SET_ERANGE ();
+ mpz_set_ui (z, 0);
+ /* The ternary value is 0 even for infinity. Giving the rounding
+ direction in this case would not make much sense anyway, and
+ the direction would not necessarily match rnd. */
+ return 0;
+ }
+
+ exp = MPFR_GET_EXP (f);
+ /* if exp <= 0, then |f|<1, thus |o(f)|<=1 */
+ MPFR_ASSERTN (exp < 0 || exp <= MPFR_PREC_MAX);
+ mpfr_init2 (r, (exp < (mpfr_exp_t) MPFR_PREC_MIN ?
+ MPFR_PREC_MIN : (mpfr_prec_t) exp));
+ inex = mpfr_rint (r, f, rnd);
+ MPFR_ASSERTN (inex != 1 && inex != -1); /* integral part of f is
+ representable in r */
+ MPFR_ASSERTN (MPFR_IS_FP (r));
+ exp = mpfr_get_z_2exp (z, r);
+ if (exp >= 0)
+ mpz_mul_2exp (z, z, exp);
+ else
+ mpz_fdiv_q_2exp (z, z, -exp);
+ mpfr_clear (r);
+
+ return inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/get_z_exp.c b/Build/source/libs/mpfr/mpfr-src/src/get_z_exp.c
new file mode 100644
index 00000000000..1431b013ef9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/get_z_exp.c
@@ -0,0 +1,79 @@
+/* mpfr_get_z_2exp -- get a multiple-precision integer and an exponent
+ from a floating-point number
+
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* puts the significand of f into z, and returns 'exp' such that f = z * 2^exp
+ *
+ * 0 doesn't have an exponent, therefore the returned exponent in this case
+ * isn't really important. We choose to return __gmpfr_emin because
+ * 1) it is in the exponent range [__gmpfr_emin,__gmpfr_emax],
+ * 2) the smaller a number is (in absolute value), the smaller its
+ * exponent is. In other words, the f -> exp function is monotonous
+ * on nonnegative numbers. --> This is WRONG since the returned
+ * exponent is not necessarily in the exponent range!
+ * Note that this is different from the C function frexp().
+ *
+ * For NaN and infinities, we choose to set z = 0 (neutral value).
+ * The exponent doesn't really matter, so let's keep __gmpfr_emin
+ * for consistency. The erange flag is set.
+ */
+
+mpfr_exp_t
+mpfr_get_z_2exp (mpz_ptr z, mpfr_srcptr f)
+{
+ mp_size_t fn;
+ int sh;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+ {
+ if (MPFR_UNLIKELY (MPFR_NOTZERO (f)))
+ MPFR_SET_ERANGE ();
+ mpz_set_ui (z, 0);
+ return __gmpfr_emin;
+ }
+
+ fn = MPFR_LIMB_SIZE(f);
+
+ /* check whether allocated space for z is enough */
+ if (MPFR_UNLIKELY (ALLOC (z) < fn))
+ MPZ_REALLOC (z, fn);
+
+ MPFR_UNSIGNED_MINUS_MODULO (sh, MPFR_PREC (f));
+ if (MPFR_LIKELY (sh))
+ mpn_rshift (PTR (z), MPFR_MANT (f), fn, sh);
+ else
+ MPN_COPY (PTR (z), MPFR_MANT (f), fn);
+
+ SIZ(z) = MPFR_IS_NEG (f) ? -fn : fn;
+
+ if (MPFR_UNLIKELY ((mpfr_uexp_t) MPFR_GET_EXP (f) - MPFR_EXP_MIN
+ < (mpfr_uexp_t) MPFR_PREC (f)))
+ {
+ /* The exponent isn't representable in an mpfr_exp_t. */
+ MPFR_SET_ERANGE ();
+ return MPFR_EXP_MIN;
+ }
+
+ return MPFR_GET_EXP (f) - MPFR_PREC (f);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/gmp_op.c b/Build/source/libs/mpfr/mpfr-src/src/gmp_op.c
new file mode 100644
index 00000000000..af2f8eeec3a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/gmp_op.c
@@ -0,0 +1,489 @@
+/* Implementations of operations between mpfr and mpz/mpq data
+
+Copyright 2001, 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Init and set a mpfr_t with enough precision to store a mpz.
+ This function should be called in the extended exponent range. */
+static void
+init_set_z (mpfr_ptr t, mpz_srcptr z)
+{
+ mpfr_prec_t p;
+ int i;
+
+ if (mpz_size (z) <= 1)
+ p = GMP_NUMB_BITS;
+ else
+ MPFR_MPZ_SIZEINBASE2 (p, z);
+ mpfr_init2 (t, p);
+ i = mpfr_set_z (t, z, MPFR_RNDN);
+ /* Possible assertion failure in case of overflow. Such cases,
+ which imply that z is huge (if the function is called in
+ the extended exponent range), are currently not supported,
+ just like precisions around MPFR_PREC_MAX. */
+ MPFR_ASSERTN (i == 0); (void) i; /* use i to avoid a warning */
+}
+
+/* Init, set a mpfr_t with enough precision to store a mpz_t without round,
+ call the function, and clear the allocated mpfr_t */
+static int
+foo (mpfr_ptr x, mpfr_srcptr y, mpz_srcptr z, mpfr_rnd_t r,
+ int (*f)(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t))
+{
+ mpfr_t t;
+ int i;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ init_set_z (t, z); /* There should be no exceptions. */
+ i = (*f) (x, y, t, r);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (x, i, r);
+}
+
+static int
+foo2 (mpfr_ptr x, mpz_srcptr y, mpfr_srcptr z, mpfr_rnd_t r,
+ int (*f)(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t))
+{
+ mpfr_t t;
+ int i;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ init_set_z (t, y); /* There should be no exceptions. */
+ i = (*f) (x, t, z, r);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (x, i, r);
+}
+
+int
+mpfr_mul_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr z, mpfr_rnd_t r)
+{
+ return foo (y, x, z, r, mpfr_mul);
+}
+
+int
+mpfr_div_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr z, mpfr_rnd_t r)
+{
+ return foo (y, x, z, r, mpfr_div);
+}
+
+int
+mpfr_add_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr z, mpfr_rnd_t r)
+{
+ /* Mpz 0 is unsigned */
+ if (MPFR_UNLIKELY (mpz_sgn (z) == 0))
+ return mpfr_set (y, x, r);
+ else
+ return foo (y, x, z, r, mpfr_add);
+}
+
+int
+mpfr_sub_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr z, mpfr_rnd_t r)
+{
+ /* Mpz 0 is unsigned */
+ if (MPFR_UNLIKELY (mpz_sgn (z) == 0))
+ return mpfr_set (y, x, r);
+ else
+ return foo (y, x, z, r, mpfr_sub);
+}
+
+int
+mpfr_z_sub (mpfr_ptr y, mpz_srcptr x, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ /* Mpz 0 is unsigned */
+ if (MPFR_UNLIKELY (mpz_sgn (x) == 0))
+ return mpfr_neg (y, z, r);
+ else
+ return foo2 (y, x, z, r, mpfr_sub);
+}
+
+int
+mpfr_cmp_z (mpfr_srcptr x, mpz_srcptr z)
+{
+ mpfr_t t;
+ int res;
+ mpfr_prec_t p;
+ unsigned int flags;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return mpfr_cmp_si (x, mpz_sgn (z));
+
+ if (mpz_size (z) <= 1)
+ p = GMP_NUMB_BITS;
+ else
+ MPFR_MPZ_SIZEINBASE2 (p, z);
+ mpfr_init2 (t, p);
+ flags = __gmpfr_flags;
+ if (mpfr_set_z (t, z, MPFR_RNDN))
+ {
+ /* overflow (t is an infinity) or underflow */
+ mpfr_div_2ui (t, t, 2, MPFR_RNDZ); /* if underflow, set t to zero */
+ __gmpfr_flags = flags; /* restore the flags */
+ /* The real value of t (= z), which falls outside the exponent range,
+ has been replaced by an equivalent value for the comparison: zero
+ or an infinity. */
+ }
+ res = mpfr_cmp (x, t);
+ mpfr_clear (t);
+ return res;
+}
+
+/* Compute y = RND(x*n/d), where n and d are mpz integers.
+ An integer 0 is assumed to have a positive sign.
+ This function is used by mpfr_mul_q and mpfr_div_q.
+ Note: the status of the rational 0/(-1) is not clear (if there is
+ a signed infinity, there should be a signed zero). But infinities
+ are not currently supported/documented in GMP, and if the rational
+ is canonicalized as it should be, the case 0/(-1) cannot occur. */
+static int
+mpfr_muldiv_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr n, mpz_srcptr d,
+ mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_UNLIKELY (mpz_sgn (n) == 0))
+ {
+ if (MPFR_UNLIKELY (mpz_sgn (d) == 0))
+ MPFR_SET_NAN (y);
+ else
+ {
+ mpfr_mul_ui (y, x, 0, MPFR_RNDN); /* exact: +0, -0 or NaN */
+ if (MPFR_UNLIKELY (mpz_sgn (d) < 0))
+ MPFR_CHANGE_SIGN (y);
+ }
+ return 0;
+ }
+ else if (MPFR_UNLIKELY (mpz_sgn (d) == 0))
+ {
+ mpfr_div_ui (y, x, 0, MPFR_RNDN); /* exact: +Inf, -Inf or NaN */
+ if (MPFR_UNLIKELY (mpz_sgn (n) < 0))
+ MPFR_CHANGE_SIGN (y);
+ return 0;
+ }
+ else
+ {
+ mpfr_prec_t p;
+ mpfr_t tmp;
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* With the current MPFR code, using mpfr_mul_z and mpfr_div_z
+ for the general case should be faster than doing everything
+ in mpn, mpz and/or mpq. MPFR_SAVE_EXPO_MARK could be avoided
+ here, but it would be more difficult to handle corner cases. */
+ MPFR_MPZ_SIZEINBASE2 (p, n);
+ mpfr_init2 (tmp, MPFR_PREC (x) + p);
+ inexact = mpfr_mul_z (tmp, x, n, MPFR_RNDN);
+ /* Since |n| >= 1, an underflow is not possible. And the precision of
+ tmp has been chosen so that inexact != 0 iff there's an overflow. */
+ if (MPFR_UNLIKELY (inexact != 0))
+ {
+ mpfr_t x0;
+ mpfr_exp_t ex;
+ MPFR_BLOCK_DECL (flags);
+
+ /* intermediate overflow case */
+ MPFR_ASSERTD (mpfr_inf_p (tmp));
+ ex = MPFR_GET_EXP (x); /* x is a pure FP number */
+ MPFR_ALIAS (x0, x, MPFR_SIGN(x), 0); /* x0 = x / 2^ex */
+ MPFR_BLOCK (flags,
+ inexact = mpfr_mul_z (tmp, x0, n, MPFR_RNDN);
+ MPFR_ASSERTD (inexact == 0);
+ inexact = mpfr_div_z (y, tmp, d, rnd_mode);
+ /* Just in case the division underflows
+ (highly unlikely, not supported)... */
+ MPFR_ASSERTN (!MPFR_BLOCK_EXCEP));
+ MPFR_EXP (y) += ex;
+ /* Detect highly unlikely, not supported corner cases... */
+ MPFR_ASSERTN (MPFR_EXP (y) >= __gmpfr_emin && MPFR_IS_PURE_FP (y));
+ /* The potential overflow will be detected by mpfr_check_range. */
+ }
+ else
+ inexact = mpfr_div_z (y, tmp, d, rnd_mode);
+
+ mpfr_clear (tmp);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+}
+
+int
+mpfr_mul_q (mpfr_ptr y, mpfr_srcptr x, mpq_srcptr z, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_muldiv_z (y, x, mpq_numref (z), mpq_denref (z), rnd_mode);
+}
+
+int
+mpfr_div_q (mpfr_ptr y, mpfr_srcptr x, mpq_srcptr z, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_muldiv_z (y, x, mpq_denref (z), mpq_numref (z), rnd_mode);
+}
+
+int
+mpfr_add_q (mpfr_ptr y, mpfr_srcptr x, mpq_srcptr z, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t t,q;
+ mpfr_prec_t p;
+ mpfr_exp_t err;
+ int res;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ if (MPFR_UNLIKELY (mpz_sgn (mpq_denref (z)) == 0 &&
+ MPFR_MULT_SIGN (mpz_sgn (mpq_numref (z)),
+ MPFR_SIGN (x)) <= 0))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ if (MPFR_UNLIKELY (mpq_sgn (z) == 0))
+ return mpfr_set (y, x, rnd_mode); /* signed 0 - Unsigned 0 */
+ else
+ return mpfr_set_q (y, z, rnd_mode);
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ p = MPFR_PREC (y) + 10;
+ mpfr_init2 (t, p);
+ mpfr_init2 (q, p);
+
+ MPFR_ZIV_INIT (loop, p);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ res = mpfr_set_q (q, z, MPFR_RNDN); /* Error <= 1/2 ulp(q) */
+ /* If z if @INF@ (1/0), res = 0, so it quits immediately */
+ if (MPFR_UNLIKELY (res == 0))
+ /* Result is exact so we can add it directly! */
+ {
+ res = mpfr_add (y, x, q, rnd_mode);
+ break;
+ }
+ MPFR_BLOCK (flags, mpfr_add (t, x, q, MPFR_RNDN));
+ /* Error on t is <= 1/2 ulp(t), except in case of overflow/underflow,
+ but such an exception is very unlikely as it would be possible
+ only if q has a huge numerator or denominator. Not supported! */
+ MPFR_ASSERTN (! (MPFR_OVERFLOW (flags) || MPFR_UNDERFLOW (flags)));
+ /* Error / ulp(t) <= 1/2 + 1/2 * 2^(EXP(q)-EXP(t))
+ If EXP(q)-EXP(t)>0, <= 2^(EXP(q)-EXP(t)-1)*(1+2^-(EXP(q)-EXP(t)))
+ <= 2^(EXP(q)-EXP(t))
+ If EXP(q)-EXP(t)<0, <= 2^0 */
+ /* We can get 0, but we can't round since q is inexact */
+ if (MPFR_LIKELY (!MPFR_IS_ZERO (t)))
+ {
+ err = (mpfr_exp_t) p - 1 - MAX (MPFR_GET_EXP(q)-MPFR_GET_EXP(t), 0);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, MPFR_PREC (y), rnd_mode)))
+ {
+ res = mpfr_set (y, t, rnd_mode);
+ break;
+ }
+ }
+ MPFR_ZIV_NEXT (loop, p);
+ mpfr_set_prec (t, p);
+ mpfr_set_prec (q, p);
+ }
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ mpfr_clear (q);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, res, rnd_mode);
+}
+
+int
+mpfr_sub_q (mpfr_ptr y, mpfr_srcptr x, mpq_srcptr z,mpfr_rnd_t rnd_mode)
+{
+ mpfr_t t,q;
+ mpfr_prec_t p;
+ int res;
+ mpfr_exp_t err;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ if (MPFR_UNLIKELY (mpz_sgn (mpq_denref (z)) == 0 &&
+ MPFR_MULT_SIGN (mpz_sgn (mpq_numref (z)),
+ MPFR_SIGN (x)) >= 0))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+
+ if (MPFR_UNLIKELY (mpq_sgn (z) == 0))
+ return mpfr_set (y, x, rnd_mode); /* signed 0 - Unsigned 0 */
+ else
+ {
+ res = mpfr_set_q (y, z, MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (y);
+ return -res;
+ }
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ p = MPFR_PREC (y) + 10;
+ mpfr_init2 (t, p);
+ mpfr_init2 (q, p);
+
+ MPFR_ZIV_INIT (loop, p);
+ for(;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ res = mpfr_set_q(q, z, MPFR_RNDN); /* Error <= 1/2 ulp(q) */
+ /* If z if @INF@ (1/0), res = 0, so it quits immediately */
+ if (MPFR_UNLIKELY (res == 0))
+ /* Result is exact so we can add it directly!*/
+ {
+ res = mpfr_sub (y, x, q, rnd_mode);
+ break;
+ }
+ MPFR_BLOCK (flags, mpfr_sub (t, x, q, MPFR_RNDN));
+ /* Error on t is <= 1/2 ulp(t), except in case of overflow/underflow,
+ but such an exception is very unlikely as it would be possible
+ only if q has a huge numerator or denominator. Not supported! */
+ MPFR_ASSERTN (! (MPFR_OVERFLOW (flags) || MPFR_UNDERFLOW (flags)));
+ /* Error / ulp(t) <= 1/2 + 1/2 * 2^(EXP(q)-EXP(t))
+ If EXP(q)-EXP(t)>0, <= 2^(EXP(q)-EXP(t)-1)*(1+2^-(EXP(q)-EXP(t)))
+ <= 2^(EXP(q)-EXP(t))
+ If EXP(q)-EXP(t)<0, <= 2^0 */
+ /* We can get 0, but we can't round since q is inexact */
+ if (MPFR_LIKELY (!MPFR_IS_ZERO (t)))
+ {
+ err = (mpfr_exp_t) p - 1 - MAX (MPFR_GET_EXP(q)-MPFR_GET_EXP(t), 0);
+ res = MPFR_CAN_ROUND (t, err, MPFR_PREC (y), rnd_mode);
+ if (MPFR_LIKELY (res != 0)) /* We can round! */
+ {
+ res = mpfr_set (y, t, rnd_mode);
+ break;
+ }
+ }
+ MPFR_ZIV_NEXT (loop, p);
+ mpfr_set_prec (t, p);
+ mpfr_set_prec (q, p);
+ }
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ mpfr_clear (q);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, res, rnd_mode);
+}
+
+int
+mpfr_cmp_q (mpfr_srcptr x, mpq_srcptr q)
+{
+ mpfr_t t;
+ int res;
+ mpfr_prec_t p;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ if (MPFR_UNLIKELY (mpq_denref (q) == 0))
+ {
+ /* q is an infinity or NaN */
+ mpfr_init2 (t, 2);
+ mpfr_set_q (t, q, MPFR_RNDN);
+ res = mpfr_cmp (x, t);
+ mpfr_clear (t);
+ return res;
+ }
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return mpfr_cmp_si (x, mpq_sgn (q));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* x < a/b ? <=> x*b < a */
+ MPFR_MPZ_SIZEINBASE2 (p, mpq_denref (q));
+ mpfr_init2 (t, MPFR_PREC(x) + p);
+ res = mpfr_mul_z (t, x, mpq_denref (q), MPFR_RNDN);
+ MPFR_ASSERTD (res == 0);
+ res = mpfr_cmp_z (t, mpq_numref (q));
+ mpfr_clear (t);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return res;
+}
+
+int
+mpfr_cmp_f (mpfr_srcptr x, mpf_srcptr z)
+{
+ mpfr_t t;
+ int res;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return mpfr_cmp_si (x, mpf_sgn (z));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (t, MPFR_PREC_MIN + ABS(SIZ(z)) * GMP_NUMB_BITS );
+ res = mpfr_set_f (t, z, MPFR_RNDN);
+ MPFR_ASSERTD (res == 0);
+ res = mpfr_cmp (x, t);
+ mpfr_clear (t);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/grandom.c b/Build/source/libs/mpfr/mpfr-src/src/grandom.c
new file mode 100644
index 00000000000..21e71ca7c5a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/grandom.c
@@ -0,0 +1,198 @@
+/* mpfr_grandom (rop1, rop2, state, rnd_mode) -- Generate up to two
+ pseudorandom real numbers according to a standard normal gaussian
+ distribution and round it to the precision of rop1, rop2 according
+ to the given rounding mode.
+
+Copyright 2011-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+/* #define MPFR_NEED_LONGLONG_H */
+#include "mpfr-impl.h"
+
+
+int
+mpfr_grandom (mpfr_ptr rop1, mpfr_ptr rop2, gmp_randstate_t rstate,
+ mpfr_rnd_t rnd)
+{
+ int inex1, inex2, s1, s2;
+ mpz_t x, y, xp, yp, t, a, b, s;
+ mpfr_t sfr, l, r1, r2;
+ mpfr_prec_t tprec, tprec0;
+
+ inex2 = inex1 = 0;
+
+ if (rop2 == NULL) /* only one output requested. */
+ {
+ tprec0 = MPFR_PREC (rop1);
+ }
+ else
+ {
+ tprec0 = MAX (MPFR_PREC (rop1), MPFR_PREC (rop2));
+ }
+
+ tprec0 += 11;
+
+ /* We use "Marsaglia polar method" here (cf.
+ George Marsaglia, Normal (Gaussian) random variables for supercomputers
+ The Journal of Supercomputing, Volume 5, Number 1, 49–55
+ DOI: 10.1007/BF00155857).
+
+ First we draw uniform x and y in [0,1] using mpz_urandomb (in
+ fixed precision), and scale them to [-1, 1].
+ */
+
+ mpz_init (xp);
+ mpz_init (yp);
+ mpz_init (x);
+ mpz_init (y);
+ mpz_init (t);
+ mpz_init (s);
+ mpz_init (a);
+ mpz_init (b);
+ mpfr_init2 (sfr, MPFR_PREC_MIN);
+ mpfr_init2 (l, MPFR_PREC_MIN);
+ mpfr_init2 (r1, MPFR_PREC_MIN);
+ if (rop2 != NULL)
+ mpfr_init2 (r2, MPFR_PREC_MIN);
+
+ mpz_set_ui (xp, 0);
+ mpz_set_ui (yp, 0);
+
+ for (;;)
+ {
+ tprec = tprec0;
+ do
+ {
+ mpz_urandomb (xp, rstate, tprec);
+ mpz_urandomb (yp, rstate, tprec);
+ mpz_mul (a, xp, xp);
+ mpz_mul (b, yp, yp);
+ mpz_add (s, a, b);
+ }
+ while (mpz_sizeinbase (s, 2) > tprec * 2); /* x^2 + y^2 <= 2^{2tprec} */
+
+ for (;;)
+ {
+ /* FIXME: compute s as s += 2x + 2y + 2 */
+ mpz_add_ui (a, xp, 1);
+ mpz_add_ui (b, yp, 1);
+ mpz_mul (a, a, a);
+ mpz_mul (b, b, b);
+ mpz_add (s, a, b);
+ if ((mpz_sizeinbase (s, 2) <= 2 * tprec) ||
+ ((mpz_sizeinbase (s, 2) == 2 * tprec + 1) &&
+ (mpz_scan1 (s, 0) == 2 * tprec)))
+ goto yeepee;
+ /* Extend by 32 bits */
+ mpz_mul_2exp (xp, xp, 32);
+ mpz_mul_2exp (yp, yp, 32);
+ mpz_urandomb (x, rstate, 32);
+ mpz_urandomb (y, rstate, 32);
+ mpz_add (xp, xp, x);
+ mpz_add (yp, yp, y);
+ tprec += 32;
+
+ mpz_mul (a, xp, xp);
+ mpz_mul (b, yp, yp);
+ mpz_add (s, a, b);
+ if (mpz_sizeinbase (s, 2) > tprec * 2)
+ break;
+ }
+ }
+ yeepee:
+
+ /* FIXME: compute s with s -= 2x + 2y + 2 */
+ mpz_mul (a, xp, xp);
+ mpz_mul (b, yp, yp);
+ mpz_add (s, a, b);
+ /* Compute the signs of the output */
+ mpz_urandomb (x, rstate, 2);
+ s1 = mpz_tstbit (x, 0);
+ s2 = mpz_tstbit (x, 1);
+ for (;;)
+ {
+ /* s = xp^2 + yp^2 (loop invariant) */
+ mpfr_set_prec (sfr, 2 * tprec);
+ mpfr_set_prec (l, tprec);
+ mpfr_set_z (sfr, s, MPFR_RNDN); /* exact */
+ mpfr_mul_2si (sfr, sfr, -2 * tprec, MPFR_RNDN); /* exact */
+ mpfr_log (l, sfr, MPFR_RNDN);
+ mpfr_neg (l, l, MPFR_RNDN);
+ mpfr_mul_2si (l, l, 1, MPFR_RNDN);
+ mpfr_div (l, l, sfr, MPFR_RNDN);
+ mpfr_sqrt (l, l, MPFR_RNDN);
+
+ mpfr_set_prec (r1, tprec);
+ mpfr_mul_z (r1, l, xp, MPFR_RNDN);
+ mpfr_div_2ui (r1, r1, tprec, MPFR_RNDN); /* exact */
+ if (s1)
+ mpfr_neg (r1, r1, MPFR_RNDN);
+ if (MPFR_CAN_ROUND (r1, tprec - 2, MPFR_PREC (rop1), rnd))
+ {
+ if (rop2 != NULL)
+ {
+ mpfr_set_prec (r2, tprec);
+ mpfr_mul_z (r2, l, yp, MPFR_RNDN);
+ mpfr_div_2ui (r2, r2, tprec, MPFR_RNDN); /* exact */
+ if (s2)
+ mpfr_neg (r2, r2, MPFR_RNDN);
+ if (MPFR_CAN_ROUND (r2, tprec - 2, MPFR_PREC (rop2), rnd))
+ break;
+ }
+ else
+ break;
+ }
+ /* Extend by 32 bits */
+ mpz_mul_2exp (xp, xp, 32);
+ mpz_mul_2exp (yp, yp, 32);
+ mpz_urandomb (x, rstate, 32);
+ mpz_urandomb (y, rstate, 32);
+ mpz_add (xp, xp, x);
+ mpz_add (yp, yp, y);
+ tprec += 32;
+ mpz_mul (a, xp, xp);
+ mpz_mul (b, yp, yp);
+ mpz_add (s, a, b);
+ }
+ inex1 = mpfr_set (rop1, r1, rnd);
+ if (rop2 != NULL)
+ {
+ inex2 = mpfr_set (rop2, r2, rnd);
+ inex2 = mpfr_check_range (rop2, inex2, rnd);
+ }
+ inex1 = mpfr_check_range (rop1, inex1, rnd);
+
+ if (rop2 != NULL)
+ mpfr_clear (r2);
+ mpfr_clear (r1);
+ mpfr_clear (l);
+ mpfr_clear (sfr);
+ mpz_clear (b);
+ mpz_clear (a);
+ mpz_clear (s);
+ mpz_clear (t);
+ mpz_clear (y);
+ mpz_clear (x);
+ mpz_clear (yp);
+ mpz_clear (xp);
+
+ return INEX (inex1, inex2);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/hppa/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/hppa/mparam.h
new file mode 100644
index 00000000000..fdde759046f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/hppa/mparam.h
@@ -0,0 +1,233 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.3.2 */
+/* generated on gcc61.fsffrance.org (HP PA-8600) with GMP 5.0.2 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,48,47,48,47,48,47,48,47, \
+ 48,47,64,63,64,63,64,63,64,63,64,63,64,63,64,63, \
+ 64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63, \
+ 64,63,64,72,64,72,64,93,64,93,64,93,92,93,92,93, \
+ 92,93,92,93,92,93,92,93,92,93,92,93,92,93,92,93, \
+ 92,93,92,93,105,93,105,93,105,93,105,93,105,105,105,108, \
+ 105,105,105,105,108,105,105,105,108,108,108,117,108,117,108,141, \
+ 140,141,140,141,140,141,140,141,140,141,140,141,140,141,140,141, \
+ 140,141,140,141,140,141,140,141,140,141,140,141,140,141,140,141, \
+ 140,141,140,141,140,141,140,141,141,153,140,141,140,141,140,140, \
+ 144,140,140,141,140,139,140,141,140,141,140,141,188,188,188,187, \
+ 188,187,188,188,188,188,188,188,188,188,188,188,188,188,188,187, \
+ 187,187,188,188,188,188,188,188,210,188,210,188,188,210,188,188, \
+ 188,188,188,188,188,188,188,188,188,188,186,188,210,188,188,187, \
+ 188,188,210,210,210,210,210,210,210,210,210,210,210,210,210,210, \
+ 210,210,210,210,210,210,210,208,210,209,210,210,210,210,210,233, \
+ 234,234,234,233,232,234,234,234,234,234,234,234,234,234,234,276, \
+ 234,276,234,276,234,276,276,276,276,276,276,276,282,276,282,276, \
+ 282,276,276,276,276,276,282,281,276,276,276,276,276,276,276,276, \
+ 276,276,276,276,276,276,282,276,282,276,282,276,282,281,282,281, \
+ 282,281,282,281,282,281,282,281,282,281,282,306,282,306,282,306, \
+ 306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, \
+ 306,372,306,371,306,372,372,372,372,372,372,371,372,372,372,372, \
+ 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, \
+ 372,371,372,372,372,372,372,372,372,372,372,372,372,372,372,372, \
+ 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, \
+ 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, \
+ 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, \
+ 372,372,372,372,372,372,372,372,426,372,426,426,426,426,426,426, \
+ 426,426,426,426,426,425,426,425,426,426,426,426,426,426,426,426, \
+ 426,426,426,426,426,424,426,426,426,426,426,426,426,426,426,426, \
+ 426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, \
+ 426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,503, \
+ 504,503,504,503,504,503,504,503,504,503,504,503,504,503,504,503, \
+ 504,503,504,503,504,503,504,503,502,503,504,503,504,503,504,503, \
+ 504,496,504,503,504,503,504,503,504,503,504,503,504,503,504,503, \
+ 504,503,504,503,504,503,504,503,504,503,568,568,568,568,568,568, \
+ 568,567,568,568,568,567,568,567,568,567,568,568,568,567,568,568, \
+ 568,568,568,568,568,567,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,567,568,568,568,568,568,567,568,567,568,568,568,567, \
+ 568,567,568,567,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,567,568,568,568,568,568,568,632,568,568,568,568,631,568,568, \
+ 568,568,568,568,568,567,568,567,568,568,568,568,632,632,632,631, \
+ 632,631,632,631,632,632,632,631,632,632,632,631,632,632,632,728, \
+ 728,727,728,727,728,728,728,727,728,727,728,727,728,727,728,728, \
+ 728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728, \
+ 728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728, \
+ 728,752,728,752,728,752,728,752,752,752,728,752,752,752,752,752, \
+ 752,752,752,752,752,752,752,752,752,752,752,752,752,751,752,751, \
+ 752,751,752,751,728,728,728,728,752,728,728,728,728,728,728,728, \
+ 728,752,832,751,832,752,832,752,832,752,832,752,832,752,832,751, \
+ 832,831,832,752,832,831,832,832,832,832,832,832,832,824,832,832, \
+ 832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832, \
+ 832,832,832,832,832,832,832,831,832,831,832,831,832,831,832,831, \
+ 832,831,832,832,832,831,832,831,832,831,832,831,832,831,832,831, \
+ 832,832,832,831,832,832,832,832,832,831,832,832,832,832,832,832 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,7,0,8,9,9, \
+ 10,10,11,11,12,13,14,13,14,15,16,15,16,17,18,17, \
+ 18,19,20,19,20,21,22,21,22,23,24,23,24,25,26,25, \
+ 26,27,28,27,28,29,30,29,30,31,32,31,32,33,34,33, \
+ 34,35,36,35,36,37,38,37,38,39,40,39,40,41,42,41, \
+ 42,43,44,43,44,47,48,47,48,47,48,47,48,51,52,51, \
+ 52,51,52,51,56,55,56,55,56,55,56,59,60,59,60,59, \
+ 60,63,60,63,64,63,64,63,68,63,68,67,68,67,68,71, \
+ 68,71,72,71,72,71,72,75,76,75,76,75,76,79,80,79, \
+ 80,79,80,75,76,83,84,79,80,79,80,79,80,83,84,83, \
+ 84,83,84,83,88,93,88,93,88,93,96,93,88,93,96,99, \
+ 96,93,92,93,92,93,96,93,96,99,96,99,96,99,98,99, \
+ 102,99,102,99,102,105,102,105,102,105,104,105,108,111,108,111, \
+ 108,117,114,117,116,117,116,117,116,117,120,117,120,123,120,123, \
+ 120,123,128,129,126,129,128,129,132,129,132,141,138,141,140,141, \
+ 140,141,140,141,140,141,140,141,140,153,152,153,152,153,152,153, \
+ 152,153,152,153,152,153,152,153,164,165,164,165,164,165,164,165, \
+ 164,165,164,165,164,177,176,177,176,177,176,177,176,177,176,177, \
+ 176,177,180,177,165,189,165,189,165,189,165,164,165,164,165,164, \
+ 165,164,177,176,177,176,177,176,177,176,177,176,177,176,177,188, \
+ 189,188,189,188,189,188,189,188,189,188,189,188,189,188,189,200, \
+ 189,200,201,200,201,200,201,200,201,200,201,212,213,212,213,212, \
+ 213,212,213,212,213,212,213,212,213,212,213,212,213,224,225,213, \
+ 225,213,225,213,225,213,225,213,225,213,237,225,237,225,237,225, \
+ 201,225,201,200,201,201,201,252,201,201,201,201,201,212,213,213, \
+ 213,213,213,212,213,213,213,212,213,213,213,213,213,213,225,225, \
+ 225,225,225,225,225,225,225,225,225,225,225,237,237,237,237,237, \
+ 237,236,237,237,237,252,252,252,252,252,252,252,252,252,252,252, \
+ 252,252,252,252,252,252,252,252,268,268,268,268,268,268,268,268, \
+ 268,266,268,268,268,268,268,268,268,268,275,268,275,268,275,268, \
+ 275,294,294,294,294,294,294,294,300,294,300,294,300,300,300,300, \
+ 300,300,300,300,300,300,318,318,318,318,318,318,318,318,318,318, \
+ 318,318,318,318,324,318,318,318,318,324,324,318,324,324,330,330, \
+ 330,330,342,342,342,342,342,342,342,342,342,342,342,342,342,342, \
+ 342,348,348,348,348,348,348,348,348,348,348,366,366,366,366,366, \
+ 366,366,366,366,372,366,372,366,372,372,366,372,372,372,372,372, \
+ 372,372,372,372,372,372,378,390,378,390,390,390,390,390,390,390, \
+ 390,390,396,390,396,390,366,390,396,396,372,396,372,396,372,396, \
+ 378,414,366,414,366,414,366,414,366,414,372,414,372,414,372,414, \
+ 372,372,372,395,396,395,396,390,390,390,390,390,390,390,390,390, \
+ 390,390,366,390,396,365,366,371,396,396,372,371,372,390,378,414, \
+ 378,414,378,414,414,414,414,414,390,414,390,389,390,389,390,395, \
+ 396,395,396,395,396,396,402,414,402,395,396,395,396,389,414,413, \
+ 414,413,414,413,414,413,414,414,420,395,420,419,420,395,396,401, \
+ 396,419,420,419,414,413,414,413,414,413,414,413,414,413,414,413, \
+ 414,413,420,419,420,419,420,419,420,419,426,425,426,437,438,437, \
+ 438,437,438,437,438,437,444,437,444,443,438,443,444,443,444,443, \
+ 444,443,444,443,444,461,462,461,462,461,462,461,462,461,462,461, \
+ 462,461,462,467,468,467,468,467,468,467,468,467,468,467,474,473, \
+ 486,485,486,485,486,485,414,485,486,485,486,491,492,491,492,519, \
+ 520,491,504,503,420,503,504,437,504,503,504,437,504,437,438,437, \
+ 520,443,444,519,520,519,520,519,520,519,520,519,520,527,520,527, \
+ 528,527,528,461,528,461,528,461,462,461,462,467,468,467,468,467, \
+ 468,551,552,551,552,551,552,551,552,551,560,551,552,551,552,551, \
+ 552,551,552,559,560,559,560,559,560,503,568,567,504,503,504,503, \
+ 504,503,504,519,520,519,520,519,520,519,520,520,520,519,520,519, \
+ 520,519,520,519,520,527,528,527,528,527,528,527,528,527,528,527, \
+ 528,535,552,551,552,551,552,551,552,552,552,551,552,551,552,551, \
+ 552,551,552,551,552,551,552,551,552,559,560,551,560,559,560,559, \
+ 560,567,568,567,568,583,568,567,584,583,584,583,584,583,584,583, \
+ 584,583,584,583,584,583,584,583,584,583,592,591,592,591,592,591, \
+ 592,591,592,591,592,615,616,519,520,615,520,519,520,615,616,615, \
+ 616,615,528,615,616,615,528,527,528,615,528,623,624,623,536,552, \
+ 552,551,552,551,552,551,552,551,552,551,552,551,552,551,552,551 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,6,7,10,11,10,11,12,13, \
+ 10,11,11,11,12,12,14,15,14,14,16,16,16,16,18,17, \
+ 22,19,22,23,22,23,26,27,26,23,30,29,26,27,26,27, \
+ 30,31,30,31,30,35,30,35,30,35,34,31,34,35,38,35, \
+ 34,36,38,39,38,39,38,43,38,40,42,43,42,44,42,43, \
+ 42,44,46,47,46,44,46,51,50,48,50,51,54,52,54,52, \
+ 50,51,54,55,58,55,54,56,58,56,62,60,58,63,58,63, \
+ 62,64,62,64,62,64,62,64,62,67,66,71,66,67,74,71, \
+ 70,67,70,71,74,72,74,75,70,76,74,79,74,75,74,79, \
+ 74,79,78,80,78,76,78,80,78,79,82,84,82,80,82,87, \
+ 86,84,86,84,86,84,86,88,90,88,90,92,90,88,94,96, \
+ 90,92,94,92,94,92,94,96,94,102,98,96,100,102,98,102, \
+ 98,104,100,102,102,104,104,102,102,102,104,104,104,104,108,112, \
+ 128,110,128,110,128,128,128,128,128,128,128,128,128,128,128,128, \
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, \
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,142,142, \
+ 142,142,140,142,144,144,144,142,144,142,140,142,140,142,142,144, \
+ 140,142,140,142,140,144,144,144,144,144,144,144,144,144,148,146, \
+ 148,160,148,150,148,158,156,158,156,160,156,158,160,160,156,160, \
+ 164,158,156,160,164,160,164,182,180,182,164,184,182,184,182,182, \
+ 180,182,182,182,182,186,184,182,180,182,184,184,184,185,182,184, \
+ 182,185,182,185,182,185,184,185,184,185,182,185,184,184,184,182, \
+ 184,185,184,186,184,185,182,182,184,184,184,184,184,184,186,185, \
+ 186,206,200,206,188,206,196,198,196,208,196,198,196,198,196,206, \
+ 200,206,208,206,196,198,200,208,200,206,200,206,200,208,216,208, \
+ 208,206,208,206,216,208,216,208,216,208,216,208,216,208,216,220, \
+ 216,210,216,220,256,220,216,220,216,224,216,222,256,250,248,254, \
+ 256,256,256,254,256,254,256,254,256,254,256,254,256,256,256,256, \
+ 256,254,256,254,256,256,256,254,256,254,256,254,256,256,256,254, \
+ 256,254,256,254,256,254,256,256,256,254,256,254,256,256,256,254, \
+ 256,254,256,256,256,254,256,254,256,254,256,256,256,254,256,254, \
+ 256,254,256,254,256,254,256,254,256,282,280,256,256,256,282,284, \
+ 282,284,282,288,280,281,282,288,282,288,282,282,280,281,280,282, \
+ 282,287,288,288,280,282,282,288,282,288,282,288,282,288,282,288, \
+ 282,284,282,288,280,288,282,288,282,284,282,288,282,288,282,288, \
+ 282,288,288,288,288,288,288,288,288,288,288,288,288,288,296,300, \
+ 296,304,296,304,298,300,296,300,296,300,312,302,296,306,312,300, \
+ 312,320,312,300,312,370,312,320,312,302,312,320,312,370,312,371, \
+ 312,371,312,369,372,371,372,371,368,370,372,370,372,370,372,370, \
+ 371,369,372,370,368,370,372,370,372,370,372,370,370,370,364,370, \
+ 371,370,372,370,370,370,372,370,372,370,372,370,370,370,372,370, \
+ 370,372,370,370,372,370,372,370,372,370,368,370,370,372,372,370, \
+ 370,370,372,370,372,372,372,370,372,370,370,366,372,370,370,370, \
+ 372,368,368,370,370,370,372,370,370,370,372,370,372,370,368,370, \
+ 372,370,372,370,369,370,372,370,372,369,372,370,372,371,372,370, \
+ 372,370,368,372,372,371,372,369,372,371,370,371,372,370,372,372, \
+ 372,370,372,372,372,372,376,416,376,416,376,416,414,416,416,420, \
+ 384,416,415,416,414,416,415,416,392,420,400,416,420,420,392,420, \
+ 400,416,416,416,416,420,416,412,416,416,416,416,418,416,414,416, \
+ 418,420,418,420,418,416,416,416,418,420,414,420,418,420,420,420, \
+ 416,416,418,420,418,418,416,416,420,416,418,416,432,420,432,420, \
+ 416,416,416,420,416,420,432,420,418,420,432,420,418,416,418,420, \
+ 420,420,432,420,420,420,432,468,464,512,432,468,432,444,432,444, \
+ 512,508,432,468,512,512,464,510,432,510,512,512,512,512,512,512, \
+ 512,512,512,512,512,508,512,508,512,512,512,508,512,510,512,512, \
+ 512,512,512,512,512,512,512,508,512,512,512,508,512,512,512,512, \
+ 512,512,512,512,512,512,512,512,512,512,512,508,512,512,512,512, \
+ 512,512,512,512,512,508,512,512,512,512,512,468,464,512,564,468, \
+ 512,564,512,512,564,512,512,512,564,508,564,508,564,503,564,508, \
+ 512,508,512,512,564,508,512,508,564,512,512,512,512,512,512,508, \
+ 512,510,512,512,512,512,512,512,512,512,512,512,512,512,512,512, \
+ 512,508,512,508,512,512,512,512,512,512,512,512,512,512,512,512, \
+ 512,512,512,512,512,512,512,512,512,564,562,564,560,512,564,564, \
+ 562,564,560,564,564,564,560,564,564,564,564,564,564,564,564,562 \
+
+#define MPFR_MUL_THRESHOLD 6 /* limbs */
+#define MPFR_SQR_THRESHOLD 8 /* limbs */
+#define MPFR_DIV_THRESHOLD 23 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 530 /* bits */
+#define MPFR_EXP_THRESHOLD 2918 /* bits */
+#define MPFR_SINCOS_THRESHOLD 28251 /* bits */
+#define MPFR_AI_THRESHOLD1 -21852 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 2256
+#define MPFR_AI_THRESHOLD3 34310
+/* Tuneup completed successfully, took 8236 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/hypot.c b/Build/source/libs/mpfr/mpfr-src/src/hypot.c
new file mode 100644
index 00000000000..ea744ea74f8
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/hypot.c
@@ -0,0 +1,194 @@
+/* mpfr_hypot -- Euclidean distance
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of hypot of x and y is done by *
+ * hypot(x,y)= sqrt(x^2+y^2) = z */
+
+int
+mpfr_hypot (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ int inexact, exact;
+ mpfr_t t, te, ti; /* auxiliary variables */
+ mpfr_prec_t N, Nz; /* size variables */
+ mpfr_prec_t Nt; /* precision of the intermediary variable */
+ mpfr_prec_t threshold;
+ mpfr_exp_t Ex, sh;
+ mpfr_uexp_t diff_exp;
+
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg y[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x,
+ mpfr_get_prec (y), mpfr_log_prec, y, rnd_mode),
+ ("z[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (z), mpfr_log_prec, z, inexact));
+
+ /* particular cases */
+ if (MPFR_ARE_SINGULAR (x, y))
+ {
+ if (MPFR_IS_INF (x) || MPFR_IS_INF (y))
+ {
+ /* Return +inf, even when the other number is NaN. */
+ MPFR_SET_INF (z);
+ MPFR_SET_POS (z);
+ MPFR_RET (0);
+ }
+ else if (MPFR_IS_NAN (x) || MPFR_IS_NAN (y))
+ {
+ MPFR_SET_NAN (z);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_ZERO (x))
+ return mpfr_abs (z, y, rnd_mode);
+ else /* y is necessarily 0 */
+ return mpfr_abs (z, x, rnd_mode);
+ }
+
+ if (mpfr_cmpabs (x, y) < 0)
+ {
+ mpfr_srcptr u;
+ u = x;
+ x = y;
+ y = u;
+ }
+
+ /* now |x| >= |y| */
+
+ Ex = MPFR_GET_EXP (x);
+ diff_exp = (mpfr_uexp_t) Ex - MPFR_GET_EXP (y);
+
+ N = MPFR_PREC (x); /* Precision of input variable */
+ Nz = MPFR_PREC (z); /* Precision of output variable */
+ threshold = (MAX (N, Nz) + (rnd_mode == MPFR_RNDN ? 1 : 0)) << 1;
+ if (rnd_mode == MPFR_RNDA)
+ rnd_mode = MPFR_RNDU; /* since the result is positive, RNDA = RNDU */
+
+ /* Is |x| a suitable approximation to the precision Nz ?
+ (see algorithms.tex for explanations) */
+ if (diff_exp > threshold)
+ /* result is |x| or |x|+ulp(|x|,Nz) */
+ {
+ if (MPFR_UNLIKELY (rnd_mode == MPFR_RNDU))
+ {
+ /* If z > abs(x), then it was already rounded up; otherwise
+ z = abs(x), and we need to add one ulp due to y. */
+ if (mpfr_abs (z, x, rnd_mode) == 0)
+ mpfr_nexttoinf (z);
+ MPFR_RET (1);
+ }
+ else /* MPFR_RNDZ, MPFR_RNDD, MPFR_RNDN */
+ {
+ if (MPFR_LIKELY (Nz >= N))
+ {
+ mpfr_abs (z, x, rnd_mode); /* exact */
+ MPFR_RET (-1);
+ }
+ else
+ {
+ MPFR_SET_EXP (z, Ex);
+ MPFR_SET_SIGN (z, 1);
+ MPFR_RNDRAW_GEN (inexact, z, MPFR_MANT (x), N, rnd_mode, 1,
+ goto addoneulp,
+ if (MPFR_UNLIKELY (++ MPFR_EXP (z) >
+ __gmpfr_emax))
+ return mpfr_overflow (z, rnd_mode, 1);
+ );
+
+ if (MPFR_UNLIKELY (inexact == 0))
+ inexact = -1;
+ MPFR_RET (inexact);
+ }
+ }
+ }
+
+ /* General case */
+
+ N = MAX (MPFR_PREC (x), MPFR_PREC (y));
+
+ /* working precision */
+ Nt = Nz + MPFR_INT_CEIL_LOG2 (Nz) + 4;
+
+ mpfr_init2 (t, Nt);
+ mpfr_init2 (te, Nt);
+ mpfr_init2 (ti, Nt);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Scale x and y to avoid overflow/underflow in x^2 and overflow in y^2
+ (as |x| >= |y|). The scaling of y can underflow only when the target
+ precision is huge, otherwise the case would already have been handled
+ by the diff_exp > threshold code. */
+ sh = mpfr_get_emax () / 2 - Ex - 1;
+
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ mpfr_prec_t err;
+
+ exact = mpfr_mul_2si (te, x, sh, MPFR_RNDZ);
+ exact |= mpfr_mul_2si (ti, y, sh, MPFR_RNDZ);
+ exact |= mpfr_sqr (te, te, MPFR_RNDZ);
+ /* Use fma in order to avoid underflow when diff_exp<=MPFR_EMAX_MAX-2 */
+ exact |= mpfr_fma (t, ti, ti, te, MPFR_RNDZ);
+ exact |= mpfr_sqrt (t, t, MPFR_RNDZ);
+
+ err = Nt < N ? 4 : 2;
+ if (MPFR_LIKELY (exact == 0
+ || MPFR_CAN_ROUND (t, Nt-err, Nz, rnd_mode)))
+ break;
+
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ mpfr_set_prec (te, Nt);
+ mpfr_set_prec (ti, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ MPFR_BLOCK (flags, inexact = mpfr_div_2si (z, t, sh, rnd_mode));
+ MPFR_ASSERTD (exact == 0 || inexact != 0);
+
+ mpfr_clear (t);
+ mpfr_clear (ti);
+ mpfr_clear (te);
+
+ /*
+ exact inexact
+ 0 0 result is exact, ternary flag is 0
+ 0 non zero t is exact, ternary flag given by inexact
+ 1 0 impossible (see above)
+ 1 non zero ternary flag given by inexact
+ */
+
+ MPFR_SAVE_EXPO_FREE (expo);
+
+ if (MPFR_OVERFLOW (flags))
+ mpfr_set_overflow ();
+ /* hypot(x,y) >= |x|, thus underflow is not possible. */
+
+ return mpfr_check_range (z, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ia64/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/ia64/mparam.h
new file mode 100644
index 00000000000..4297632dbb8
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ia64/mparam.h
@@ -0,0 +1,233 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.4.5 */
+/* gcc60.fsffrance.org (Madison) with gmp 5.0.2 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, \
+ -1,-1,14,16,16,17,18,19,20,20,22,22,20,21,22,23, \
+ 24,23,24,25,24,25,30,30,30,31,32,32,32,33,32,33, \
+ 32,33,34,37,36,37,38,35,36,40,36,39,40,41,40,43, \
+ 48,48,42,43,48,41,48,50,48,48,48,50,48,60,48,50, \
+ 60,64,60,60,60,60,60,66,64,64,64,63,64,65,68,64, \
+ 64,64,64,63,64,64,68,68,64,68,64,64,64,64,76,76, \
+ 80,76,76,72,72,80,76,76,76,82,80,80,80,80,80,80, \
+ 84,93,88,96,96,96,90,99,96,93,96,99,96,93,96,99, \
+ 96,96,102,105,108,99,108,105,108,105,108,111,108,111,108,111, \
+ 108,117,120,117,120,117,117,117,120,120,120,117,120,120,120,123, \
+ 120,117,120,123,120,120,126,141,120,141,141,141,140,141,144,141, \
+ 140,141,141,141,144,141,144,147,144,141,156,141,140,141,156,165, \
+ 164,165,156,165,164,165,165,165,164,165,164,165,164,165,165,165, \
+ 164,165,164,165,168,177,180,177,165,177,177,177,176,177,180,177, \
+ 180,177,180,177,176,177,180,165,168,189,180,189,192,189,186,189, \
+ 188,189,176,177,192,189,180,177,192,189,180,201,192,177,192,189, \
+ 192,189,189,189,188,213,212,213,192,213,200,201,192,213,200,201, \
+ 212,213,192,201,200,213,212,213,212,213,200,213,212,213,210,201, \
+ 212,213,236,212,212,213,212,213,216,213,236,213,236,235,236,252, \
+ 236,225,236,251,236,233,236,235,236,240,252,252,236,235,252,252, \
+ 236,249,252,251,252,252,252,251,256,256,256,251,252,251,252,251, \
+ 252,252,252,267,268,265,268,267,268,265,268,267,268,265,268,267, \
+ 268,267,268,283,268,281,284,283,284,281,268,283,284,281,284,283, \
+ 284,284,284,283,284,283,284,283,284,283,284,283,284,281,300,284, \
+ 284,284,300,300,300,316,284,315,284,313,300,315,316,284,316,315, \
+ 316,299,300,284,316,284,316,315,300,315,316,315,316,300,316,316, \
+ 316,313,316,315,316,313,316,315,316,316,316,315,320,316,316,315, \
+ 354,354,354,315,354,354,354,354,354,354,354,354,354,353,378,378, \
+ 354,354,354,378,354,354,354,354,354,377,378,354,354,377,378,378, \
+ 378,378,378,378,378,377,378,378,378,378,378,378,378,377,378,378, \
+ 378,378,378,378,378,377,378,378,378,378,378,378,378,378,378,378, \
+ 378,377,378,378,378,378,378,402,378,378,378,378,402,378,378,378, \
+ 402,426,426,426,426,402,426,426,402,402,426,426,402,402,426,426, \
+ 426,426,426,426,426,425,426,426,426,402,426,426,426,426,426,426, \
+ 426,426,426,426,426,426,426,426,472,472,426,426,472,426,472,472, \
+ 472,426,426,426,472,471,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,472,472,472,472,472,472,472,472,472,504,504,472,472, \
+ 504,504,504,472,472,472,472,504,472,472,472,472,504,472,504,504, \
+ 504,504,504,504,504,504,536,504,504,504,504,504,504,504,504,504, \
+ 504,504,536,535,536,504,536,536,536,504,536,536,504,504,504,504, \
+ 504,504,536,536,536,536,536,536,536,536,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,536,536,536,536,536,568,536,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,600,600,568,600,600,600,600,568,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,599,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,599,600,600,600,600,600,600,632,600, \
+ 600,600,600,600,632,600,600,600,632,600,632,632,632,632,632,632, \
+ 632,632,632,632,632,632,632,632,632,600,632,600,632,632,632,600, \
+ 664,632,664,664,632,632,664,664,664,664,632,664,664,632,664,664, \
+ 664,632,664,664,664,664,664,664,664,664,664,664,631,632,632,632, \
+ 664,632,664,664,664,664,663,664,664,664,736,664,736,664,664,664, \
+ 736,736,736,664,736,735,736,735,736,736,736,735,736,735,736,735, \
+ 736,736,664,735,736,736,736,736,736,735,736,735,736,735,736,736, \
+ 736,736,736,735,736,736,736,735,736,736,736,735,736,735,736,736, \
+ 736,736,760,760,736,760,760,760,760,760,784,760,760,783,784,760, \
+ 760,760,760,760,784,760,760,760,760,784,784,784,784,784,784,784, \
+ 736,760,784,784,784,784,784,783,784,783,784,783,784,783,784,784, \
+ 784,760,784,784,784,784,784,784,784,784,784,784,784,784,784,760, \
+ 784,784,784,784,784,783,784,831,784,784,784,784,784,784,784,831, \
+ 832,784,832,831,784,831,832,831,832,784,784,831,832,783,784,831, \
+ 832,784,832,831,832,784,856,856,856,856,856,856,856,856,856,856 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,0,-1,-1,-1,6,-1,8,8,8,10,10, \
+ 10,12,11,11,12,12,14,14,14,14,16,15,16,16,18,19, \
+ 18,18,19,20,20,20,22,22,22,22,24,24,24,28,26,30, \
+ 28,32,30,28,28,28,30,30,30,30,32,34,34,34,36,36, \
+ 36,38,38,40,36,38,38,40,38,42,42,44,44,44,42,44, \
+ 44,46,46,48,44,50,46,52,48,54,50,52,48,54,50,52, \
+ 54,50,56,52,56,52,58,56,56,56,58,58,60,60,62,62, \
+ 60,64,62,62,68,68,66,66,64,68,66,70,72,72,66,68, \
+ 68,70,70,70,72,74,74,74,80,78,78,76,80,80,82,84, \
+ 84,82,86,80,82,82,84,84,86,86,88,92,88,90,86,92, \
+ 84,94,86,90,88,92,90,94,86,86,88,98,92,88,90,90, \
+ 94,92,92,94,96,92,94,94,96,100,98,98,96,100,102,102, \
+ 100,98,102,100,100,102,102,102,104,106,106,108,108,104,106,110, \
+ 108,106,114,108,108,124,110,110,116,110,114,116,112,114,114,128, \
+ 128,114,118,120,128,128,118,120,132,132,132,120,120,128,124,124, \
+ 128,144,124,128,128,128,140,136,132,132,128,136,136,128,136,140, \
+ 132,140,166,136,160,161,140,140,136,140,166,154,144,168,166,154, \
+ 154,155,142,142,160,167,166,166,148,166,178,167,160,154,154,179, \
+ 172,167,167,154,156,148,156,160,172,172,166,166,167,166,154,155, \
+ 168,167,166,162,172,168,167,178,166,178,167,178,180,174,173,184, \
+ 180,190,178,172,178,178,190,178,178,190,191,184,178,190,190,172, \
+ 191,184,178,192,180,180,191,184,192,190,190,190,184,190,190,190, \
+ 192,190,214,203,204,202,190,214,202,190,190,190,204,191,190,208, \
+ 204,216,196,203,216,208,215,212,209,214,214,216,215,220,215,216, \
+ 214,216,216,214,220,216,214,216,220,214,214,240,228,226,226,232, \
+ 226,234,228,238,233,238,226,226,232,220,238,240,244,239,239,214, \
+ 240,232,238,250,227,232,250,250,233,238,240,226,232,234,238,226, \
+ 252,232,238,244,239,240,238,238,239,240,238,262,246,256,250,246, \
+ 252,244,262,252,252,262,251,262,262,264,275,262,264,258,233,262, \
+ 268,234,263,236,263,240,239,270,238,244,239,244,240,240,249,244, \
+ 243,244,245,252,249,244,251,250,257,258,255,250,262,264,257,258, \
+ 250,262,262,258,257,262,262,274,274,262,273,262,263,274,275,274, \
+ 275,264,263,276,274,268,275,288,281,286,288,288,264,274,281,274, \
+ 295,274,296,300,293,274,275,296,295,288,292,280,311,312,300,304, \
+ 307,302,300,308,312,304,315,314,299,316,320,316,303,320,318,320, \
+ 315,312,320,320,318,320,307,336,316,334,313,332,327,336,312,334, \
+ 316,320,313,340,316,320,315,344,332,315,332,315,316,328,335,318, \
+ 332,320,331,308,332,331,326,315,316,331,345,332,347,344,347,347, \
+ 315,329,335,331,348,345,327,320,331,334,348,352,378,378,334,378, \
+ 351,390,332,378,348,390,390,378,377,390,377,378,390,377,329,402, \
+ 356,390,402,378,378,390,378,390,378,390,401,378,378,390,390,414, \
+ 388,426,401,426,378,401,378,426,389,390,402,426,402,402,426,414, \
+ 402,414,402,426,425,426,437,414,402,438,402,426,426,401,426,426, \
+ 426,390,426,390,426,425,426,414,426,426,402,426,426,426,426,426, \
+ 426,438,426,426,426,426,438,414,402,438,450,426,426,402,426,438, \
+ 426,426,426,426,437,438,426,426,438,438,450,426,426,438,426,426, \
+ 437,438,426,426,425,426,438,460,474,438,449,438,426,474,426,474, \
+ 425,438,426,425,486,462,438,474,438,462,450,474,426,426,426,474, \
+ 438,474,462,474,450,474,438,474,473,438,474,474,474,536,426,474, \
+ 486,486,474,486,474,474,536,474,474,536,474,474,474,536,462,536, \
+ 486,536,474,536,536,536,536,536,536,536,536,536,474,536,536,536, \
+ 535,536,535,536,536,536,536,536,536,536,536,536,536,536,536,536, \
+ 536,536,535,535,536,536,536,535,536,536,535,535,536,536,536,536, \
+ 536,536,536,536,536,552,536,535,536,535,536,535,536,536,536,535, \
+ 536,536,536,536,536,584,536,536,536,535,536,535,536,536,568,535, \
+ 552,536,568,536,536,584,536,535,536,536,536,536,536,536,600,535, \
+ 536,536,536,584,536,584,536,535,536,536,536,535,536,600,600,535, \
+ 536,600,568,536,568,568,536,584,536,536,536,536,600,584,567,584, \
+ 600,584,583,599,584,584,600,584,600,568,600,599,600,600,600,584, \
+ 616,600,600,600,600,600,600,599,600,600,600,600,600,600,600,599, \
+ 600,600,615,599,616,616,584,599,600,616,600,600,600,600,600,599, \
+ 616,616,600,600,616,616,600,600,600,616,600,599,600,600,600,599, \
+ 600,616,616,599,616,616,616,599,616,616,616,599,616,616,600,599, \
+ 616,616,600,616,616,616,632,648,664,648,616,648,600,600,632,664 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,13, \
+ 16,17,18,19,18,21,22,23,22,25,17,17,20,23,25,22, \
+ 24,25,21,21,24,29,29,31,28,28,26,31,30,28,29,30, \
+ 31,37,38,37,36,40,37,37,40,37,41,37,36,39,38,46, \
+ 42,43,42,43,40,37,42,43,44,49,42,43,40,45,46,47, \
+ 49,49,50,43,44,45,50,46,54,53,53,55,50,51,50,50, \
+ 54,56,54,52,55,53,57,55,56,57,58,58,56,62,66,59, \
+ 62,65,64,59,60,65,66,77,76,73,70,73,68,65,72,73, \
+ 76,69,72,71,70,81,72,85,76,77,74,77,80,81,76,77, \
+ 84,85,84,79,82,81,84,77,84,83,80,85,82,81,96,83, \
+ 96,85,85,91,96,84,92,95,92,100,92,96,88,98,96,99, \
+ 96,96,100,100,96,95,100,100,102,96,100,95,96,98,100,99, \
+ 109,100,100,100,104,112,104,117,104,109,120,117,108,110,124,109, \
+ 112,114,112,115,120,120,112,117,118,116,116,115,112,120,124,127, \
+ 128,127,120,116,120,127,125,129,120,123,120,131,131,129,132,136, \
+ 132,125,136,131,136,125,144,144,136,144,144,147,144,128,152,144, \
+ 148,149,132,144,150,145,147,145,152,151,144,143,152,164,152,152, \
+ 152,152,152,149,152,159,152,152,152,159,144,155,160,144,164,160, \
+ 152,152,168,163,148,160,168,160,155,164,170,152,152,160,160,164, \
+ 168,160,166,168,168,170,168,162,164,168,164,168,168,160,163,176, \
+ 168,166,176,167,168,168,169,176,168,190,186,176,192,171,184,192, \
+ 192,190,192,186,176,172,176,176,176,192,192,186,192,192,198,191, \
+ 192,198,192,198,192,192,192,216,192,192,192,191,192,191,216,198, \
+ 198,198,192,192,192,198,197,192,192,192,198,198,208,224,208,198, \
+ 198,216,198,198,216,208,216,208,216,222,216,215,208,209,234,224, \
+ 240,221,234,216,216,240,232,233,216,222,233,232,216,239,240,218, \
+ 224,234,240,240,240,240,224,232,240,240,216,240,224,233,230,240, \
+ 224,233,240,234,240,234,224,232,240,233,233,240,230,230,234,240, \
+ 240,232,240,240,240,228,240,240,235,240,240,232,240,238,240,240, \
+ 240,240,240,240,240,244,246,240,256,240,240,240,244,288,250,250, \
+ 256,288,288,256,246,282,288,288,256,288,256,288,248,293,254,288, \
+ 288,256,264,256,257,265,288,257,255,288,288,288,256,288,288,281, \
+ 292,280,288,292,288,287,280,288,287,280,288,282,288,294,288,288, \
+ 288,288,288,288,288,288,288,288,294,304,288,304,288,288,288,292, \
+ 294,288,288,288,280,294,292,294,292,328,288,282,328,288,288,291, \
+ 288,288,288,288,300,288,317,304,288,329,304,292,304,320,304,318, \
+ 327,325,324,326,304,312,336,304,329,320,328,330,328,330,336,320, \
+ 328,327,330,318,316,319,330,336,328,336,352,336,320,326,352,320, \
+ 336,325,326,324,342,329,327,328,336,336,336,336,336,328,352,330, \
+ 320,328,336,326,320,335,335,326,352,352,342,336,352,326,336,336, \
+ 336,352,329,328,342,328,342,336,326,336,384,352,384,329,352,336, \
+ 384,352,384,352,336,336,334,384,384,384,384,384,384,352,351,384, \
+ 384,384,383,372,384,372,384,384,352,368,384,384,382,396,384,372, \
+ 384,384,352,384,384,383,384,384,384,384,384,384,384,384,384,384, \
+ 372,384,384,396,384,384,384,384,384,384,384,384,384,384,384,384, \
+ 384,396,384,384,384,384,384,372,384,384,384,396,384,384,384,432, \
+ 384,383,384,384,384,396,384,384,384,396,382,384,384,396,394,384, \
+ 384,384,384,383,392,396,400,384,384,401,384,384,396,432,396,432, \
+ 392,408,432,396,396,396,416,396,416,432,448,428,424,420,394,395, \
+ 432,432,432,396,432,432,432,432,432,426,432,432,448,448,444,464, \
+ 416,440,432,425,432,430,448,432,432,432,432,432,432,432,442,432, \
+ 432,432,432,447,472,432,432,480,432,468,480,480,448,465,450,432, \
+ 480,465,448,464,480,448,472,467,468,480,438,479,464,465,468,472, \
+ 468,469,480,448,480,480,464,480,468,469,464,467,468,432,472,480, \
+ 464,480,472,468,480,468,472,472,468,477,480,471,472,467,448,480, \
+ 448,496,488,464,470,480,480,480,480,469,472,448,480,479,480,512, \
+ 492,477,480,469,480,464,480,480,464,480,500,480,472,480,472,479, \
+ 488,468,500,480,512,472,504,467,480,472,480,480,464,469,480,480, \
+ 480,472,496,500,480,480,480,480,472,480,480,496,480,576,480,480, \
+ 480,497,576,500,480,516,504,504,498,480,504,480,504,480,504,576, \
+ 512,496,512,508,576,529,512,500,576,534,534,504,512,515,528,576, \
+ 560,528,576,512,528,513,512,528,528,576,576,496,528,576,576,511, \
+ 512,504,576,576,560,512,576,504,576,576,576,576,564,576,564,576, \
+ 576,562,576,576,576,576,576,560,576,576,564,528,532,576,576,576 \
+
+#define MPFR_MUL_THRESHOLD 26 /* limbs */
+#define MPFR_SQR_THRESHOLD 19 /* limbs */
+#define MPFR_DIV_THRESHOLD 44 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 1092 /* bits */
+#define MPFR_EXP_THRESHOLD 5435 /* bits */
+#define MPFR_SINCOS_THRESHOLD 24855 /* bits */
+#define MPFR_AI_THRESHOLD1 -9637 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 922
+#define MPFR_AI_THRESHOLD3 16031
+/* Tuneup completed successfully, took 1058 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ieee_floats.h b/Build/source/libs/mpfr/mpfr-src/src/ieee_floats.h
new file mode 100644
index 00000000000..0cb44926ada
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ieee_floats.h
@@ -0,0 +1,80 @@
+/* auxiliary data to generate special IEEE floats (NaN, +Inf, -Inf)
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* "double" NaN and infinities are written as explicit bytes to be sure of
+ getting what we want, and to be sure of not depending on libm.
+
+ Could use 4-byte "float" values and let the code convert them, but it
+ seems more direct to give exactly what we want. Certainly for gcc 3.0.2
+ on alphaev56-unknown-freebsd4.3 the NaN must be 8-bytes, since that
+ compiler+system was seen incorrectly converting from a "float" NaN. */
+
+#if _GMP_IEEE_FLOATS
+
+/* The "d" field guarantees alignment to a suitable boundary for a double.
+ Could use a union instead, if we checked the compiler supports union
+ initializers. */
+union dbl_bytes {
+ unsigned char b[8];
+ double d;
+};
+
+#define MPFR_DBL_INFP (dbl_infp.d)
+#define MPFR_DBL_INFM (dbl_infm.d)
+#define MPFR_DBL_NAN (dbl_nan.d)
+
+/* Warning! dbl_nan.d is not consistently the same NaN on all the
+ processors: it can be either a qNaN (quiet) or sNaN (signaling).
+ Processors are known to differ... */
+
+#if HAVE_DOUBLE_IEEE_LITTLE_ENDIAN
+static const union dbl_bytes dbl_infp =
+ { { 0, 0, 0, 0, 0, 0, 0xF0, 0x7F } };
+static const union dbl_bytes dbl_infm =
+ { { 0, 0, 0, 0, 0, 0, 0xF0, 0xFF } };
+static const union dbl_bytes dbl_nan =
+ { { 0, 0, 0, 0, 0, 0, 0xF8, 0x7F } };
+#endif
+#if HAVE_DOUBLE_IEEE_LITTLE_SWAPPED
+static const union dbl_bytes dbl_infp =
+ { { 0, 0, 0xF0, 0x7F, 0, 0, 0, 0 } };
+static const union dbl_bytes dbl_infm =
+ { { 0, 0, 0xF0, 0xFF, 0, 0, 0, 0 } };
+static const union dbl_bytes dbl_nan =
+ { { 0, 0, 0xF8, 0x7F, 0, 0, 0, 0 } };
+#endif
+#if HAVE_DOUBLE_IEEE_BIG_ENDIAN
+static const union dbl_bytes dbl_infp =
+ { { 0x7F, 0xF0, 0, 0, 0, 0, 0, 0 } };
+static const union dbl_bytes dbl_infm =
+ { { 0xFF, 0xF0, 0, 0, 0, 0, 0, 0 } };
+static const union dbl_bytes dbl_nan =
+ { { 0x7F, 0xF8, 0, 0, 0, 0, 0, 0 } };
+#endif
+
+#else /* _GMP_IEEE_FLOATS */
+
+#define MPFR_DBL_INFP DBL_POS_INF
+#define MPFR_DBL_INFM DBL_NEG_INF
+#define MPFR_DBL_NAN DBL_NAN
+
+#endif /* _GMP_IEEE_FLOATS */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/init.c b/Build/source/libs/mpfr/mpfr-src/src/init.c
new file mode 100644
index 00000000000..23fa0f30d3e
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/init.c
@@ -0,0 +1,29 @@
+/* mpfr_init -- initialize a floating-point number
+
+Copyright 1999, 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_init (mpfr_ptr x)
+{
+ mpfr_init2 (x, __gmpfr_default_fp_bit_precision);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/init2.c b/Build/source/libs/mpfr/mpfr-src/src/init2.c
new file mode 100644
index 00000000000..0fb7dc76ae3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/init2.c
@@ -0,0 +1,69 @@
+/* mpfr_init2 -- initialize a floating-point number with given precision
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_init2 (mpfr_ptr x, mpfr_prec_t p)
+{
+ mp_size_t xsize;
+ mpfr_limb_ptr tmp;
+
+ /* Check if we can represent the number of limbs
+ * associated to the maximum of mpfr_prec_t*/
+ MPFR_ASSERTN( MP_SIZE_T_MAX >= (MPFR_PREC_MAX/MPFR_BYTES_PER_MP_LIMB) );
+
+ /* Check for correct GMP_NUMB_BITS and MPFR_BYTES_PER_MP_LIMB */
+ MPFR_ASSERTN( GMP_NUMB_BITS == MPFR_BYTES_PER_MP_LIMB * CHAR_BIT
+ && sizeof(mp_limb_t) == MPFR_BYTES_PER_MP_LIMB );
+
+ MPFR_ASSERTN (mp_bits_per_limb == GMP_NUMB_BITS);
+
+ /* Check for correct EXP NAN, ZERO & INF in both mpfr.h and mpfr-impl.h */
+ MPFR_ASSERTN( __MPFR_EXP_NAN == MPFR_EXP_NAN );
+ MPFR_ASSERTN( __MPFR_EXP_ZERO == MPFR_EXP_ZERO );
+ MPFR_ASSERTN( __MPFR_EXP_INF == MPFR_EXP_INF );
+
+ MPFR_ASSERTN( MPFR_EMAX_MAX <= (MPFR_EXP_MAX >> 1) );
+ MPFR_ASSERTN( MPFR_EMIN_MIN >= -(MPFR_EXP_MAX >> 1) );
+
+ /* p=1 is not allowed since the rounding to nearest even rule requires at
+ least two bits of mantissa: the neighbours of 3/2 are 1*2^0 and 1*2^1,
+ which both have an odd mantissa */
+ MPFR_ASSERTN(p >= MPFR_PREC_MIN && p <= MPFR_PREC_MAX);
+
+ xsize = MPFR_PREC2LIMBS (p);
+ tmp = (mpfr_limb_ptr) (*__gmp_allocate_func)(MPFR_MALLOC_SIZE(xsize));
+
+ MPFR_PREC(x) = p; /* Set prec */
+ MPFR_EXP (x) = MPFR_EXP_INVALID; /* make sure that the exp field has a
+ valid value in the C point of view */
+ MPFR_SET_POS(x); /* Set a sign */
+ MPFR_SET_MANT_PTR(x, tmp); /* Set Mantissa ptr */
+ MPFR_SET_ALLOC_SIZE(x, xsize); /* Fix alloc size of Mantissa */
+ MPFR_SET_NAN(x); /* initializes to NaN */
+}
+
+#ifdef MPFR_USE_OWN_MPFR_TMP_ALLOC
+static unsigned char mpfr_stack_tab[8000000];
+unsigned char *mpfr_stack = mpfr_stack_tab;
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/inits.c b/Build/source/libs/mpfr/mpfr-src/src/inits.c
new file mode 100644
index 00000000000..8b761b842d9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/inits.c
@@ -0,0 +1,62 @@
+/* mpfr_inits -- initialize several floating-point numbers
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#undef HAVE_STDARG
+#include "config.h" /* for a build within gmp */
+#endif
+
+#if HAVE_STDARG
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
+
+#include "mpfr-impl.h"
+
+/* Since it uses "...", we need an explicit support for K&R */
+
+void
+#if HAVE_STDARG
+mpfr_inits (mpfr_ptr x, ...)
+#else
+mpfr_inits (va_alist)
+ va_dcl
+#endif
+{
+ va_list arg;
+
+#if HAVE_STDARG
+ va_start (arg, x);
+#else
+ mpfr_ptr x;
+ va_start(arg);
+ x = va_arg (arg, mpfr_ptr);
+#endif
+
+ while (x != 0)
+ {
+ mpfr_init (x);
+ x = (mpfr_ptr) va_arg (arg, mpfr_ptr);
+ }
+ va_end (arg);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/inits2.c b/Build/source/libs/mpfr/mpfr-src/src/inits2.c
new file mode 100644
index 00000000000..9e5af2b84d5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/inits2.c
@@ -0,0 +1,66 @@
+/* mpfr_inits2 -- initialize several floating-point numbers with given
+ precision
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#undef HAVE_STDARG
+#include "config.h" /* for a build within gmp */
+#endif
+
+#if HAVE_STDARG
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
+
+#include "mpfr-impl.h"
+
+/*
+ * Contrary to mpfr_init2, mpfr_prec_t p is the first argument
+ */
+
+/* Explicit support for K&R compiler */
+void
+#if HAVE_STDARG
+mpfr_inits2 (mpfr_prec_t p, mpfr_ptr x, ...)
+#else
+mpfr_inits2 (va_alist)
+ va_dcl
+#endif
+{
+ va_list arg;
+#if HAVE_STDARG
+ va_start (arg, x);
+#else
+ mpfr_prec_t p;
+ mpfr_ptr x;
+ va_start(arg);
+ p = va_arg (arg, mpfr_prec_t);
+ x = va_arg (arg, mpfr_ptr);
+#endif
+ while (x != 0)
+ {
+ mpfr_init2 (x, p);
+ x = (mpfr_ptr) va_arg (arg, mpfr_ptr);
+ }
+ va_end (arg);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/inp_str.c b/Build/source/libs/mpfr/mpfr-src/src/inp_str.c
new file mode 100644
index 00000000000..c46276f0722
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/inp_str.c
@@ -0,0 +1,89 @@
+/* mpfr_inp_str -- input a number in base BASE from stdio stream STREAM
+ and store the result in ROP
+
+Copyright 1999, 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <ctype.h>
+
+#include "mpfr-impl.h"
+
+/* The original version of this function came from GMP's mpf/inp_str.c;
+ it has been adapted for MPFR. */
+
+size_t
+mpfr_inp_str (mpfr_ptr rop, FILE *stream, int base, mpfr_rnd_t rnd_mode)
+{
+ unsigned char *str;
+ size_t alloc_size, str_size;
+ int c;
+ int retval;
+ size_t nread;
+
+ if (stream == NULL)
+ stream = stdin;
+
+ alloc_size = 100;
+ str = (unsigned char *) (*__gmp_allocate_func) (alloc_size);
+ str_size = 0;
+ nread = 0;
+
+ /* Skip whitespace. */
+ do
+ {
+ c = getc (stream);
+ nread++;
+ }
+ while (isspace (c));
+
+ /* number of characters read is nread */
+
+ for (;;)
+ {
+ if (str_size >= alloc_size)
+ {
+ size_t old_alloc_size = alloc_size;
+ alloc_size = alloc_size * 3 / 2;
+ str = (unsigned char *)
+ (*__gmp_reallocate_func) (str, old_alloc_size, alloc_size);
+ }
+ if (c == EOF || isspace (c))
+ break;
+ str[str_size++] = (unsigned char) c;
+ c = getc (stream);
+ }
+ ungetc (c, stream);
+
+ /* number of characters read is nread + str_size - 1 */
+
+ /* we can exit the for loop only by the break instruction,
+ then necessarily str_size >= alloc_size was checked, so
+ now str_size < alloc_size */
+
+ str[str_size] = '\0';
+
+ retval = mpfr_set_str (rop, (char *) str, base, rnd_mode);
+ (*__gmp_free_func) (str, alloc_size);
+
+ if (retval == -1)
+ return 0; /* error */
+
+ return str_size + nread - 1;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/int_ceil_log2.c b/Build/source/libs/mpfr/mpfr-src/src/int_ceil_log2.c
new file mode 100644
index 00000000000..13610570c0c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/int_ceil_log2.c
@@ -0,0 +1,42 @@
+/* __gmpfr_int_ceil_log2 -- Integer ceil of log2(x)
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H /* for count_leading_zeros */
+#include "mpfr-impl.h"
+
+int
+__gmpfr_int_ceil_log2 (unsigned long n)
+{
+ if (MPFR_UNLIKELY (n == 1))
+ return 0;
+ else
+ {
+ int b;
+ mp_limb_t limb;
+
+ MPFR_ASSERTN (n > 1);
+ limb = n - 1;
+ MPFR_ASSERTN (limb == n - 1);
+ count_leading_zeros (b, limb);
+ return GMP_NUMB_BITS - b;
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/isinf.c b/Build/source/libs/mpfr/mpfr-src/src/isinf.c
new file mode 100644
index 00000000000..ee588e9c98f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/isinf.c
@@ -0,0 +1,29 @@
+/* mpfr_inf_p -- check for infinities
+
+Copyright 2000-2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+(mpfr_inf_p) (mpfr_srcptr x)
+{
+ return MPFR_IS_INF(x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/isinteger.c b/Build/source/libs/mpfr/mpfr-src/src/isinteger.c
new file mode 100644
index 00000000000..335babff4a8
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/isinteger.c
@@ -0,0 +1,59 @@
+/* mpfr_integer_p -- test if a mpfr variable is integer.
+
+Copyright 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#include "mpfr-impl.h"
+
+int
+mpfr_integer_p (mpfr_srcptr x)
+{
+ mpfr_exp_t expo;
+ mpfr_prec_t prec;
+ mp_size_t xn;
+ mp_limb_t *xp;
+
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(x)))
+ return (MPFR_IS_ZERO(x));
+
+ expo = MPFR_GET_EXP (x);
+ if (expo <= 0)
+ return 0;
+
+ prec = MPFR_PREC(x);
+ if ((mpfr_uexp_t) expo >= (mpfr_uexp_t) prec)
+ return 1;
+
+ /* 0 < expo < prec */
+
+ xn = (mp_size_t) ((prec - 1) / GMP_NUMB_BITS); /* index of last limb */
+ xn -= (mp_size_t) (expo / GMP_NUMB_BITS);
+ /* now the index of the last limb containing bits of the fractional part */
+
+ xp = MPFR_MANT(x);
+ MPFR_ASSERTN(xn >= 0);
+ if (xp[xn] << (expo % GMP_NUMB_BITS) != 0)
+ return 0;
+ while (--xn >= 0)
+ if (xp[xn] != 0)
+ return 0;
+ return 1;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/isnan.c b/Build/source/libs/mpfr/mpfr-src/src/isnan.c
new file mode 100644
index 00000000000..e125ff9a1dc
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/isnan.c
@@ -0,0 +1,29 @@
+/* mpfr_nan_p -- check for NaN
+
+Copyright 2000-2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+(mpfr_nan_p) (mpfr_srcptr x)
+{
+ return MPFR_IS_NAN (x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/isnum.c b/Build/source/libs/mpfr/mpfr-src/src/isnum.c
new file mode 100644
index 00000000000..35ba820f22f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/isnum.c
@@ -0,0 +1,29 @@
+/* mpfr_number_p -- check for ordinary numbers
+
+Copyright 2000-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_number_p (mpfr_srcptr x)
+{
+ return MPFR_IS_FP(x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/isqrt.c b/Build/source/libs/mpfr/mpfr-src/src/isqrt.c
new file mode 100644
index 00000000000..86910e8a538
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/isqrt.c
@@ -0,0 +1,84 @@
+/* __gmpfr_isqrt && __gmpfr_cuberoot -- Integer square root and cube root
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* returns floor(sqrt(n)) */
+unsigned long
+__gmpfr_isqrt (unsigned long n)
+{
+ unsigned long i, s;
+
+ /* First find an approximation to floor(sqrt(n)) of the form 2^k. */
+ i = n;
+ s = 1;
+ while (i >= 2)
+ {
+ i >>= 2;
+ s <<= 1;
+ }
+
+ do
+ {
+ s = (s + n / s) / 2;
+ }
+ while (!(s*s <= n && (s*s > s*(s+2) || n <= s*(s+2))));
+ /* Short explanation: As mathematically s*(s+2) < 2*ULONG_MAX,
+ the condition s*s > s*(s+2) is evaluated as true when s*(s+2)
+ "overflows" but not s*s. This implies that mathematically, one
+ has s*s <= n <= s*(s+2). If s*s "overflows", this means that n
+ is "large" and the inequality n <= s*(s+2) cannot be satisfied. */
+ return s;
+}
+
+/* returns floor(n^(1/3)) */
+unsigned long
+__gmpfr_cuberoot (unsigned long n)
+{
+ unsigned long i, s;
+
+ /* First find an approximation to floor(cbrt(n)) of the form 2^k. */
+ i = n;
+ s = 1;
+ while (i >= 4)
+ {
+ i >>= 3;
+ s <<= 1;
+ }
+
+ /* Improve the approximation (this is necessary if n is large, so that
+ mathematically (s+1)*(s+1)*(s+1) isn't much larger than ULONG_MAX). */
+ if (n >= 256)
+ {
+ s = (2 * s + n / (s * s)) / 3;
+ s = (2 * s + n / (s * s)) / 3;
+ s = (2 * s + n / (s * s)) / 3;
+ }
+
+ do
+ {
+ s = (2 * s + n / (s * s)) / 3;
+ }
+ while (!(s*s*s <= n && (s*s*s > (s+1)*(s+1)*(s+1) ||
+ n < (s+1)*(s+1)*(s+1))));
+ return s;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/isregular.c b/Build/source/libs/mpfr/mpfr-src/src/isregular.c
new file mode 100644
index 00000000000..d45a7c32531
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/isregular.c
@@ -0,0 +1,29 @@
+/* mpfr_regular_p -- check for regular number (neither NaN, Inf or zero)
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+(mpfr_regular_p) (mpfr_srcptr x)
+{
+ return MPFR_IS_SINGULAR(x) == 0;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/iszero.c b/Build/source/libs/mpfr/mpfr-src/src/iszero.c
new file mode 100644
index 00000000000..2e9f3b5be56
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/iszero.c
@@ -0,0 +1,29 @@
+/* mpfr_zero_p -- check for zero
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+(mpfr_zero_p) (mpfr_srcptr x)
+{
+ return MPFR_IS_ZERO(x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/jn.c b/Build/source/libs/mpfr/mpfr-src/src/jn.c
new file mode 100644
index 00000000000..40eecf7bb1f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/jn.c
@@ -0,0 +1,329 @@
+/* mpfr_j0, mpfr_j1, mpfr_jn -- Bessel functions of 1st kind, integer order.
+ http://www.opengroup.org/onlinepubs/009695399/functions/j0.html
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Relations: j(-n,z) = (-1)^n j(n,z)
+ j(n,-z) = (-1)^n j(n,z)
+*/
+
+static int mpfr_jn_asympt (mpfr_ptr, long, mpfr_srcptr, mpfr_rnd_t);
+
+int
+mpfr_j0 (mpfr_ptr res, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ return mpfr_jn (res, 0, z, r);
+}
+
+int
+mpfr_j1 (mpfr_ptr res, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ return mpfr_jn (res, 1, z, r);
+}
+
+/* Estimate k1 such that z^2/4 = k1 * (k1 + n)
+ i.e., k1 = (sqrt(n^2+z^2)-n)/2 = n/2 * (sqrt(1+(z/n)^2) - 1) if n != 0.
+ Return k0 = min(2*k1/log(2), ULONG_MAX).
+*/
+static unsigned long
+mpfr_jn_k0 (unsigned long n, mpfr_srcptr z)
+{
+ mpfr_t t, u;
+ unsigned long k0;
+
+ mpfr_init2 (t, 32);
+ mpfr_init2 (u, 32);
+ if (n == 0)
+ {
+ mpfr_abs (t, z, MPFR_RNDN); /* t = 2*k1 */
+ }
+ else
+ {
+ mpfr_div_ui (t, z, n, MPFR_RNDN);
+ mpfr_sqr (t, t, MPFR_RNDN);
+ mpfr_add_ui (t, t, 1, MPFR_RNDN);
+ mpfr_sqrt (t, t, MPFR_RNDN);
+ mpfr_sub_ui (t, t, 1, MPFR_RNDN);
+ mpfr_mul_ui (t, t, n, MPFR_RNDN); /* t = 2*k1 */
+ }
+ /* the following is a 32-bit approximation to nearest to 1/log(2) */
+ mpfr_set_str_binary (u, "1.0111000101010100011101100101001");
+ mpfr_mul (t, t, u, MPFR_RNDN);
+ if (mpfr_fits_ulong_p (t, MPFR_RNDN))
+ k0 = mpfr_get_ui (t, MPFR_RNDN);
+ else
+ k0 = ULONG_MAX;
+ mpfr_clear (t);
+ mpfr_clear (u);
+ return k0;
+}
+
+int
+mpfr_jn (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ int inex;
+ int exception = 0;
+ unsigned long absn;
+ mpfr_prec_t prec, pbound, err;
+ mpfr_uprec_t uprec;
+ mpfr_exp_t exps, expT, diffexp;
+ mpfr_t y, s, t, absz;
+ unsigned long k, zz, k0;
+ MPFR_GROUP_DECL(g);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("n=%d x[%Pu]=%.*Rg rnd=%d", n, mpfr_get_prec (z), mpfr_log_prec, z, r),
+ ("res[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (res), mpfr_log_prec, res, inex));
+
+ absn = SAFE_ABS (unsigned long, n);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (z)))
+ {
+ if (MPFR_IS_NAN (z))
+ {
+ MPFR_SET_NAN (res);
+ MPFR_RET_NAN;
+ }
+ /* j(n,z) tends to zero when z goes to +Inf or -Inf, oscillating around
+ 0. We choose to return +0 in that case. */
+ else if (MPFR_IS_INF (z)) /* FIXME: according to j(-n,z) = (-1)^n j(n,z)
+ we might want to give a sign depending on
+ z and n */
+ return mpfr_set_ui (res, 0, r);
+ else /* z=0: j(0,0)=1, j(n odd,+/-0) = +/-0 if n > 0, -/+0 if n < 0,
+ j(n even,+/-0) = +0 */
+ {
+ if (n == 0)
+ return mpfr_set_ui (res, 1, r);
+ else if (absn & 1) /* n odd */
+ return (n > 0) ? mpfr_set (res, z, r) : mpfr_neg (res, z, r);
+ else /* n even */
+ return mpfr_set_ui (res, 0, r);
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* check for tiny input for j0: j0(z) = 1 - z^2/4 + ..., more precisely
+ |j0(z) - 1| <= z^2/4 for -1 <= z <= 1. */
+ if (n == 0)
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (res, __gmpfr_one, -2 * MPFR_GET_EXP (z),
+ 2, 0, r, inex = _inexact; goto end);
+
+ /* idem for j1: j1(z) = z/2 - z^3/16 + ..., more precisely
+ |j1(z) - z/2| <= |z^3|/16 for -1 <= z <= 1, with the sign of j1(z) - z/2
+ being the opposite of that of z. */
+ /* TODO: add a test to trigger an error when
+ inex = _inexact; goto end
+ is forgotten in MPFR_FAST_COMPUTE_IF_SMALL_INPUT below. */
+ if (n == 1)
+ {
+ /* We first compute 2j1(z) = z - z^3/8 + ..., then divide by 2 using
+ the "extra" argument of MPFR_FAST_COMPUTE_IF_SMALL_INPUT. But we
+ must also handle the underflow case (an overflow is not possible
+ for small inputs). If an underflow occurred in mpfr_round_near_x,
+ the rounding was to zero or equivalent, and the result is 0, so
+ that the division by 2 will give the wanted result. Otherwise...
+ The rounded result in unbounded exponent range is res/2. If the
+ division by 2 doesn't underflow, it is exact, and we can return
+ this result. And an underflow in the division is a real underflow.
+ In case of directed rounding mode, the result is correct. But in
+ case of rounding to nearest, there is a double rounding problem,
+ and the result is 0 iff the result before the division is the
+ minimum positive number and _inexact has the same sign as z;
+ but in rounding to nearest, res/2 will yield 0 iff |res| is the
+ minimum positive number, so that we just need to test the result
+ of the division and the sign of _inexact. */
+ mpfr_clear_flags ();
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT
+ (res, z, -2 * MPFR_GET_EXP (z), 3, 0, r, {
+ int inex2 = mpfr_div_2ui (res, res, 1, r);
+ if (MPFR_UNLIKELY (r == MPFR_RNDN && MPFR_IS_ZERO (res)) &&
+ (MPFR_ASSERTN (inex2 != 0), SIGN (_inexact) != MPFR_SIGN (z)))
+ {
+ mpfr_nexttoinf (res);
+ inex = - inex2;
+ }
+ else
+ inex = inex2 != 0 ? inex2 : _inexact;
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ goto end;
+ });
+ }
+
+ /* we can use the asymptotic expansion as soon as |z| > p log(2)/2,
+ but to get some margin we use it for |z| > p/2 */
+ pbound = MPFR_PREC (res) / 2 + 3;
+ MPFR_ASSERTN (pbound <= ULONG_MAX);
+ MPFR_ALIAS (absz, z, 1, MPFR_EXP (z));
+ if (mpfr_cmp_ui (absz, pbound) > 0)
+ {
+ inex = mpfr_jn_asympt (res, n, z, r);
+ if (inex != 0)
+ goto end;
+ }
+
+ MPFR_GROUP_INIT_3 (g, 32, y, s, t);
+
+ /* check underflow case: |j(n,z)| <= 1/sqrt(2 Pi n) (ze/2n)^n
+ (see algorithms.tex) */
+ /* FIXME: the code below doesn't detect all the underflow cases. Either
+ this should be done, or the generic code should detect underflows. */
+ if (absn > 0)
+ {
+ /* the following is an upper 32-bit approximation to exp(1)/2 */
+ mpfr_set_str_binary (y, "1.0101101111110000101010001011001");
+ if (MPFR_SIGN(z) > 0)
+ mpfr_mul (y, y, z, MPFR_RNDU);
+ else
+ {
+ mpfr_mul (y, y, z, MPFR_RNDD);
+ mpfr_neg (y, y, MPFR_RNDU);
+ }
+ mpfr_div_ui (y, y, absn, MPFR_RNDU);
+ /* now y is an upper approximation to |ze/2n|: y < 2^EXP(y),
+ thus |j(n,z)| < 1/2*y^n < 2^(n*EXP(y)-1).
+ If n*EXP(y) < emin then we have an underflow.
+ Note that if emin = MPFR_EMIN_MIN and j = 1, this inequality
+ will never be satisfied.
+ Warning: absn is an unsigned long. */
+ if ((MPFR_GET_EXP (y) < 0 && absn > - expo.saved_emin)
+ || (absn <= - MPFR_EMIN_MIN &&
+ MPFR_GET_EXP (y) < expo.saved_emin / (mpfr_exp_t) absn))
+ {
+ MPFR_GROUP_CLEAR (g);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (res, (r == MPFR_RNDN) ? MPFR_RNDZ : r,
+ (n % 2) ? ((n > 0) ? MPFR_SIGN(z) : -MPFR_SIGN(z))
+ : MPFR_SIGN_POS);
+ }
+ }
+
+ /* the logarithm of the ratio between the largest term in the series
+ and the first one is roughly bounded by k0, which we add to the
+ working precision to take into account this cancellation */
+ /* The following operations avoid integer overflow and ensure that
+ prec <= MPFR_PREC_MAX (prec = MPFR_PREC_MAX won't prevent an abort,
+ but the failure should be handled cleanly). */
+ k0 = mpfr_jn_k0 (absn, z);
+ MPFR_LOG_MSG (("k0 = %lu\n", k0));
+ uprec = MPFR_PREC_MAX - 2 * MPFR_INT_CEIL_LOG2 (MPFR_PREC_MAX) - 3;
+ if (k0 < uprec)
+ uprec = k0;
+ uprec += MPFR_PREC (res) + 2 * MPFR_INT_CEIL_LOG2 (MPFR_PREC (res)) + 3;
+ prec = uprec < MPFR_PREC_MAX ? (mpfr_prec_t) uprec : MPFR_PREC_MAX;
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_GROUP_REPREC_3 (g, prec, y, s, t);
+ MPFR_BLOCK (flags, {
+ mpfr_pow_ui (t, z, absn, MPFR_RNDN); /* z^|n| */
+ mpfr_mul (y, z, z, MPFR_RNDN); /* z^2 */
+ mpfr_clear_erangeflag ();
+ zz = mpfr_get_ui (y, MPFR_RNDU);
+ /* FIXME: The error analysis is incorrect in case of range error. */
+ MPFR_ASSERTN (! mpfr_erangeflag_p ()); /* since mpfr_clear_erangeflag */
+ mpfr_div_2ui (y, y, 2, MPFR_RNDN); /* z^2/4 */
+ mpfr_fac_ui (s, absn, MPFR_RNDN); /* |n|! */
+ mpfr_div (t, t, s, MPFR_RNDN);
+ if (absn > 0)
+ mpfr_div_2ui (t, t, absn, MPFR_RNDN);
+ mpfr_set (s, t, MPFR_RNDN);
+ /* note: we assume here that the maximal error bound is proportional to
+ 2^exps, which is true also in the case where s=0 */
+ exps = MPFR_IS_ZERO (s) ? MPFR_EMIN_MIN : MPFR_GET_EXP (s);
+ expT = exps;
+ for (k = 1; ; k++)
+ {
+ MPFR_LOG_MSG (("loop on k, k = %lu\n", k));
+ mpfr_mul (t, t, y, MPFR_RNDN);
+ mpfr_neg (t, t, MPFR_RNDN);
+ /* Mathematically: absn <= LONG_MAX + 1 <= (ULONG_MAX + 1) / 2,
+ and in practice, k is not very large, so that one should have
+ k + absn <= ULONG_MAX. */
+ MPFR_ASSERTN (absn <= ULONG_MAX - k);
+ if (k + absn <= ULONG_MAX / k)
+ mpfr_div_ui (t, t, k * (k + absn), MPFR_RNDN);
+ else
+ {
+ mpfr_div_ui (t, t, k, MPFR_RNDN);
+ mpfr_div_ui (t, t, k + absn, MPFR_RNDN);
+ }
+ /* see above note */
+ exps = MPFR_IS_ZERO (s) ? MPFR_EMIN_MIN : MPFR_GET_EXP (t);
+ if (exps > expT)
+ expT = exps;
+ mpfr_add (s, s, t, MPFR_RNDN);
+ exps = MPFR_IS_ZERO (s) ? MPFR_EMIN_MIN : MPFR_GET_EXP (s);
+ if (exps > expT)
+ expT = exps;
+ /* Above it has been checked that k + absn <= ULONG_MAX. */
+ if (MPFR_GET_EXP (t) + (mpfr_exp_t) prec <= exps &&
+ zz / (2 * k) < k + absn)
+ break;
+ }
+ });
+ /* the error is bounded by (4k^2+21/2k+7) ulp(s)*2^(expT-exps)
+ <= (k+2)^2 ulp(s)*2^(2+expT-exps) */
+ diffexp = expT - exps;
+ err = 2 * MPFR_INT_CEIL_LOG2(k + 2) + 2;
+ /* FIXME: Can an overflow occur in the following sum? */
+ MPFR_ASSERTN (diffexp >= 0 && err >= 0 &&
+ diffexp <= MPFR_PREC_MAX - err);
+ err += diffexp;
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, prec - err, MPFR_PREC(res), r)))
+ {
+ if (MPFR_LIKELY (! (MPFR_UNDERFLOW (flags) ||
+ MPFR_OVERFLOW (flags))))
+ break;
+ /* The error analysis is incorrect in case of exception.
+ If an underflow or overflow occurred, try once more in
+ a larger precision, and if this happens a second time,
+ then abort to avoid a probable infinite loop. This is
+ a problem that must be fixed! */
+ MPFR_ASSERTN (! exception);
+ exception = 1;
+ }
+ MPFR_ZIV_NEXT (loop, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inex = ((n >= 0) || ((n & 1) == 0)) ? mpfr_set (res, s, r)
+ : mpfr_neg (res, s, r);
+
+ MPFR_GROUP_CLEAR (g);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (res, inex, r);
+}
+
+#define MPFR_JN
+#include "jyn_asympt.c"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/jyn_asympt.c b/Build/source/libs/mpfr/mpfr-src/src/jyn_asympt.c
new file mode 100644
index 00000000000..b630c9bf2b7
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/jyn_asympt.c
@@ -0,0 +1,269 @@
+/* mpfr_jn_asympt, mpfr_yn_asympt -- shared code for mpfr_jn and mpfr_yn
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef MPFR_JN
+# define FUNCTION mpfr_jn_asympt
+#else
+# ifdef MPFR_YN
+# define FUNCTION mpfr_yn_asympt
+# else
+# error "neither MPFR_JN nor MPFR_YN is defined"
+# endif
+#endif
+
+/* Implements asymptotic expansion for jn or yn (formulae 9.2.5 and 9.2.6
+ from Abramowitz & Stegun).
+ Assumes |z| > p log(2)/2, where p is the target precision
+ (z can be negative only for jn).
+ Return 0 if the expansion does not converge enough (the value 0 as inexact
+ flag should not happen for normal input).
+*/
+static int
+FUNCTION (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ mpfr_t s, c, P, Q, t, iz, err_t, err_s, err_u;
+ mpfr_prec_t w;
+ long k;
+ int inex, stop, diverge = 0;
+ mpfr_exp_t err2, err;
+ MPFR_ZIV_DECL (loop);
+
+ mpfr_init (c);
+
+ w = MPFR_PREC(res) + MPFR_INT_CEIL_LOG2(MPFR_PREC(res)) + 4;
+
+ MPFR_ZIV_INIT (loop, w);
+ for (;;)
+ {
+ mpfr_set_prec (c, w);
+ mpfr_init2 (s, w);
+ mpfr_init2 (P, w);
+ mpfr_init2 (Q, w);
+ mpfr_init2 (t, w);
+ mpfr_init2 (iz, w);
+ mpfr_init2 (err_t, 31);
+ mpfr_init2 (err_s, 31);
+ mpfr_init2 (err_u, 31);
+
+ /* Approximate sin(z) and cos(z). In the following, err <= k means that
+ the approximate value y and the true value x are related by
+ y = x * (1 + u)^k with |u| <= 2^(-w), following Higham's method. */
+ mpfr_sin_cos (s, c, z, MPFR_RNDN);
+ if (MPFR_IS_NEG(z))
+ mpfr_neg (s, s, MPFR_RNDN); /* compute jn/yn(|z|), fix sign later */
+ /* The absolute error on s/c is bounded by 1/2 ulp(1/2) <= 2^(-w-1). */
+ mpfr_add (t, s, c, MPFR_RNDN);
+ mpfr_sub (c, s, c, MPFR_RNDN);
+ mpfr_swap (s, t);
+ /* now s approximates sin(z)+cos(z), and c approximates sin(z)-cos(z),
+ with total absolute error bounded by 2^(1-w). */
+
+ /* precompute 1/(8|z|) */
+ mpfr_si_div (iz, MPFR_IS_POS(z) ? 1 : -1, z, MPFR_RNDN); /* err <= 1 */
+ mpfr_div_2ui (iz, iz, 3, MPFR_RNDN);
+
+ /* compute P and Q */
+ mpfr_set_ui (P, 1, MPFR_RNDN);
+ mpfr_set_ui (Q, 0, MPFR_RNDN);
+ mpfr_set_ui (t, 1, MPFR_RNDN); /* current term */
+ mpfr_set_ui (err_t, 0, MPFR_RNDN); /* error on t */
+ mpfr_set_ui (err_s, 0, MPFR_RNDN); /* error on P and Q (sum of errors) */
+ for (k = 1, stop = 0; stop < 4; k++)
+ {
+ /* compute next term: t(k)/t(k-1) = (2n+2k-1)(2n-2k+1)/(8kz) */
+ mpfr_mul_si (t, t, 2 * (n + k) - 1, MPFR_RNDN); /* err <= err_k + 1 */
+ mpfr_mul_si (t, t, 2 * (n - k) + 1, MPFR_RNDN); /* err <= err_k + 2 */
+ mpfr_div_ui (t, t, k, MPFR_RNDN); /* err <= err_k + 3 */
+ mpfr_mul (t, t, iz, MPFR_RNDN); /* err <= err_k + 5 */
+ /* the relative error on t is bounded by (1+u)^(5k)-1, which is
+ bounded by 6ku for 6ku <= 0.02: first |5 log(1+u)| <= |5.5u|
+ for |u| <= 0.15, then |exp(5.5u)-1| <= 6u for |u| <= 0.02. */
+ mpfr_mul_ui (err_t, t, 6 * k, MPFR_IS_POS(t) ? MPFR_RNDU : MPFR_RNDD);
+ mpfr_abs (err_t, err_t, MPFR_RNDN); /* exact */
+ /* the absolute error on t is bounded by err_t * 2^(-w) */
+ mpfr_abs (err_u, t, MPFR_RNDU);
+ mpfr_mul_2ui (err_u, err_u, w, MPFR_RNDU); /* t * 2^w */
+ mpfr_add (err_u, err_u, err_t, MPFR_RNDU); /* max|t| * 2^w */
+ if (stop >= 2)
+ {
+ /* take into account the neglected terms: t * 2^w */
+ mpfr_div_2ui (err_s, err_s, w, MPFR_RNDU);
+ if (MPFR_IS_POS(t))
+ mpfr_add (err_s, err_s, t, MPFR_RNDU);
+ else
+ mpfr_sub (err_s, err_s, t, MPFR_RNDU);
+ mpfr_mul_2ui (err_s, err_s, w, MPFR_RNDU);
+ stop ++;
+ }
+ /* if k is odd, add to Q, otherwise to P */
+ else if (k & 1)
+ {
+ /* if k = 1 mod 4, add, otherwise subtract */
+ if ((k & 2) == 0)
+ mpfr_add (Q, Q, t, MPFR_RNDN);
+ else
+ mpfr_sub (Q, Q, t, MPFR_RNDN);
+ /* check if the next term is smaller than ulp(Q): if EXP(err_u)
+ <= EXP(Q), since the current term is bounded by
+ err_u * 2^(-w), it is bounded by ulp(Q) */
+ if (MPFR_EXP(err_u) <= MPFR_EXP(Q))
+ stop ++;
+ else
+ stop = 0;
+ }
+ else
+ {
+ /* if k = 0 mod 4, add, otherwise subtract */
+ if ((k & 2) == 0)
+ mpfr_add (P, P, t, MPFR_RNDN);
+ else
+ mpfr_sub (P, P, t, MPFR_RNDN);
+ /* check if the next term is smaller than ulp(P) */
+ if (MPFR_EXP(err_u) <= MPFR_EXP(P))
+ stop ++;
+ else
+ stop = 0;
+ }
+ mpfr_add (err_s, err_s, err_t, MPFR_RNDU);
+ /* the sum of the rounding errors on P and Q is bounded by
+ err_s * 2^(-w) */
+
+ /* stop when start to diverge */
+ if (stop < 2 &&
+ ((MPFR_IS_POS(z) && mpfr_cmp_ui (z, (k + 1) / 2) < 0) ||
+ (MPFR_IS_NEG(z) && mpfr_cmp_si (z, - ((k + 1) / 2)) > 0)))
+ {
+ /* if we have to stop the series because it diverges, then
+ increasing the precision will most probably fail, since
+ we will stop to the same point, and thus compute a very
+ similar approximation */
+ diverge = 1;
+ stop = 2; /* force stop */
+ }
+ }
+ /* the sum of the total errors on P and Q is bounded by err_s * 2^(-w) */
+
+ /* Now combine: the sum of the rounding errors on P and Q is bounded by
+ err_s * 2^(-w), and the absolute error on s/c is bounded by 2^(1-w) */
+ if ((n & 1) == 0) /* n even: P * (sin + cos) + Q (cos - sin) for jn
+ Q * (sin + cos) + P (sin - cos) for yn */
+ {
+#ifdef MPFR_JN
+ mpfr_mul (c, c, Q, MPFR_RNDN); /* Q * (sin - cos) */
+ mpfr_mul (s, s, P, MPFR_RNDN); /* P * (sin + cos) */
+#else
+ mpfr_mul (c, c, P, MPFR_RNDN); /* P * (sin - cos) */
+ mpfr_mul (s, s, Q, MPFR_RNDN); /* Q * (sin + cos) */
+#endif
+ err = MPFR_EXP(c);
+ if (MPFR_EXP(s) > err)
+ err = MPFR_EXP(s);
+#ifdef MPFR_JN
+ mpfr_sub (s, s, c, MPFR_RNDN);
+#else
+ mpfr_add (s, s, c, MPFR_RNDN);
+#endif
+ }
+ else /* n odd: P * (sin - cos) + Q (cos + sin) for jn,
+ Q * (sin - cos) - P (cos + sin) for yn */
+ {
+#ifdef MPFR_JN
+ mpfr_mul (c, c, P, MPFR_RNDN); /* P * (sin - cos) */
+ mpfr_mul (s, s, Q, MPFR_RNDN); /* Q * (sin + cos) */
+#else
+ mpfr_mul (c, c, Q, MPFR_RNDN); /* Q * (sin - cos) */
+ mpfr_mul (s, s, P, MPFR_RNDN); /* P * (sin + cos) */
+#endif
+ err = MPFR_EXP(c);
+ if (MPFR_EXP(s) > err)
+ err = MPFR_EXP(s);
+#ifdef MPFR_JN
+ mpfr_add (s, s, c, MPFR_RNDN);
+#else
+ mpfr_sub (s, c, s, MPFR_RNDN);
+#endif
+ }
+ if ((n & 2) != 0)
+ mpfr_neg (s, s, MPFR_RNDN);
+ if (MPFR_EXP(s) > err)
+ err = MPFR_EXP(s);
+ /* the absolute error on s is bounded by P*err(s/c) + Q*err(s/c)
+ + err(P)*(s/c) + err(Q)*(s/c) + 3 * 2^(err - w - 1)
+ <= (|P|+|Q|) * 2^(1-w) + err_s * 2^(1-w) + 2^err * 2^(1-w),
+ since |c|, |old_s| <= 2. */
+ err2 = (MPFR_EXP(P) >= MPFR_EXP(Q)) ? MPFR_EXP(P) + 2 : MPFR_EXP(Q) + 2;
+ /* (|P| + |Q|) * 2^(1 - w) <= 2^(err2 - w) */
+ err = MPFR_EXP(err_s) >= err ? MPFR_EXP(err_s) + 2 : err + 2;
+ /* err_s * 2^(1-w) + 2^old_err * 2^(1-w) <= 2^err * 2^(-w) */
+ err2 = (err >= err2) ? err + 1 : err2 + 1;
+ /* now the absolute error on s is bounded by 2^(err2 - w) */
+
+ /* multiply by sqrt(1/(Pi*z)) */
+ mpfr_const_pi (c, MPFR_RNDN); /* Pi, err <= 1 */
+ mpfr_mul (c, c, z, MPFR_RNDN); /* err <= 2 */
+ mpfr_si_div (c, MPFR_IS_POS(z) ? 1 : -1, c, MPFR_RNDN); /* err <= 3 */
+ mpfr_sqrt (c, c, MPFR_RNDN); /* err<=5/2, thus the absolute error is
+ bounded by 3*u*|c| for |u| <= 0.25 */
+ mpfr_mul (err_t, c, s, MPFR_SIGN(c)==MPFR_SIGN(s) ? MPFR_RNDU : MPFR_RNDD);
+ mpfr_abs (err_t, err_t, MPFR_RNDU);
+ mpfr_mul_ui (err_t, err_t, 3, MPFR_RNDU);
+ /* 3*2^(-w)*|old_c|*|s| [see below] is bounded by err_t * 2^(-w) */
+ err2 += MPFR_EXP(c);
+ /* |old_c| * 2^(err2 - w) [see below] is bounded by 2^(err2-w) */
+ mpfr_mul (c, c, s, MPFR_RNDN); /* the absolute error on c is bounded by
+ 1/2 ulp(c) + 3*2^(-w)*|old_c|*|s|
+ + |old_c| * 2^(err2 - w) */
+ /* compute err_t * 2^(-w) + 1/2 ulp(c) = (err_t + 2^EXP(c)) * 2^(-w) */
+ err = (MPFR_EXP(err_t) > MPFR_EXP(c)) ? MPFR_EXP(err_t) + 1 : MPFR_EXP(c) + 1;
+ /* err_t * 2^(-w) + 1/2 ulp(c) <= 2^(err - w) */
+ /* now err_t * 2^(-w) bounds 1/2 ulp(c) + 3*2^(-w)*|old_c|*|s| */
+ err = (err >= err2) ? err + 1 : err2 + 1;
+ /* the absolute error on c is bounded by 2^(err - w) */
+
+ mpfr_clear (s);
+ mpfr_clear (P);
+ mpfr_clear (Q);
+ mpfr_clear (t);
+ mpfr_clear (iz);
+ mpfr_clear (err_t);
+ mpfr_clear (err_s);
+ mpfr_clear (err_u);
+
+ err -= MPFR_EXP(c);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (c, w - err, MPFR_PREC(res), r)))
+ break;
+ if (diverge != 0)
+ {
+ mpfr_set (c, z, r); /* will force inex=0 below, which means the
+ asymptotic expansion failed */
+ break;
+ }
+ MPFR_ZIV_NEXT (loop, w);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inex = (MPFR_IS_POS(z) || ((n & 1) == 0)) ? mpfr_set (res, c, r)
+ : mpfr_neg (res, c, r);
+ mpfr_clear (c);
+
+ return inex;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/li2.c b/Build/source/libs/mpfr/mpfr-src/src/li2.c
new file mode 100644
index 00000000000..9d9940e34bd
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/li2.c
@@ -0,0 +1,634 @@
+/* mpfr_li2 -- Dilogarithm.
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Compute the alternating series
+ s = S(z) = \sum_{k=0}^infty B_{2k} (z))^{2k+1} / (2k+1)!
+ with 0 < z <= log(2) to the precision of s rounded in the direction
+ rnd_mode.
+ Return the maximum index of the truncature which is useful
+ for determinating the relative error.
+*/
+static int
+li2_series (mpfr_t sum, mpfr_srcptr z, mpfr_rnd_t rnd_mode)
+{
+ int i, Bm, Bmax;
+ mpfr_t s, u, v, w;
+ mpfr_prec_t sump, p;
+ mpfr_exp_t se, err;
+ mpz_t *B;
+ MPFR_ZIV_DECL (loop);
+
+ /* The series converges for |z| < 2 pi, but in mpfr_li2 the argument is
+ reduced so that 0 < z <= log(2). Here is additionnal check that z is
+ (nearly) correct */
+ MPFR_ASSERTD (MPFR_IS_STRICTPOS (z));
+ MPFR_ASSERTD (mpfr_cmp_d (z, 0.6953125) <= 0);
+
+ sump = MPFR_PREC (sum); /* target precision */
+ p = sump + MPFR_INT_CEIL_LOG2 (sump) + 4; /* the working precision */
+ mpfr_init2 (s, p);
+ mpfr_init2 (u, p);
+ mpfr_init2 (v, p);
+ mpfr_init2 (w, p);
+
+ B = mpfr_bernoulli_internal ((mpz_t *) 0, 0);
+ Bm = Bmax = 1;
+
+ MPFR_ZIV_INIT (loop, p);
+ for (;;)
+ {
+ mpfr_sqr (u, z, MPFR_RNDU);
+ mpfr_set (v, z, MPFR_RNDU);
+ mpfr_set (s, z, MPFR_RNDU);
+ se = MPFR_GET_EXP (s);
+ err = 0;
+
+ for (i = 1;; i++)
+ {
+ if (i >= Bmax)
+ B = mpfr_bernoulli_internal (B, Bmax++); /* B_2i*(2i+1)!, exact */
+
+ mpfr_mul (v, u, v, MPFR_RNDU);
+ mpfr_div_ui (v, v, 2 * i, MPFR_RNDU);
+ mpfr_div_ui (v, v, 2 * i, MPFR_RNDU);
+ mpfr_div_ui (v, v, 2 * i + 1, MPFR_RNDU);
+ mpfr_div_ui (v, v, 2 * i + 1, MPFR_RNDU);
+ /* here, v_2i = v_{2i-2} / (2i * (2i+1))^2 */
+
+ mpfr_mul_z (w, v, B[i], MPFR_RNDN);
+ /* here, w_2i = v_2i * B_2i * (2i+1)! with
+ error(w_2i) < 2^(5 * i + 8) ulp(w_2i) (see algorithms.tex) */
+
+ mpfr_add (s, s, w, MPFR_RNDN);
+
+ err = MAX (err + se, 5 * i + 8 + MPFR_GET_EXP (w))
+ - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err);
+ se = MPFR_GET_EXP (s);
+ if (MPFR_GET_EXP (w) <= se - (mpfr_exp_t) p)
+ break;
+ }
+
+ /* the previous value of err is the rounding error,
+ the truncation error is less than EXP(z) - 6 * i - 5
+ (see algorithms.tex) */
+ err = MAX (err, MPFR_GET_EXP (z) - 6 * i - 5) + 1;
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) p - err, sump, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, p);
+ mpfr_set_prec (s, p);
+ mpfr_set_prec (u, p);
+ mpfr_set_prec (v, p);
+ mpfr_set_prec (w, p);
+ }
+ MPFR_ZIV_FREE (loop);
+ mpfr_set (sum, s, rnd_mode);
+
+ Bm = Bmax;
+ while (Bm--)
+ mpz_clear (B[Bm]);
+ (*__gmp_free_func) (B, Bmax * sizeof (mpz_t));
+ mpfr_clears (s, u, v, w, (mpfr_ptr) 0);
+
+ /* Let K be the returned value.
+ 1. As we compute an alternating series, the truncation error has the same
+ sign as the next term w_{K+2} which is positive iff K%4 == 0.
+ 2. Assume that error(z) <= (1+t) z', where z' is the actual value, then
+ error(s) <= 2 * (K+1) * t (see algorithms.tex).
+ */
+ return 2 * i;
+}
+
+/* try asymptotic expansion when x is large and positive:
+ Li2(x) = -log(x)^2/2 + Pi^2/3 - 1/x + O(1/x^2).
+ More precisely for x >= 2 we have for g(x) = -log(x)^2/2 + Pi^2/3:
+ -2 <= x * (Li2(x) - g(x)) <= -1
+ thus |Li2(x) - g(x)| <= 2/x.
+ Assumes x >= 38, which ensures log(x)^2/2 >= 2*Pi^2/3, and g(x) <= -3.3.
+ Return 0 if asymptotic expansion failed (unable to round), otherwise
+ returns correct ternary value.
+*/
+static int
+mpfr_li2_asympt_pos (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t g, h;
+ mpfr_prec_t w = MPFR_PREC (y) + 20;
+ int inex = 0;
+
+ MPFR_ASSERTN (mpfr_cmp_ui (x, 38) >= 0);
+
+ mpfr_init2 (g, w);
+ mpfr_init2 (h, w);
+ mpfr_log (g, x, MPFR_RNDN); /* rel. error <= |(1 + theta) - 1| */
+ mpfr_sqr (g, g, MPFR_RNDN); /* rel. error <= |(1 + theta)^3 - 1| <= 2^(2-w) */
+ mpfr_div_2ui (g, g, 1, MPFR_RNDN); /* rel. error <= 2^(2-w) */
+ mpfr_const_pi (h, MPFR_RNDN); /* error <= 2^(1-w) */
+ mpfr_sqr (h, h, MPFR_RNDN); /* rel. error <= 2^(2-w) */
+ mpfr_div_ui (h, h, 3, MPFR_RNDN); /* rel. error <= |(1 + theta)^4 - 1|
+ <= 5 * 2^(-w) */
+ /* since x is chosen such that log(x)^2/2 >= 2 * (Pi^2/3), we should have
+ g >= 2*h, thus |g-h| >= |h|, and the relative error on g is at most
+ multiplied by 2 in the difference, and that by h is unchanged. */
+ MPFR_ASSERTN (MPFR_EXP (g) > MPFR_EXP (h));
+ mpfr_sub (g, h, g, MPFR_RNDN); /* err <= ulp(g)/2 + g*2^(3-w) + g*5*2^(-w)
+ <= ulp(g) * (1/2 + 8 + 5) < 14 ulp(g).
+
+ If in addition 2/x <= 2 ulp(g), i.e.,
+ 1/x <= ulp(g), then the total error is
+ bounded by 16 ulp(g). */
+ if ((MPFR_EXP (x) >= (mpfr_exp_t) w - MPFR_EXP (g)) &&
+ MPFR_CAN_ROUND (g, w - 4, MPFR_PREC (y), rnd_mode))
+ inex = mpfr_set (y, g, rnd_mode);
+
+ mpfr_clear (g);
+ mpfr_clear (h);
+
+ return inex;
+}
+
+/* try asymptotic expansion when x is large and negative:
+ Li2(x) = -log(-x)^2/2 - Pi^2/6 - 1/x + O(1/x^2).
+ More precisely for x <= -2 we have for g(x) = -log(-x)^2/2 - Pi^2/6:
+ |Li2(x) - g(x)| <= 1/|x|.
+ Assumes x <= -7, which ensures |log(-x)^2/2| >= Pi^2/6, and g(x) <= -3.5.
+ Return 0 if asymptotic expansion failed (unable to round), otherwise
+ returns correct ternary value.
+*/
+static int
+mpfr_li2_asympt_neg (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t g, h;
+ mpfr_prec_t w = MPFR_PREC (y) + 20;
+ int inex = 0;
+
+ MPFR_ASSERTN (mpfr_cmp_si (x, -7) <= 0);
+
+ mpfr_init2 (g, w);
+ mpfr_init2 (h, w);
+ mpfr_neg (g, x, MPFR_RNDN);
+ mpfr_log (g, g, MPFR_RNDN); /* rel. error <= |(1 + theta) - 1| */
+ mpfr_sqr (g, g, MPFR_RNDN); /* rel. error <= |(1 + theta)^3 - 1| <= 2^(2-w) */
+ mpfr_div_2ui (g, g, 1, MPFR_RNDN); /* rel. error <= 2^(2-w) */
+ mpfr_const_pi (h, MPFR_RNDN); /* error <= 2^(1-w) */
+ mpfr_sqr (h, h, MPFR_RNDN); /* rel. error <= 2^(2-w) */
+ mpfr_div_ui (h, h, 6, MPFR_RNDN); /* rel. error <= |(1 + theta)^4 - 1|
+ <= 5 * 2^(-w) */
+ MPFR_ASSERTN (MPFR_EXP (g) >= MPFR_EXP (h));
+ mpfr_add (g, g, h, MPFR_RNDN); /* err <= ulp(g)/2 + g*2^(2-w) + g*5*2^(-w)
+ <= ulp(g) * (1/2 + 4 + 5) < 10 ulp(g).
+
+ If in addition |1/x| <= 4 ulp(g), then the
+ total error is bounded by 16 ulp(g). */
+ if ((MPFR_EXP (x) >= (mpfr_exp_t) (w - 2) - MPFR_EXP (g)) &&
+ MPFR_CAN_ROUND (g, w - 4, MPFR_PREC (y), rnd_mode))
+ inex = mpfr_neg (y, g, rnd_mode);
+
+ mpfr_clear (g);
+ mpfr_clear (h);
+
+ return inex;
+}
+
+/* Compute the real part of the dilogarithm defined by
+ Li2(x) = -\Int_{t=0}^x log(1-t)/t dt */
+int
+mpfr_li2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_exp_t err;
+ mpfr_prec_t yp, m;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ MPFR_SET_NEG (y);
+ MPFR_SET_INF (y);
+ MPFR_RET (0);
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_SET_ZERO (y);
+ MPFR_RET (0);
+ }
+ }
+
+ /* Li2(x) = x + x^2/4 + x^3/9 + ..., more precisely for 0 < x <= 1/2
+ we have |Li2(x) - x| < x^2/2 <= 2^(2EXP(x)-1) and for -1/2 <= x < 0
+ we have |Li2(x) - x| < x^2/4 <= 2^(2EXP(x)-2) */
+ if (MPFR_IS_POS (x))
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -MPFR_GET_EXP (x), 1, 1, rnd_mode,
+ {});
+ else
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -MPFR_GET_EXP (x), 2, 0, rnd_mode,
+ {});
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ yp = MPFR_PREC (y);
+ m = yp + MPFR_INT_CEIL_LOG2 (yp) + 13;
+
+ if (MPFR_LIKELY ((mpfr_cmp_ui (x, 0) > 0) && (mpfr_cmp_d (x, 0.5) <= 0)))
+ /* 0 < x <= 1/2: Li2(x) = S(-log(1-x))-log^2(1-x)/4 */
+ {
+ mpfr_t s, u;
+ mpfr_exp_t expo_l;
+ int k;
+
+ mpfr_init2 (u, m);
+ mpfr_init2 (s, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_ui_sub (u, 1, x, MPFR_RNDN);
+ mpfr_log (u, u, MPFR_RNDU);
+ if (MPFR_IS_ZERO(u))
+ goto next_m;
+ mpfr_neg (u, u, MPFR_RNDN); /* u = -log(1-x) */
+ expo_l = MPFR_GET_EXP (u);
+ k = li2_series (s, u, MPFR_RNDU);
+ err = 1 + MPFR_INT_CEIL_LOG2 (k + 1);
+
+ mpfr_sqr (u, u, MPFR_RNDU);
+ mpfr_div_2ui (u, u, 2, MPFR_RNDU); /* u = log^2(1-x) / 4 */
+ mpfr_sub (s, s, u, MPFR_RNDN);
+
+ /* error(s) <= (0.5 + 2^(d-EXP(s))
+ + 2^(3 + MAX(1, - expo_l) - EXP(s))) ulp(s) */
+ err = MAX (err, MAX (1, - expo_l) - 1) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err);
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) m - err, yp, rnd_mode))
+ break;
+
+ next_m:
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (u, m);
+ mpfr_set_prec (s, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+
+ mpfr_clear (u);
+ mpfr_clear (s);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ else if (!mpfr_cmp_ui (x, 1))
+ /* Li2(1)= pi^2 / 6 */
+ {
+ mpfr_t u;
+ mpfr_init2 (u, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_const_pi (u, MPFR_RNDU);
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_ui (u, u, 6, MPFR_RNDN);
+
+ err = m - 4; /* error(u) <= 19/2 ulp(u) */
+ if (MPFR_CAN_ROUND (u, err, yp, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (u, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, u, rnd_mode);
+
+ mpfr_clear (u);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ else if (mpfr_cmp_ui (x, 2) >= 0)
+ /* x >= 2: Li2(x) = -S(-log(1-1/x))-log^2(x)/2+log^2(1-1/x)/4+pi^2/3 */
+ {
+ int k;
+ mpfr_exp_t expo_l;
+ mpfr_t s, u, xx;
+
+ if (mpfr_cmp_ui (x, 38) >= 0)
+ {
+ inexact = mpfr_li2_asympt_pos (y, x, rnd_mode);
+ if (inexact != 0)
+ goto end_of_case_gt2;
+ }
+
+ mpfr_init2 (u, m);
+ mpfr_init2 (s, m);
+ mpfr_init2 (xx, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_ui_div (xx, 1, x, MPFR_RNDN);
+ mpfr_neg (xx, xx, MPFR_RNDN);
+ mpfr_log1p (u, xx, MPFR_RNDD);
+ mpfr_neg (u, u, MPFR_RNDU); /* u = -log(1-1/x) */
+ expo_l = MPFR_GET_EXP (u);
+ k = li2_series (s, u, MPFR_RNDN);
+ mpfr_neg (s, s, MPFR_RNDN);
+ err = MPFR_INT_CEIL_LOG2 (k + 1) + 1; /* error(s) <= 2^err ulp(s) */
+
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_2ui (u, u, 2, MPFR_RNDN); /* u= log^2(1-1/x)/4 */
+ mpfr_add (s, s, u, MPFR_RNDN);
+ err =
+ MAX (err,
+ 3 + MAX (1, -expo_l) + MPFR_GET_EXP (u)) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err); /* error(s) <= 2^err ulp(s) */
+ err += MPFR_GET_EXP (s);
+
+ mpfr_log (u, x, MPFR_RNDU);
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_2ui (u, u, 1, MPFR_RNDN); /* u = log^2(x)/2 */
+ mpfr_sub (s, s, u, MPFR_RNDN);
+ err = MAX (err, 3 + MPFR_GET_EXP (u)) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err); /* error(s) <= 2^err ulp(s) */
+ err += MPFR_GET_EXP (s);
+
+ mpfr_const_pi (u, MPFR_RNDU);
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_ui (u, u, 3, MPFR_RNDN); /* u = pi^2/3 */
+ mpfr_add (s, s, u, MPFR_RNDN);
+ err = MAX (err, 2) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err); /* error(s) <= 2^err ulp(s) */
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) m - err, yp, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (u, m);
+ mpfr_set_prec (s, m);
+ mpfr_set_prec (xx, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+ mpfr_clears (s, u, xx, (mpfr_ptr) 0);
+
+ end_of_case_gt2:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ else if (mpfr_cmp_ui (x, 1) > 0)
+ /* 2 > x > 1: Li2(x) = S(log(x))+log^2(x)/4-log(x)log(x-1)+pi^2/6 */
+ {
+ int k;
+ mpfr_exp_t e1, e2;
+ mpfr_t s, u, v, xx;
+ mpfr_init2 (s, m);
+ mpfr_init2 (u, m);
+ mpfr_init2 (v, m);
+ mpfr_init2 (xx, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_log (v, x, MPFR_RNDU);
+ k = li2_series (s, v, MPFR_RNDN);
+ e1 = MPFR_GET_EXP (s);
+
+ mpfr_sqr (u, v, MPFR_RNDN);
+ mpfr_div_2ui (u, u, 2, MPFR_RNDN); /* u = log^2(x)/4 */
+ mpfr_add (s, s, u, MPFR_RNDN);
+
+ mpfr_sub_ui (xx, x, 1, MPFR_RNDN);
+ mpfr_log (u, xx, MPFR_RNDU);
+ e2 = MPFR_GET_EXP (u);
+ mpfr_mul (u, v, u, MPFR_RNDN); /* u = log(x) * log(x-1) */
+ mpfr_sub (s, s, u, MPFR_RNDN);
+
+ mpfr_const_pi (u, MPFR_RNDU);
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_ui (u, u, 6, MPFR_RNDN); /* u = pi^2/6 */
+ mpfr_add (s, s, u, MPFR_RNDN);
+ /* error(s) <= (31 + (k+1) * 2^(1-e1) + 2^(1-e2)) ulp(s)
+ see algorithms.tex */
+ err = MAX (MPFR_INT_CEIL_LOG2 (k + 1) + 1 - e1, 1 - e2);
+ err = 2 + MAX (5, err);
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) m - err, yp, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (s, m);
+ mpfr_set_prec (u, m);
+ mpfr_set_prec (v, m);
+ mpfr_set_prec (xx, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+
+ mpfr_clears (s, u, v, xx, (mpfr_ptr) 0);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ else if (mpfr_cmp_ui_2exp (x, 1, -1) > 0) /* 1/2 < x < 1 */
+ /* 1 > x > 1/2: Li2(x) = -S(-log(x))+log^2(x)/4-log(x)log(1-x)+pi^2/6 */
+ {
+ int k;
+ mpfr_t s, u, v, xx;
+ mpfr_init2 (s, m);
+ mpfr_init2 (u, m);
+ mpfr_init2 (v, m);
+ mpfr_init2 (xx, m);
+
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_log (u, x, MPFR_RNDD);
+ mpfr_neg (u, u, MPFR_RNDN);
+ k = li2_series (s, u, MPFR_RNDN);
+ mpfr_neg (s, s, MPFR_RNDN);
+ err = 1 + MPFR_INT_CEIL_LOG2 (k + 1) - MPFR_GET_EXP (s);
+
+ mpfr_ui_sub (xx, 1, x, MPFR_RNDN);
+ mpfr_log (v, xx, MPFR_RNDU);
+ mpfr_mul (v, v, u, MPFR_RNDN); /* v = - log(x) * log(1-x) */
+ mpfr_add (s, s, v, MPFR_RNDN);
+ err = MAX (err, 1 - MPFR_GET_EXP (v));
+ err = 2 + MAX (3, err) - MPFR_GET_EXP (s);
+
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_2ui (u, u, 2, MPFR_RNDN); /* u = log^2(x)/4 */
+ mpfr_add (s, s, u, MPFR_RNDN);
+ err = MAX (err, 2 + MPFR_GET_EXP (u)) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err) + MPFR_GET_EXP (s);
+
+ mpfr_const_pi (u, MPFR_RNDU);
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_ui (u, u, 6, MPFR_RNDN); /* u = pi^2/6 */
+ mpfr_add (s, s, u, MPFR_RNDN);
+ err = MAX (err, 3) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err);
+
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) m - err, yp, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (s, m);
+ mpfr_set_prec (u, m);
+ mpfr_set_prec (v, m);
+ mpfr_set_prec (xx, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+
+ mpfr_clears (s, u, v, xx, (mpfr_ptr) 0);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ else if (mpfr_cmp_si (x, -1) >= 0)
+ /* 0 > x >= -1: Li2(x) = -S(log(1-x))-log^2(1-x)/4 */
+ {
+ int k;
+ mpfr_exp_t expo_l;
+ mpfr_t s, u, xx;
+ mpfr_init2 (s, m);
+ mpfr_init2 (u, m);
+ mpfr_init2 (xx, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_neg (xx, x, MPFR_RNDN);
+ mpfr_log1p (u, xx, MPFR_RNDN);
+ k = li2_series (s, u, MPFR_RNDN);
+ mpfr_neg (s, s, MPFR_RNDN);
+ expo_l = MPFR_GET_EXP (u);
+ err = 1 + MPFR_INT_CEIL_LOG2 (k + 1) - MPFR_GET_EXP (s);
+
+ mpfr_sqr (u, u, MPFR_RNDN);
+ mpfr_div_2ui (u, u, 2, MPFR_RNDN); /* u = log^2(1-x)/4 */
+ mpfr_sub (s, s, u, MPFR_RNDN);
+ err = MAX (err, - expo_l);
+ err = 2 + MAX (err, 3);
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) m - err, yp, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (s, m);
+ mpfr_set_prec (u, m);
+ mpfr_set_prec (xx, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+
+ mpfr_clears (s, u, xx, (mpfr_ptr) 0);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ else
+ /* x < -1: Li2(x)
+ = S(log(1-1/x))-log^2(-x)/4-log(1-x)log(-x)/2+log^2(1-x)/4-pi^2/6 */
+ {
+ int k;
+ mpfr_t s, u, v, w, xx;
+
+ if (mpfr_cmp_si (x, -7) <= 0)
+ {
+ inexact = mpfr_li2_asympt_neg (y, x, rnd_mode);
+ if (inexact != 0)
+ goto end_of_case_ltm1;
+ }
+
+ mpfr_init2 (s, m);
+ mpfr_init2 (u, m);
+ mpfr_init2 (v, m);
+ mpfr_init2 (w, m);
+ mpfr_init2 (xx, m);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ mpfr_ui_div (xx, 1, x, MPFR_RNDN);
+ mpfr_neg (xx, xx, MPFR_RNDN);
+ mpfr_log1p (u, xx, MPFR_RNDN);
+ k = li2_series (s, u, MPFR_RNDN);
+
+ mpfr_ui_sub (xx, 1, x, MPFR_RNDN);
+ mpfr_log (u, xx, MPFR_RNDU);
+ mpfr_neg (xx, x, MPFR_RNDN);
+ mpfr_log (v, xx, MPFR_RNDU);
+ mpfr_mul (w, v, u, MPFR_RNDN);
+ mpfr_div_2ui (w, w, 1, MPFR_RNDN); /* w = log(-x) * log(1-x) / 2 */
+ mpfr_sub (s, s, w, MPFR_RNDN);
+ err = 1 + MAX (3, MPFR_INT_CEIL_LOG2 (k+1) + 1 - MPFR_GET_EXP (s))
+ + MPFR_GET_EXP (s);
+
+ mpfr_sqr (w, v, MPFR_RNDN);
+ mpfr_div_2ui (w, w, 2, MPFR_RNDN); /* w = log^2(-x) / 4 */
+ mpfr_sub (s, s, w, MPFR_RNDN);
+ err = MAX (err, 3 + MPFR_GET_EXP(w)) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err) + MPFR_GET_EXP (s);
+
+ mpfr_sqr (w, u, MPFR_RNDN);
+ mpfr_div_2ui (w, w, 2, MPFR_RNDN); /* w = log^2(1-x) / 4 */
+ mpfr_add (s, s, w, MPFR_RNDN);
+ err = MAX (err, 3 + MPFR_GET_EXP (w)) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err) + MPFR_GET_EXP (s);
+
+ mpfr_const_pi (w, MPFR_RNDU);
+ mpfr_sqr (w, w, MPFR_RNDN);
+ mpfr_div_ui (w, w, 6, MPFR_RNDN); /* w = pi^2 / 6 */
+ mpfr_sub (s, s, w, MPFR_RNDN);
+ err = MAX (err, 3) - MPFR_GET_EXP (s);
+ err = 2 + MAX (-1, err) + MPFR_GET_EXP (s);
+
+ if (MPFR_CAN_ROUND (s, (mpfr_exp_t) m - err, yp, rnd_mode))
+ break;
+
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (s, m);
+ mpfr_set_prec (u, m);
+ mpfr_set_prec (v, m);
+ mpfr_set_prec (w, m);
+ mpfr_set_prec (xx, m);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, s, rnd_mode);
+ mpfr_clears (s, u, v, w, xx, (mpfr_ptr) 0);
+
+ end_of_case_ltm1:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+ }
+
+ MPFR_RET_NEVER_GO_HERE ();
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/lngamma.c b/Build/source/libs/mpfr/mpfr-src/src/lngamma.c
new file mode 100644
index 00000000000..cd43df61551
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/lngamma.c
@@ -0,0 +1,738 @@
+/* mpfr_lngamma -- lngamma function
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* given a precision p, return alpha, such that the argument reduction
+ will use k = alpha*p*log(2).
+
+ Warning: we should always have alpha >= log(2)/(2Pi) ~ 0.11,
+ and the smallest value of alpha multiplied by the smallest working
+ precision should be >= 4.
+*/
+static void
+mpfr_gamma_alpha (mpfr_t s, mpfr_prec_t p)
+{
+ if (p <= 100)
+ mpfr_set_ui_2exp (s, 614, -10, MPFR_RNDN); /* about 0.6 */
+ else if (p <= 500)
+ mpfr_set_ui_2exp (s, 819, -10, MPFR_RNDN); /* about 0.8 */
+ else if (p <= 1000)
+ mpfr_set_ui_2exp (s, 1331, -10, MPFR_RNDN); /* about 1.3 */
+ else if (p <= 2000)
+ mpfr_set_ui_2exp (s, 1741, -10, MPFR_RNDN); /* about 1.7 */
+ else if (p <= 5000)
+ mpfr_set_ui_2exp (s, 2253, -10, MPFR_RNDN); /* about 2.2 */
+ else if (p <= 10000)
+ mpfr_set_ui_2exp (s, 3482, -10, MPFR_RNDN); /* about 3.4 */
+ else
+ mpfr_set_ui_2exp (s, 9, -1, MPFR_RNDN); /* 4.5 */
+}
+
+#ifdef IS_GAMMA
+
+/* This function is called in case of intermediate overflow/underflow.
+ The s1 and s2 arguments are temporary MPFR numbers, having the
+ working precision. If the result could be determined, then the
+ flags are updated via pexpo, y is set to the result, and the
+ (non-zero) ternary value is returned. Otherwise 0 is returned
+ in order to perform the next Ziv iteration. */
+static int
+mpfr_explgamma (mpfr_ptr y, mpfr_srcptr x, mpfr_save_expo_t *pexpo,
+ mpfr_ptr s1, mpfr_ptr s2, mpfr_rnd_t rnd)
+{
+ mpfr_t t1, t2;
+ int inex1, inex2, sign;
+ MPFR_BLOCK_DECL (flags1);
+ MPFR_BLOCK_DECL (flags2);
+ MPFR_GROUP_DECL (group);
+
+ MPFR_BLOCK (flags1, inex1 = mpfr_lgamma (s1, &sign, x, MPFR_RNDD));
+ MPFR_ASSERTN (inex1 != 0);
+ /* s1 = RNDD(lngamma(x)), inexact */
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags1)))
+ {
+ if (MPFR_SIGN (s1) > 0)
+ {
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (*pexpo, MPFR_FLAGS_OVERFLOW);
+ return mpfr_overflow (y, rnd, sign);
+ }
+ else
+ {
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (*pexpo, MPFR_FLAGS_UNDERFLOW);
+ return mpfr_underflow (y, rnd == MPFR_RNDN ? MPFR_RNDZ : rnd, sign);
+ }
+ }
+
+ mpfr_set (s2, s1, MPFR_RNDN); /* exact */
+ mpfr_nextabove (s2); /* v = RNDU(lngamma(z0)) */
+
+ if (sign < 0)
+ rnd = MPFR_INVERT_RND (rnd); /* since the result with be negated */
+ MPFR_GROUP_INIT_2 (group, MPFR_PREC (y), t1, t2);
+ MPFR_BLOCK (flags1, inex1 = mpfr_exp (t1, s1, rnd));
+ MPFR_BLOCK (flags2, inex2 = mpfr_exp (t2, s2, rnd));
+ /* t1 is the rounding with mode 'rnd' of a lower bound on |Gamma(x)|,
+ t2 is the rounding with mode 'rnd' of an upper bound, thus if both
+ are equal, so is the wanted result. If t1 and t2 differ or the flags
+ differ, at some point of Ziv's loop they should agree. */
+ if (mpfr_equal_p (t1, t2) && flags1 == flags2)
+ {
+ MPFR_ASSERTN ((inex1 > 0 && inex2 > 0) || (inex1 < 0 && inex2 < 0));
+ mpfr_set4 (y, t1, MPFR_RNDN, sign); /* exact */
+ if (sign < 0)
+ inex1 = - inex1;
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (*pexpo, flags1);
+ }
+ else
+ inex1 = 0; /* couldn't determine the result */
+ MPFR_GROUP_CLEAR (group);
+
+ return inex1;
+}
+
+#else
+
+static int
+unit_bit (mpfr_srcptr x)
+{
+ mpfr_exp_t expo;
+ mpfr_prec_t prec;
+ mp_limb_t x0;
+
+ expo = MPFR_GET_EXP (x);
+ if (expo <= 0)
+ return 0; /* |x| < 1 */
+
+ prec = MPFR_PREC (x);
+ if (expo > prec)
+ return 0; /* y is a multiple of 2^(expo-prec), thus an even integer */
+
+ /* Now, the unit bit is represented. */
+
+ prec = MPFR_PREC2LIMBS (prec) * GMP_NUMB_BITS - expo;
+ /* number of represented fractional bits (including the trailing 0's) */
+
+ x0 = *(MPFR_MANT (x) + prec / GMP_NUMB_BITS);
+ /* limb containing the unit bit */
+
+ return (x0 >> (prec % GMP_NUMB_BITS)) & 1;
+}
+
+#endif
+
+/* lngamma(x) = log(gamma(x)).
+ We use formula [6.1.40] from Abramowitz&Stegun:
+ lngamma(z) = (z-1/2)*log(z) - z + 1/2*log(2*Pi)
+ + sum (Bernoulli[2m]/(2m)/(2m-1)/z^(2m-1),m=1..infinity)
+ According to [6.1.42], if the sum is truncated after m=n, the error
+ R_n(z) is bounded by |B[2n+2]|*K(z)/(2n+1)/(2n+2)/|z|^(2n+1)
+ where K(z) = max (z^2/(u^2+z^2)) for u >= 0.
+ For z real, |K(z)| <= 1 thus R_n(z) is bounded by the first neglected term.
+ */
+#ifdef IS_GAMMA
+#define GAMMA_FUNC mpfr_gamma_aux
+#else
+#define GAMMA_FUNC mpfr_lngamma_aux
+#endif
+
+static int
+GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t precy, w; /* working precision */
+ mpfr_t s, t, u, v, z;
+ unsigned long m, k, maxm;
+ mpz_t *INITIALIZED(B); /* variable B declared as initialized */
+ int compared;
+ int inexact = 0; /* 0 means: result y not set yet */
+ mpfr_exp_t err_s, err_t;
+ unsigned long Bm = 0; /* number of allocated B[] */
+ unsigned long oldBm;
+ double d;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ compared = mpfr_cmp_ui (z0, 1);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+#ifndef IS_GAMMA /* lngamma or lgamma */
+ if (compared == 0 || (compared > 0 && mpfr_cmp_ui (z0, 2) == 0))
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_set_ui (y, 0, MPFR_RNDN); /* lngamma(1 or 2) = +0 */
+ }
+
+ /* Deal here with tiny inputs. We have for -0.3 <= x <= 0.3:
+ - log|x| - gamma*x <= log|gamma(x)| <= - log|x| - gamma*x + x^2 */
+ if (MPFR_EXP(z0) <= - (mpfr_exp_t) MPFR_PREC(y))
+ {
+ mpfr_t l, h, g;
+ int ok, inex1, inex2;
+ mpfr_prec_t prec = MPFR_PREC(y) + 14;
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_ZIV_INIT (loop, prec);
+ do
+ {
+ mpfr_init2 (l, prec);
+ if (MPFR_IS_POS(z0))
+ {
+ mpfr_log (l, z0, MPFR_RNDU); /* upper bound for log(z0) */
+ mpfr_init2 (h, MPFR_PREC(l));
+ }
+ else
+ {
+ mpfr_init2 (h, MPFR_PREC(z0));
+ mpfr_neg (h, z0, MPFR_RNDN); /* exact */
+ mpfr_log (l, h, MPFR_RNDU); /* upper bound for log(-z0) */
+ mpfr_set_prec (h, MPFR_PREC(l));
+ }
+ mpfr_neg (l, l, MPFR_RNDD); /* lower bound for -log(|z0|) */
+ mpfr_set (h, l, MPFR_RNDD); /* exact */
+ mpfr_nextabove (h); /* upper bound for -log(|z0|), avoids two calls
+ to mpfr_log */
+ mpfr_init2 (g, MPFR_PREC(l));
+ /* if z0>0, we need an upper approximation of Euler's constant
+ for the left bound */
+ mpfr_const_euler (g, MPFR_IS_POS(z0) ? MPFR_RNDU : MPFR_RNDD);
+ mpfr_mul (g, g, z0, MPFR_RNDD);
+ mpfr_sub (l, l, g, MPFR_RNDD);
+ mpfr_const_euler (g, MPFR_IS_POS(z0) ? MPFR_RNDD : MPFR_RNDU); /* cached */
+ mpfr_mul (g, g, z0, MPFR_RNDU);
+ mpfr_sub (h, h, g, MPFR_RNDD);
+ mpfr_mul (g, z0, z0, MPFR_RNDU);
+ mpfr_add (h, h, g, MPFR_RNDU);
+ inex1 = mpfr_prec_round (l, MPFR_PREC(y), rnd);
+ inex2 = mpfr_prec_round (h, MPFR_PREC(y), rnd);
+ /* Caution: we not only need l = h, but both inexact flags should
+ agree. Indeed, one of the inexact flags might be zero. In that
+ case if we assume lngamma(z0) cannot be exact, the other flag
+ should be correct. We are conservative here and request that both
+ inexact flags agree. */
+ ok = SAME_SIGN (inex1, inex2) && mpfr_cmp (l, h) == 0;
+ if (ok)
+ mpfr_set (y, h, rnd); /* exact */
+ mpfr_clear (l);
+ mpfr_clear (h);
+ mpfr_clear (g);
+ if (ok)
+ {
+ MPFR_ZIV_FREE (loop);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex1, rnd);
+ }
+ /* since we have log|gamma(x)| = - log|x| - gamma*x + O(x^2),
+ if x ~ 2^(-n), then we have a n-bit approximation, thus
+ we can try again with a working precision of n bits,
+ especially when n >> PREC(y).
+ Otherwise we would use the reflection formula evaluating x-1,
+ which would need precision n. */
+ MPFR_ZIV_NEXT (loop, prec);
+ }
+ while (prec <= -MPFR_EXP(z0));
+ MPFR_ZIV_FREE (loop);
+ }
+#endif
+
+ precy = MPFR_PREC(y);
+
+ mpfr_init2 (s, MPFR_PREC_MIN);
+ mpfr_init2 (t, MPFR_PREC_MIN);
+ mpfr_init2 (u, MPFR_PREC_MIN);
+ mpfr_init2 (v, MPFR_PREC_MIN);
+ mpfr_init2 (z, MPFR_PREC_MIN);
+
+ if (compared < 0)
+ {
+ mpfr_exp_t err_u;
+
+ /* use reflection formula:
+ gamma(x) = Pi*(x-1)/sin(Pi*(2-x))/gamma(2-x)
+ thus lngamma(x) = log(Pi*(x-1)/sin(Pi*(2-x))) - lngamma(2-x) */
+
+ w = precy + MPFR_INT_CEIL_LOG2 (precy);
+ w += MPFR_INT_CEIL_LOG2 (w) + 14;
+ MPFR_ZIV_INIT (loop, w);
+ while (1)
+ {
+ MPFR_ASSERTD(w >= 3);
+ mpfr_set_prec (s, w);
+ mpfr_set_prec (t, w);
+ mpfr_set_prec (u, w);
+ mpfr_set_prec (v, w);
+ /* In the following, we write r for a real of absolute value
+ at most 2^(-w). Different instances of r may represent different
+ values. */
+ mpfr_ui_sub (s, 2, z0, MPFR_RNDD); /* s = (2-z0) * (1+2r) >= 1 */
+ mpfr_const_pi (t, MPFR_RNDN); /* t = Pi * (1+r) */
+ mpfr_lngamma (u, s, MPFR_RNDN); /* lngamma(2-x) */
+ /* Let s = (2-z0) + h. By construction, -(2-z0)*2^(1-w) <= h <= 0.
+ We have lngamma(s) = lngamma(2-z0) + h*Psi(z), z in [2-z0+h,2-z0].
+ Since 2-z0+h = s >= 1 and |Psi(x)| <= max(1,log(x)) for x >= 1,
+ the error on u is bounded by
+ ulp(u)/2 + (2-z0)*max(1,log(2-z0))*2^(1-w)
+ = (1/2 + (2-z0)*max(1,log(2-z0))*2^(1-E(u))) ulp(u) */
+ d = (double) MPFR_GET_EXP(s) * 0.694; /* upper bound for log(2-z0) */
+ err_u = MPFR_GET_EXP(s) + __gmpfr_ceil_log2 (d) + 1 - MPFR_GET_EXP(u);
+ err_u = (err_u >= 0) ? err_u + 1 : 0;
+ /* now the error on u is bounded by 2^err_u ulps */
+
+ mpfr_mul (s, s, t, MPFR_RNDN); /* Pi*(2-x) * (1+r)^4 */
+ err_s = MPFR_GET_EXP(s); /* 2-x <= 2^err_s */
+ mpfr_sin (s, s, MPFR_RNDN); /* sin(Pi*(2-x)) */
+ /* the error on s is bounded by 1/2*ulp(s) + [(1+2^(-w))^4-1]*(2-x)
+ <= 1/2*ulp(s) + 5*2^(-w)*(2-x) for w >= 3
+ <= (1/2 + 5 * 2^(-E(s)) * (2-x)) ulp(s) */
+ err_s += 3 - MPFR_GET_EXP(s);
+ err_s = (err_s >= 0) ? err_s + 1 : 0;
+ /* the error on s is bounded by 2^err_s ulp(s), thus by
+ 2^(err_s+1)*2^(-w)*|s| since ulp(s) <= 2^(1-w)*|s|.
+ Now n*2^(-w) can always be written |(1+r)^n-1| for some
+ |r|<=2^(-w), thus taking n=2^(err_s+1) we see that
+ |S - s| <= |(1+r)^(2^(err_s+1))-1| * |s|, where S is the
+ true value.
+ In fact if ulp(s) <= ulp(S) the same inequality holds for
+ |S| instead of |s| in the right hand side, i.e., we can
+ write s = (1+r)^(2^(err_s+1)) * S.
+ But if ulp(S) < ulp(s), we need to add one ``bit'' to the error,
+ to get s = (1+r)^(2^(err_s+2)) * S. This is true since with
+ E = n*2^(-w) we have |s - S| <= E * |s|, thus
+ |s - S| <= E/(1-E) * |S|.
+ Now E/(1-E) is bounded by 2E as long as E<=1/2,
+ and 2E can be written (1+r)^(2n)-1 as above.
+ */
+ err_s += 2; /* exponent of relative error */
+
+ mpfr_sub_ui (v, z0, 1, MPFR_RNDN); /* v = (x-1) * (1+r) */
+ mpfr_mul (v, v, t, MPFR_RNDN); /* v = Pi*(x-1) * (1+r)^3 */
+ mpfr_div (v, v, s, MPFR_RNDN); /* Pi*(x-1)/sin(Pi*(2-x)) */
+ mpfr_abs (v, v, MPFR_RNDN);
+ /* (1+r)^(3+2^err_s+1) */
+ err_s = (err_s <= 1) ? 3 : err_s + 1;
+ /* now (1+r)^M with M <= 2^err_s */
+ mpfr_log (v, v, MPFR_RNDN);
+ /* log(v*(1+e)) = log(v)+log(1+e) where |e| <= 2^(err_s-w).
+ Since |log(1+e)| <= 2*e for |e| <= 1/4, the error on v is
+ bounded by ulp(v)/2 + 2^(err_s+1-w). */
+ if (err_s + 2 > w)
+ {
+ w += err_s + 2;
+ }
+ else
+ {
+ err_s += 1 - MPFR_GET_EXP(v);
+ err_s = (err_s >= 0) ? err_s + 1 : 0;
+ /* the error on v is bounded by 2^err_s ulps */
+ err_u += MPFR_GET_EXP(u); /* absolute error on u */
+ err_s += MPFR_GET_EXP(v); /* absolute error on v */
+ mpfr_sub (s, v, u, MPFR_RNDN);
+ /* the total error on s is bounded by ulp(s)/2 + 2^(err_u-w)
+ + 2^(err_s-w) <= ulp(s)/2 + 2^(max(err_u,err_s)+1-w) */
+ err_s = (err_s >= err_u) ? err_s : err_u;
+ err_s += 1 - MPFR_GET_EXP(s); /* error is 2^err_s ulp(s) */
+ err_s = (err_s >= 0) ? err_s + 1 : 0;
+ if (mpfr_can_round (s, w - err_s, MPFR_RNDN, MPFR_RNDZ, precy
+ + (rnd == MPFR_RNDN)))
+ goto end;
+ }
+ MPFR_ZIV_NEXT (loop, w);
+ }
+ MPFR_ZIV_FREE (loop);
+ }
+
+ /* now z0 > 1 */
+
+ MPFR_ASSERTD (compared > 0);
+
+ /* since k is O(w), the value of log(z0*...*(z0+k-1)) is about w*log(w),
+ so there is a cancellation of ~log(w) in the argument reconstruction */
+ w = precy + MPFR_INT_CEIL_LOG2 (precy);
+ w += MPFR_INT_CEIL_LOG2 (w) + 13;
+ MPFR_ZIV_INIT (loop, w);
+ while (1)
+ {
+ MPFR_ASSERTD (w >= 3);
+
+ /* argument reduction: we compute gamma(z0 + k), where the series
+ has error term B_{2n}/(z0+k)^(2n) ~ (n/(Pi*e*(z0+k)))^(2n)
+ and we need k steps of argument reconstruction. Assuming k is large
+ with respect to z0, and k = n, we get 1/(Pi*e)^(2n) ~ 2^(-w), i.e.,
+ k ~ w*log(2)/2/log(Pi*e) ~ 0.1616 * w.
+ However, since the series is more expensive to compute, the optimal
+ value seems to be k ~ 4.5 * w experimentally. */
+ mpfr_set_prec (s, 53);
+ mpfr_gamma_alpha (s, w);
+ mpfr_set_ui_2exp (s, 9, -1, MPFR_RNDU);
+ mpfr_mul_ui (s, s, w, MPFR_RNDU);
+ if (mpfr_cmp (z0, s) < 0)
+ {
+ mpfr_sub (s, s, z0, MPFR_RNDU);
+ k = mpfr_get_ui (s, MPFR_RNDU);
+ if (k < 3)
+ k = 3;
+ }
+ else
+ k = 3;
+
+ mpfr_set_prec (s, w);
+ mpfr_set_prec (t, w);
+ mpfr_set_prec (u, w);
+ mpfr_set_prec (v, w);
+ mpfr_set_prec (z, w);
+
+ mpfr_add_ui (z, z0, k, MPFR_RNDN);
+ /* z = (z0+k)*(1+t1) with |t1| <= 2^(-w) */
+
+ /* z >= 4 ensures the relative error on log(z) is small,
+ and also (z-1/2)*log(z)-z >= 0 */
+ MPFR_ASSERTD (mpfr_cmp_ui (z, 4) >= 0);
+
+ mpfr_log (s, z, MPFR_RNDN); /* log(z) */
+ /* we have s = log((z0+k)*(1+t1))*(1+t2) with |t1|, |t2| <= 2^(-w).
+ Since w >= 2 and z0+k >= 4, we can write log((z0+k)*(1+t1))
+ = log(z0+k) * (1+t3) with |t3| <= 2^(-w), thus we have
+ s = log(z0+k) * (1+t4)^2 with |t4| <= 2^(-w) */
+ mpfr_mul_2ui (t, z, 1, MPFR_RNDN); /* t = 2z * (1+t5) */
+ mpfr_sub_ui (t, t, 1, MPFR_RNDN); /* t = 2z-1 * (1+t6)^3 */
+ /* since we can write 2z*(1+t5) = (2z-1)*(1+t5') with
+ t5' = 2z/(2z-1) * t5, thus |t5'| <= 8/7 * t5 */
+ mpfr_mul (s, s, t, MPFR_RNDN); /* (2z-1)*log(z) * (1+t7)^6 */
+ mpfr_div_2ui (s, s, 1, MPFR_RNDN); /* (z-1/2)*log(z) * (1+t7)^6 */
+ mpfr_sub (s, s, z, MPFR_RNDN); /* (z-1/2)*log(z)-z */
+ /* s = [(z-1/2)*log(z)-z]*(1+u)^14, s >= 1/2 */
+
+ mpfr_ui_div (u, 1, z, MPFR_RNDN); /* 1/z * (1+u), u <= 1/4 since z >= 4 */
+
+ /* the first term is B[2]/2/z = 1/12/z: t=1/12/z, C[2]=1 */
+ mpfr_div_ui (t, u, 12, MPFR_RNDN); /* 1/(12z) * (1+u)^2, t <= 3/128 */
+ mpfr_set (v, t, MPFR_RNDN); /* (1+u)^2, v < 2^(-5) */
+ mpfr_add (s, s, v, MPFR_RNDN); /* (1+u)^15 */
+
+ mpfr_mul (u, u, u, MPFR_RNDN); /* 1/z^2 * (1+u)^3 */
+
+ if (Bm == 0)
+ {
+ B = mpfr_bernoulli_internal ((mpz_t *) 0, 0);
+ B = mpfr_bernoulli_internal (B, 1);
+ Bm = 2;
+ }
+
+ /* m <= maxm ensures that 2*m*(2*m+1) <= ULONG_MAX */
+ maxm = 1UL << (GMP_NUMB_BITS / 2 - 1);
+
+ /* s:(1+u)^15, t:(1+u)^2, t <= 3/128 */
+
+ for (m = 2; MPFR_GET_EXP(v) + (mpfr_exp_t) w >= MPFR_GET_EXP(s); m++)
+ {
+ mpfr_mul (t, t, u, MPFR_RNDN); /* (1+u)^(10m-14) */
+ if (m <= maxm)
+ {
+ mpfr_mul_ui (t, t, 2*(m-1)*(2*m-3), MPFR_RNDN);
+ mpfr_div_ui (t, t, 2*m*(2*m-1), MPFR_RNDN);
+ mpfr_div_ui (t, t, 2*m*(2*m+1), MPFR_RNDN);
+ }
+ else
+ {
+ mpfr_mul_ui (t, t, 2*(m-1), MPFR_RNDN);
+ mpfr_mul_ui (t, t, 2*m-3, MPFR_RNDN);
+ mpfr_div_ui (t, t, 2*m, MPFR_RNDN);
+ mpfr_div_ui (t, t, 2*m-1, MPFR_RNDN);
+ mpfr_div_ui (t, t, 2*m, MPFR_RNDN);
+ mpfr_div_ui (t, t, 2*m+1, MPFR_RNDN);
+ }
+ /* (1+u)^(10m-8) */
+ /* invariant: t=1/(2m)/(2m-1)/z^(2m-1)/(2m+1)! */
+ if (Bm <= m)
+ {
+ B = mpfr_bernoulli_internal (B, m); /* B[2m]*(2m+1)!, exact */
+ Bm ++;
+ }
+ mpfr_mul_z (v, t, B[m], MPFR_RNDN); /* (1+u)^(10m-7) */
+ MPFR_ASSERTD(MPFR_GET_EXP(v) <= - (2 * m + 3));
+ mpfr_add (s, s, v, MPFR_RNDN);
+ }
+ /* m <= 1/2*Pi*e*z ensures that |v[m]| < 1/2^(2m+3) */
+ MPFR_ASSERTD ((double) m <= 4.26 * mpfr_get_d (z, MPFR_RNDZ));
+
+ /* We have sum([(1+u)^(10m-7)-1]*1/2^(2m+3), m=2..infinity)
+ <= 1.46*u for u <= 2^(-3).
+ We have 0 < lngamma(z) - [(z - 1/2) ln(z) - z + 1/2 ln(2 Pi)] < 0.021
+ for z >= 4, thus since the initial s >= 0.85, the different values of
+ s differ by at most one binade, and the total rounding error on s
+ in the for-loop is bounded by 2*(m-1)*ulp(final_s).
+ The error coming from the v's is bounded by
+ 1.46*2^(-w) <= 2*ulp(final_s).
+ Thus the total error so far is bounded by [(1+u)^15-1]*s+2m*ulp(s)
+ <= (2m+47)*ulp(s).
+ Taking into account the truncation error (which is bounded by the last
+ term v[] according to 6.1.42 in A&S), the bound is (2m+48)*ulp(s).
+ */
+
+ /* add 1/2*log(2*Pi) and subtract log(z0*(z0+1)*...*(z0+k-1)) */
+ mpfr_const_pi (v, MPFR_RNDN); /* v = Pi*(1+u) */
+ mpfr_mul_2ui (v, v, 1, MPFR_RNDN); /* v = 2*Pi * (1+u) */
+ if (k)
+ {
+ unsigned long l;
+ mpfr_set (t, z0, MPFR_RNDN); /* t = z0*(1+u) */
+ for (l = 1; l < k; l++)
+ {
+ mpfr_add_ui (u, z0, l, MPFR_RNDN); /* u = (z0+l)*(1+u) */
+ mpfr_mul (t, t, u, MPFR_RNDN); /* (1+u)^(2l+1) */
+ }
+ /* now t: (1+u)^(2k-1) */
+ /* instead of computing log(sqrt(2*Pi)/t), we compute
+ 1/2*log(2*Pi/t^2), which trades a square root for a square */
+ mpfr_mul (t, t, t, MPFR_RNDN); /* (z0*...*(z0+k-1))^2, (1+u)^(4k-1) */
+ mpfr_div (v, v, t, MPFR_RNDN);
+ /* 2*Pi/(z0*...*(z0+k-1))^2 (1+u)^(4k+1) */
+ }
+#ifdef IS_GAMMA
+ err_s = MPFR_GET_EXP(s);
+ mpfr_exp (s, s, MPFR_RNDN);
+ /* If s is +Inf, we compute exp(lngamma(z0)). */
+ if (mpfr_inf_p (s))
+ {
+ inexact = mpfr_explgamma (y, z0, &expo, s, t, rnd);
+ if (inexact)
+ goto end0;
+ else
+ goto ziv_next;
+ }
+ /* before the exponential, we have s = s0 + h where
+ |h| <= (2m+48)*ulp(s), thus exp(s0) = exp(s) * exp(-h).
+ For |h| <= 1/4, we have |exp(h)-1| <= 1.2*|h| thus
+ |exp(s) - exp(s0)| <= 1.2 * exp(s) * (2m+48)* 2^(EXP(s)-w). */
+ d = 1.2 * (2.0 * (double) m + 48.0);
+ /* the error on s is bounded by d*2^err_s * 2^(-w) */
+ mpfr_sqrt (t, v, MPFR_RNDN);
+ /* let v0 be the exact value of v. We have v = v0*(1+u)^(4k+1),
+ thus t = sqrt(v0)*(1+u)^(2k+3/2). */
+ mpfr_mul (s, s, t, MPFR_RNDN);
+ /* the error on input s is bounded by (1+u)^(d*2^err_s),
+ and that on t is (1+u)^(2k+3/2), thus the
+ total error is (1+u)^(d*2^err_s+2k+5/2) */
+ err_s += __gmpfr_ceil_log2 (d);
+ err_t = __gmpfr_ceil_log2 (2.0 * (double) k + 2.5);
+ err_s = (err_s >= err_t) ? err_s + 1 : err_t + 1;
+#else
+ mpfr_log (t, v, MPFR_RNDN);
+ /* let v0 be the exact value of v. We have v = v0*(1+u)^(4k+1),
+ thus log(v) = log(v0) + (4k+1)*log(1+u). Since |log(1+u)/u| <= 1.07
+ for |u| <= 2^(-3), the absolute error on log(v) is bounded by
+ 1.07*(4k+1)*u, and the rounding error by ulp(t). */
+ mpfr_div_2ui (t, t, 1, MPFR_RNDN);
+ /* the error on t is now bounded by ulp(t) + 0.54*(4k+1)*2^(-w).
+ We have sqrt(2*Pi)/(z0*(z0+1)*...*(z0+k-1)) <= sqrt(2*Pi)/k! <= 0.5
+ since k>=3, thus t <= -0.5 and ulp(t) >= 2^(-w).
+ Thus the error on t is bounded by (2.16*k+1.54)*ulp(t). */
+ err_t = MPFR_GET_EXP(t) + (mpfr_exp_t)
+ __gmpfr_ceil_log2 (2.2 * (double) k + 1.6);
+ err_s = MPFR_GET_EXP(s) + (mpfr_exp_t)
+ __gmpfr_ceil_log2 (2.0 * (double) m + 48.0);
+ mpfr_add (s, s, t, MPFR_RNDN); /* this is a subtraction in fact */
+ /* the final error in ulp(s) is
+ <= 1 + 2^(err_t-EXP(s)) + 2^(err_s-EXP(s))
+ <= 2^(1+max(err_t,err_s)-EXP(s)) if err_t <> err_s
+ <= 2^(2+max(err_t,err_s)-EXP(s)) if err_t = err_s */
+ err_s = (err_t == err_s) ? 1 + err_s : ((err_t > err_s) ? err_t : err_s);
+ err_s += 1 - MPFR_GET_EXP(s);
+#endif
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, w - err_s, precy, rnd)))
+ break;
+#ifdef IS_GAMMA
+ ziv_next:
+#endif
+ MPFR_ZIV_NEXT (loop, w);
+ }
+
+#ifdef IS_GAMMA
+ end0:
+#endif
+ oldBm = Bm;
+ while (Bm--)
+ mpz_clear (B[Bm]);
+ (*__gmp_free_func) (B, oldBm * sizeof (mpz_t));
+
+ end:
+ if (inexact == 0)
+ inexact = mpfr_set (y, s, rnd);
+ MPFR_ZIV_FREE (loop);
+
+ mpfr_clear (s);
+ mpfr_clear (t);
+ mpfr_clear (u);
+ mpfr_clear (v);
+ mpfr_clear (z);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd);
+}
+
+#ifndef IS_GAMMA
+
+int
+mpfr_lngamma (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ int inex;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inex));
+
+ /* special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x) || MPFR_IS_NEG (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else /* lngamma(+Inf) = lngamma(+0) = +Inf */
+ {
+ if (MPFR_IS_ZERO (x))
+ mpfr_set_divby0 ();
+ MPFR_SET_INF (y);
+ MPFR_SET_POS (y);
+ MPFR_RET (0); /* exact */
+ }
+ }
+
+ /* if x < 0 and -2k-1 <= x <= -2k, then lngamma(x) = NaN */
+ if (MPFR_IS_NEG (x) && (unit_bit (x) == 0 || mpfr_integer_p (x)))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+
+ inex = mpfr_lngamma_aux (y, x, rnd);
+ return inex;
+}
+
+int
+mpfr_lgamma (mpfr_ptr y, int *signp, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ int inex;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
+ ("y[%Pu]=%.*Rg signp=%d inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, *signp, inex));
+
+ *signp = 1; /* most common case */
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ if (MPFR_IS_ZERO (x))
+ mpfr_set_divby0 ();
+ *signp = MPFR_INT_SIGN (x);
+ MPFR_SET_INF (y);
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ }
+
+ if (MPFR_IS_NEG (x))
+ {
+ if (mpfr_integer_p (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_POS (y);
+ mpfr_set_divby0 ();
+ MPFR_RET (0);
+ }
+
+ if (unit_bit (x) == 0)
+ *signp = -1;
+
+ /* For tiny negative x, we have gamma(x) = 1/x - euler + O(x),
+ thus |gamma(x)| = -1/x + euler + O(x), and
+ log |gamma(x)| = -log(-x) - euler*x + O(x^2).
+ More precisely we have for -0.4 <= x < 0:
+ -log(-x) <= log |gamma(x)| <= -log(-x) - x.
+ Since log(x) is not representable, we may have an instance of the
+ Table Maker Dilemma. The only way to ensure correct rounding is to
+ compute an interval [l,h] such that l <= -log(-x) and
+ -log(-x) - x <= h, and check whether l and h round to the same number
+ for the target precision and rounding modes. */
+ if (MPFR_EXP(x) + 1 <= - (mpfr_exp_t) MPFR_PREC(y))
+ /* since PREC(y) >= 1, this ensures EXP(x) <= -2,
+ thus |x| <= 0.25 < 0.4 */
+ {
+ mpfr_t l, h;
+ int ok, inex2;
+ mpfr_prec_t w = MPFR_PREC (y) + 14;
+ mpfr_exp_t expl;
+
+ while (1)
+ {
+ mpfr_init2 (l, w);
+ mpfr_init2 (h, w);
+ /* we want a lower bound on -log(-x), thus an upper bound
+ on log(-x), thus an upper bound on -x. */
+ mpfr_neg (l, x, MPFR_RNDU); /* upper bound on -x */
+ mpfr_log (l, l, MPFR_RNDU); /* upper bound for log(-x) */
+ mpfr_neg (l, l, MPFR_RNDD); /* lower bound for -log(-x) */
+ mpfr_neg (h, x, MPFR_RNDD); /* lower bound on -x */
+ mpfr_log (h, h, MPFR_RNDD); /* lower bound on log(-x) */
+ mpfr_neg (h, h, MPFR_RNDU); /* upper bound for -log(-x) */
+ mpfr_sub (h, h, x, MPFR_RNDU); /* upper bound for -log(-x) - x */
+ inex = mpfr_prec_round (l, MPFR_PREC (y), rnd);
+ inex2 = mpfr_prec_round (h, MPFR_PREC (y), rnd);
+ /* Caution: we not only need l = h, but both inexact flags
+ should agree. Indeed, one of the inexact flags might be
+ zero. In that case if we assume ln|gamma(x)| cannot be
+ exact, the other flag should be correct. We are conservative
+ here and request that both inexact flags agree. */
+ ok = SAME_SIGN (inex, inex2) && mpfr_equal_p (l, h);
+ if (ok)
+ mpfr_set (y, h, rnd); /* exact */
+ else
+ expl = MPFR_EXP (l);
+ mpfr_clear (l);
+ mpfr_clear (h);
+ if (ok)
+ return inex;
+ /* if ulp(log(-x)) <= |x| there is no reason to loop,
+ since the width of [l, h] will be at least |x| */
+ if (expl < MPFR_EXP(x) + (mpfr_exp_t) w)
+ break;
+ w += MPFR_INT_CEIL_LOG2(w) + 3;
+ }
+ }
+ }
+
+ inex = mpfr_lngamma_aux (y, x, rnd);
+ return inex;
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/log.c b/Build/source/libs/mpfr/mpfr-src/src/log.c
new file mode 100644
index 00000000000..d751a689fbc
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/log.c
@@ -0,0 +1,171 @@
+/* mpfr_log -- natural logarithm of a floating-point number
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of log(x) is done using the formula :
+ if we want p bits of the result,
+
+ pi
+ log(x) ~ ------------ - m log 2
+ 2 AG(1,4/s)
+
+ where s = x 2^m > 2^(p/2)
+
+ More precisely, if F(x) = int(1/sqrt(1-(1-x^2)*sin(t)^2), t=0..PI/2),
+ then for s>=1.26 we have log(s) < F(4/s) < log(s)*(1+4/s^2)
+ from which we deduce pi/2/AG(1,4/s)*(1-4/s^2) < log(s) < pi/2/AG(1,4/s)
+ so the relative error 4/s^2 is < 4/2^p i.e. 4 ulps.
+*/
+
+int
+mpfr_log (mpfr_ptr r, mpfr_srcptr a, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_prec_t p, q;
+ mpfr_t tmp1, tmp2;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+ MPFR_GROUP_DECL(group);
+
+ MPFR_LOG_FUNC
+ (("a[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (a), mpfr_log_prec, a, rnd_mode),
+ ("r[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (r), mpfr_log_prec, r,
+ inexact));
+
+ /* Special cases */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (a)))
+ {
+ /* If a is NaN, the result is NaN */
+ if (MPFR_IS_NAN (a))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ /* check for infinity before zero */
+ else if (MPFR_IS_INF (a))
+ {
+ if (MPFR_IS_NEG (a))
+ /* log(-Inf) = NaN */
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ else /* log(+Inf) = +Inf */
+ {
+ MPFR_SET_INF (r);
+ MPFR_SET_POS (r);
+ MPFR_RET (0);
+ }
+ }
+ else /* a is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (a));
+ MPFR_SET_INF (r);
+ MPFR_SET_NEG (r);
+ mpfr_set_divby0 ();
+ MPFR_RET (0); /* log(0) is an exact -infinity */
+ }
+ }
+ /* If a is negative, the result is NaN */
+ else if (MPFR_UNLIKELY (MPFR_IS_NEG (a)))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ /* If a is 1, the result is 0 */
+ else if (MPFR_UNLIKELY (MPFR_GET_EXP (a) == 1 && mpfr_cmp_ui (a, 1) == 0))
+ {
+ MPFR_SET_ZERO (r);
+ MPFR_SET_POS (r);
+ MPFR_RET (0); /* only "normal" case where the result is exact */
+ }
+
+ q = MPFR_PREC (r);
+
+ /* use initial precision about q+lg(q)+5 */
+ p = q + 5 + 2 * MPFR_INT_CEIL_LOG2 (q);
+ /* % ~(mpfr_prec_t)GMP_NUMB_BITS ;
+ m=q; while (m) { p++; m >>= 1; } */
+ /* if (MPFR_LIKELY(p % GMP_NUMB_BITS != 0))
+ p += GMP_NUMB_BITS - (p%GMP_NUMB_BITS); */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_GROUP_INIT_2 (group, p, tmp1, tmp2);
+
+ MPFR_ZIV_INIT (loop, p);
+ for (;;)
+ {
+ long m;
+ mpfr_exp_t cancel;
+
+ /* Calculus of m (depends on p) */
+ m = (p + 1) / 2 - MPFR_GET_EXP (a) + 1;
+
+ mpfr_mul_2si (tmp2, a, m, MPFR_RNDN); /* s=a*2^m, err<=1 ulp */
+ mpfr_div (tmp1, __gmpfr_four, tmp2, MPFR_RNDN);/* 4/s, err<=2 ulps */
+ mpfr_agm (tmp2, __gmpfr_one, tmp1, MPFR_RNDN); /* AG(1,4/s),err<=3 ulps */
+ mpfr_mul_2ui (tmp2, tmp2, 1, MPFR_RNDN); /* 2*AG(1,4/s), err<=3 ulps */
+ mpfr_const_pi (tmp1, MPFR_RNDN); /* compute pi, err<=1ulp */
+ mpfr_div (tmp2, tmp1, tmp2, MPFR_RNDN); /* pi/2*AG(1,4/s), err<=5ulps */
+ mpfr_const_log2 (tmp1, MPFR_RNDN); /* compute log(2), err<=1ulp */
+ mpfr_mul_si (tmp1, tmp1, m, MPFR_RNDN); /* compute m*log(2),err<=2ulps */
+ mpfr_sub (tmp1, tmp2, tmp1, MPFR_RNDN); /* log(a), err<=7ulps+cancel */
+
+ if (MPFR_LIKELY (MPFR_IS_PURE_FP (tmp1) && MPFR_IS_PURE_FP (tmp2)))
+ {
+ cancel = MPFR_GET_EXP (tmp2) - MPFR_GET_EXP (tmp1);
+ MPFR_LOG_MSG (("canceled bits=%ld\n", (long) cancel));
+ MPFR_LOG_VAR (tmp1);
+ if (MPFR_UNLIKELY (cancel < 0))
+ cancel = 0;
+
+ /* we have 7 ulps of error from the above roundings,
+ 4 ulps from the 4/s^2 second order term,
+ plus the canceled bits */
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (tmp1, p-cancel-4, q, rnd_mode)))
+ break;
+
+ /* VL: I think it is better to have an increment that it isn't
+ too low; in particular, the increment must be positive even
+ if cancel = 0 (can this occur?). */
+ p += cancel >= 8 ? cancel : 8;
+ }
+ else
+ {
+ /* TODO: find why this case can occur and what is best to do
+ with it. */
+ p += 32;
+ }
+
+ MPFR_ZIV_NEXT (loop, p);
+ MPFR_GROUP_REPREC_2 (group, p, tmp1, tmp2);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (r, tmp1, rnd_mode);
+ /* We clean */
+ MPFR_GROUP_CLEAR (group);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/log10.c b/Build/source/libs/mpfr/mpfr-src/src/log10.c
new file mode 100644
index 00000000000..d358d9ce6f9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/log10.c
@@ -0,0 +1,150 @@
+/* mpfr_log10 -- logarithm in base 10.
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of r=log10(a)
+
+ r=log10(a)=log(a)/log(10)
+ */
+
+int
+mpfr_log10 (mpfr_ptr r, mpfr_srcptr a, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("a[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (a), mpfr_log_prec, a, rnd_mode),
+ ("r[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (r), mpfr_log_prec, r, inexact));
+
+ /* If a is NaN, the result is NaN */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (a)))
+ {
+ if (MPFR_IS_NAN (a))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ /* check for infinity before zero */
+ else if (MPFR_IS_INF (a))
+ {
+ if (MPFR_IS_NEG (a))
+ /* log10(-Inf) = NaN */
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ else /* log10(+Inf) = +Inf */
+ {
+ MPFR_SET_INF (r);
+ MPFR_SET_POS (r);
+ MPFR_RET (0); /* exact */
+ }
+ }
+ else /* a = 0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (a));
+ MPFR_SET_INF (r);
+ MPFR_SET_NEG (r);
+ mpfr_set_divby0 ();
+ MPFR_RET (0); /* log10(0) is an exact -infinity */
+ }
+ }
+
+ /* If a is negative, the result is NaN */
+ if (MPFR_UNLIKELY (MPFR_IS_NEG (a)))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+
+ /* If a is 1, the result is 0 */
+ if (mpfr_cmp_ui (a, 1) == 0)
+ {
+ MPFR_SET_ZERO (r);
+ MPFR_SET_POS (r);
+ MPFR_RET (0); /* result is exact */
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t, tt;
+ MPFR_ZIV_DECL (loop);
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(r); /* Precision of output variable */
+ mpfr_prec_t Nt; /* Precision of the intermediary variable */
+ mpfr_exp_t err; /* Precision of error */
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + 4 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ /* initialise of intermediary variables */
+ mpfr_init2 (t, Nt);
+ mpfr_init2 (tt, Nt);
+
+ /* First computation of log10 */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute log10 */
+ mpfr_set_ui (t, 10, MPFR_RNDN); /* 10 */
+ mpfr_log (t, t, MPFR_RNDD); /* log(10) */
+ mpfr_log (tt, a, MPFR_RNDN); /* log(a) */
+ mpfr_div (t, tt, t, MPFR_RNDN); /* log(a)/log(10) */
+
+ /* estimation of the error */
+ err = Nt - 4;
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ break;
+
+ /* log10(10^n) is exact:
+ FIXME: Can we have 10^n exactly representable as a mpfr_t
+ but n can't fit an unsigned long? */
+ if (MPFR_IS_POS (t)
+ && mpfr_integer_p (t) && mpfr_fits_ulong_p (t, MPFR_RNDN)
+ && !mpfr_ui_pow_ui (tt, 10, mpfr_get_ui (t, MPFR_RNDN), MPFR_RNDN)
+ && mpfr_cmp (a, tt) == 0)
+ break;
+
+ /* actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ mpfr_set_prec (tt, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (r, t, rnd_mode);
+
+ mpfr_clear (t);
+ mpfr_clear (tt);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/log1p.c b/Build/source/libs/mpfr/mpfr-src/src/log1p.c
new file mode 100644
index 00000000000..6ef0e866ca8
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/log1p.c
@@ -0,0 +1,158 @@
+/* mpfr_log1p -- Compute log(1+x)
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of log1p is done by
+ log1p(x)=log(1+x) */
+
+int
+mpfr_log1p (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int comp, inexact;
+ mpfr_exp_t ex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ /* check for inf or -inf (result is not defined) */
+ else if (MPFR_IS_INF (x))
+ {
+ if (MPFR_IS_POS (x))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ else
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y); /* log1p(+/- 0) = +/- 0 */
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ }
+
+ ex = MPFR_GET_EXP (x);
+ if (ex < 0) /* -0.5 < x < 0.5 */
+ {
+ /* For x > 0, abs(log(1+x)-x) < x^2/2.
+ For x > -0.5, abs(log(1+x)-x) < x^2. */
+ if (MPFR_IS_POS (x))
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex - 1, 0, 0, rnd_mode, {});
+ else
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 0, 1, rnd_mode, {});
+ }
+
+ comp = mpfr_cmp_si (x, -1);
+ /* log1p(x) is undefined for x < -1 */
+ if (MPFR_UNLIKELY(comp <= 0))
+ {
+ if (comp == 0)
+ /* x=0: log1p(-1)=-inf (divide-by-zero exception) */
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_NEG (y);
+ mpfr_set_divby0 ();
+ MPFR_RET (0);
+ }
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t;
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(y); /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ mpfr_exp_t err; /* error */
+ MPFR_ZIV_DECL (loop);
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + MPFR_INT_CEIL_LOG2 (Ny) + 6;
+
+ /* if |x| is smaller than 2^(-e), we will loose about e bits
+ in log(1+x) */
+ if (MPFR_EXP(x) < 0)
+ Nt += -MPFR_EXP(x);
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+
+ /* First computation of log1p */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute log1p */
+ inexact = mpfr_add_ui (t, x, 1, MPFR_RNDN); /* 1+x */
+ /* if inexact = 0, then t = x+1, and the result is simply log(t) */
+ if (inexact == 0)
+ {
+ inexact = mpfr_log (y, t, rnd_mode);
+ goto end;
+ }
+ mpfr_log (t, t, MPFR_RNDN); /* log(1+x) */
+
+ /* the error is bounded by (1/2+2^(1-EXP(t))*ulp(t) (cf algorithms.tex)
+ if EXP(t)>=2, then error <= ulp(t)
+ if EXP(t)<=1, then error <= 2^(2-EXP(t))*ulp(t) */
+ err = Nt - MAX (0, 2 - MPFR_GET_EXP (t));
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ break;
+
+ /* increase the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ inexact = mpfr_set (y, t, rnd_mode);
+
+ end:
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/log2.c b/Build/source/libs/mpfr/mpfr-src/src/log2.c
new file mode 100644
index 00000000000..4aca0f55753
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/log2.c
@@ -0,0 +1,142 @@
+/* mpfr_log2 -- log base 2
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of r=log2(a)
+ r=log2(a)=log(a)/log(2) */
+
+int
+mpfr_log2 (mpfr_ptr r, mpfr_srcptr a, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("a[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (a), mpfr_log_prec, a, rnd_mode),
+ ("r[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (r), mpfr_log_prec, r,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (a)))
+ {
+ /* If a is NaN, the result is NaN */
+ if (MPFR_IS_NAN (a))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ /* check for infinity before zero */
+ else if (MPFR_IS_INF (a))
+ {
+ if (MPFR_IS_NEG (a))
+ /* log(-Inf) = NaN */
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ else /* log(+Inf) = +Inf */
+ {
+ MPFR_SET_INF (r);
+ MPFR_SET_POS (r);
+ MPFR_RET (0);
+ }
+ }
+ else /* a is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (a));
+ MPFR_SET_INF (r);
+ MPFR_SET_NEG (r);
+ mpfr_set_divby0 ();
+ MPFR_RET (0); /* log2(0) is an exact -infinity */
+ }
+ }
+
+ /* If a is negative, the result is NaN */
+ if (MPFR_UNLIKELY (MPFR_IS_NEG (a)))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+
+ /* If a is 1, the result is 0 */
+ if (MPFR_UNLIKELY (mpfr_cmp_ui (a, 1) == 0))
+ {
+ MPFR_SET_ZERO (r);
+ MPFR_SET_POS (r);
+ MPFR_RET (0); /* only "normal" case where the result is exact */
+ }
+
+ /* If a is 2^N, log2(a) is exact*/
+ if (MPFR_UNLIKELY (mpfr_cmp_ui_2exp (a, 1, MPFR_GET_EXP (a) - 1) == 0))
+ return mpfr_set_si(r, MPFR_GET_EXP (a) - 1, rnd_mode);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t, tt;
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(r); /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ mpfr_exp_t err; /* error */
+ MPFR_ZIV_DECL (loop);
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Ny + 3 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+ mpfr_init2 (tt, Nt);
+
+ /* First computation of log2 */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ /* compute log2 */
+ mpfr_const_log2(t,MPFR_RNDD); /* log(2) */
+ mpfr_log(tt,a,MPFR_RNDN); /* log(a) */
+ mpfr_div(t,tt,t,MPFR_RNDN); /* log(a)/log(2) */
+
+ /* estimation of the error */
+ err = Nt-3;
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ break;
+
+ /* actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ mpfr_set_prec (tt, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (r, t, rnd_mode);
+
+ mpfr_clear (t);
+ mpfr_clear (tt);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/logging.c b/Build/source/libs/mpfr/mpfr-src/src/logging.c
new file mode 100644
index 00000000000..dc42f9830c6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/logging.c
@@ -0,0 +1,124 @@
+/* MPFR Logging functions.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Logging MPFR needs GCC >= 3.0 and GLIBC >= 2.0. */
+
+#ifdef MPFR_USE_LOGGING
+
+/* Can't include them before (in particular, printf.h) */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <time.h>
+
+/* Define LOGGING variables */
+
+FILE *mpfr_log_file;
+int mpfr_log_type;
+int mpfr_log_level;
+int mpfr_log_current;
+int mpfr_log_worstcase_limit;
+mpfr_prec_t mpfr_log_prec;
+
+static void mpfr_log_begin (void) __attribute__((constructor));
+
+/* We let the system close the LOG itself
+ (Otherwise functions called by destructor can't use LOG File */
+static void
+mpfr_log_begin (void)
+{
+ const char *var;
+ time_t tt;
+
+ /* Grab some information */
+ var = getenv ("MPFR_LOG_LEVEL");
+ mpfr_log_level = var == NULL || *var == 0 ? 7 : atoi (var);
+ mpfr_log_current = 0;
+
+ var = getenv ("MPFR_LOG_PREC");
+ mpfr_log_prec = var == NULL ? 6 : atol (var);
+
+ /* Get what we need to log */
+ mpfr_log_type = 0;
+ if (getenv ("MPFR_LOG_INPUT") != NULL)
+ mpfr_log_type |= MPFR_LOG_INPUT_F;
+ if (getenv ("MPFR_LOG_OUTPUT") != NULL)
+ mpfr_log_type |= MPFR_LOG_OUTPUT_F;
+ if (getenv ("MPFR_LOG_TIME") != NULL)
+ mpfr_log_type |= MPFR_LOG_TIME_F;
+ if (getenv ("MPFR_LOG_INTERNAL") != NULL)
+ mpfr_log_type |= MPFR_LOG_INTERNAL_F;
+ if (getenv ("MPFR_LOG_MSG") != NULL)
+ mpfr_log_type |= MPFR_LOG_MSG_F;
+ if (getenv ("MPFR_LOG_ZIV") != NULL)
+ mpfr_log_type |= MPFR_LOG_BADCASE_F;
+ if (getenv ("MPFR_LOG_STAT") != NULL)
+ mpfr_log_type |= MPFR_LOG_STAT_F;
+ if (getenv ("MPFR_LOG_ALL") != NULL)
+ mpfr_log_type = MPFR_LOG_INPUT_F|MPFR_LOG_OUTPUT_F|MPFR_LOG_TIME_F
+ |MPFR_LOG_INTERNAL_F|MPFR_LOG_MSG_F|MPFR_LOG_BADCASE_F|MPFR_LOG_STAT_F;
+
+ /* Open filename if needed */
+ var = getenv ("MPFR_LOG_FILE");
+ if (var == NULL || *var == 0)
+ var = "mpfr.log";
+ if (mpfr_log_type != 0)
+ {
+ mpfr_log_file = fopen (var, "w");
+ if (mpfr_log_file == NULL)
+ {
+ fprintf (stderr, "MPFR LOG: Can't open '%s' with w.\n", var);
+ abort ();
+ }
+ time (&tt);
+ fprintf (mpfr_log_file, "MPFR LOG FILE %s\n", ctime (&tt));
+ }
+}
+
+/* Return user CPU time measured in milliseconds. Thanks to Torbjorn. */
+
+#if defined (ANSIONLY) || defined (USG) || defined (__SVR4) \
+ || defined (_UNICOS) || defined(__hpux)
+
+int
+mpfr_get_cputime (void)
+{
+ return (int) ((unsigned long long) clock () * 1000 / CLOCKS_PER_SEC);
+}
+
+#else /* Use getrusage for cputime */
+
+#include <sys/types.h>
+#include <sys/resource.h>
+
+int
+mpfr_get_cputime (void)
+{
+ struct rusage rus;
+ getrusage (0, &rus);
+ return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
+}
+
+#endif /* cputime */
+
+#endif /* MPFR_USE_LOGGING */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/min_prec.c b/Build/source/libs/mpfr/mpfr-src/src/min_prec.c
new file mode 100644
index 00000000000..c5e22755961
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/min_prec.c
@@ -0,0 +1,33 @@
+/* mpfr_min_prec -- minimal size in bits to hold the mantissa
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+mpfr_prec_t
+mpfr_min_prec (mpfr_srcptr x)
+{
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return 0;
+
+ /* from a suggestion by Andreas Enge (2010-11-18) */
+ return MPFR_LIMB_SIZE (x) * GMP_NUMB_BITS - mpn_scan1 (MPFR_MANT (x), 0);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/minmax.c b/Build/source/libs/mpfr/mpfr-src/src/minmax.c
new file mode 100644
index 00000000000..c9dee653f63
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/minmax.c
@@ -0,0 +1,92 @@
+/* mpfr_min -- min and max of x, y
+
+Copyright 2001, 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#include "mpfr-impl.h"
+
+ /* The computation of z=min(x,y)
+
+ z=x if x <= y
+ z=y if x > y
+ */
+
+int
+mpfr_min (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_ARE_SINGULAR(x,y))
+ {
+ if (MPFR_IS_NAN(x) && MPFR_IS_NAN(y) )
+ {
+ MPFR_SET_NAN(z);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_NAN(x))
+ return mpfr_set(z, y, rnd_mode);
+ else if (MPFR_IS_NAN(y))
+ return mpfr_set(z, x, rnd_mode);
+ else if (MPFR_IS_ZERO(x) && MPFR_IS_ZERO(y))
+ {
+ if (MPFR_IS_NEG(x))
+ return mpfr_set(z, x, rnd_mode);
+ else
+ return mpfr_set(z, y, rnd_mode);
+ }
+ }
+ if (mpfr_cmp(x,y) <= 0)
+ return mpfr_set(z, x, rnd_mode);
+ else
+ return mpfr_set(z, y, rnd_mode);
+}
+
+ /* The computation of z=max(x,y)
+
+ z=x if x >= y
+ z=y if x < y
+ */
+
+int
+mpfr_max (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_ARE_SINGULAR(x,y))
+ {
+ if (MPFR_IS_NAN(x) && MPFR_IS_NAN(y) )
+ {
+ MPFR_SET_NAN(z);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_NAN(x))
+ return mpfr_set(z, y, rnd_mode);
+ else if (MPFR_IS_NAN(y))
+ return mpfr_set(z, x, rnd_mode);
+ else if (MPFR_IS_ZERO(x) && MPFR_IS_ZERO(y))
+ {
+ if (MPFR_IS_NEG(x))
+ return mpfr_set(z, y, rnd_mode);
+ else
+ return mpfr_set(z, x, rnd_mode);
+ }
+ }
+ if (mpfr_cmp(x,y) <= 0)
+ return mpfr_set(z, y, rnd_mode);
+ else
+ return mpfr_set(z, x, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/modf.c b/Build/source/libs/mpfr/mpfr-src/src/modf.c
new file mode 100644
index 00000000000..e74ce168c61
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/modf.c
@@ -0,0 +1,102 @@
+/* mpfr_modf -- Integral and fractional part.
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#define INEXPOS(y) ((y) == 0 ? 0 : (((y) > 0) ? 1 : 2))
+#define INEX(y,z) (INEXPOS(y) | (INEXPOS(z) << 2))
+
+/* Set iop to the integral part of op and fop to its fractional part */
+int
+mpfr_modf (mpfr_ptr iop, mpfr_ptr fop, mpfr_srcptr op, mpfr_rnd_t rnd_mode)
+{
+ mpfr_exp_t ope;
+ mpfr_prec_t opq;
+ int inexi, inexf;
+
+ MPFR_LOG_FUNC
+ (("op[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (op), mpfr_log_prec, op, rnd_mode),
+ ("iop[%Pu]=%.*Rg fop[%Pu]=%.*Rg",
+ mpfr_get_prec (iop), mpfr_log_prec, iop,
+ mpfr_get_prec (fop), mpfr_log_prec, fop));
+
+ MPFR_ASSERTN (iop != fop);
+
+ if ( MPFR_UNLIKELY (MPFR_IS_SINGULAR (op)) )
+ {
+ if (MPFR_IS_NAN (op))
+ {
+ MPFR_SET_NAN (iop);
+ MPFR_SET_NAN (fop);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_SAME_SIGN (iop, op);
+ MPFR_SET_SAME_SIGN (fop, op);
+ if (MPFR_IS_INF (op))
+ {
+ MPFR_SET_INF (iop);
+ MPFR_SET_ZERO (fop);
+ MPFR_RET (0);
+ }
+ else /* op is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (op));
+ MPFR_SET_ZERO (iop);
+ MPFR_SET_ZERO (fop);
+ MPFR_RET (0);
+ }
+ }
+
+ ope = MPFR_GET_EXP (op);
+ opq = MPFR_PREC (op);
+
+ if (ope <= 0) /* 0 < |op| < 1 */
+ {
+ inexf = (fop != op) ? mpfr_set (fop, op, rnd_mode) : 0;
+ MPFR_SET_SAME_SIGN (iop, op);
+ MPFR_SET_ZERO (iop);
+ MPFR_RET (INEX(0, inexf));
+ }
+ else if (ope >= opq) /* op has no fractional part */
+ {
+ inexi = (iop != op) ? mpfr_set (iop, op, rnd_mode) : 0;
+ MPFR_SET_SAME_SIGN (fop, op);
+ MPFR_SET_ZERO (fop);
+ MPFR_RET (INEX(inexi, 0));
+ }
+ else /* op has both integral and fractional parts */
+ {
+ if (iop != op)
+ {
+ inexi = mpfr_rint_trunc (iop, op, rnd_mode);
+ inexf = mpfr_frac (fop, op, rnd_mode);
+ }
+ else
+ {
+ MPFR_ASSERTN (fop != op);
+ inexf = mpfr_frac (fop, op, rnd_mode);
+ inexi = mpfr_rint_trunc (iop, op, rnd_mode);
+ }
+ MPFR_RET (INEX(inexi, inexf));
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mp_clz_tab.c b/Build/source/libs/mpfr/mpfr-src/src/mp_clz_tab.c
new file mode 100644
index 00000000000..b63373880c7
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mp_clz_tab.c
@@ -0,0 +1,38 @@
+/* __clz_tab -- support for longlong.h
+
+ THE CONTENTS OF THIS FILE ARE FOR INTERNAL USE AND MAY CHANGE
+ INCOMPATIBLY OR DISAPPEAR IN A FUTURE GNU MPFR RELEASE.
+
+Copyright 1991, 1993-1994, 1996-1997, 2000-2001, 2004, 2006-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+It has been copied and adapted from the GNU MP Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#if defined(COUNT_LEADING_ZEROS_NEED_CLZ_TAB) && defined(__GMPFR_GMP_H__)
+const
+unsigned char __clz_tab[128] =
+{
+ 1,2,3,3,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
+};
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mparam_h.in b/Build/source/libs/mpfr/mpfr-src/src/mparam_h.in
new file mode 100644
index 00000000000..bd6c91c6201
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mparam_h.in
@@ -0,0 +1,94 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __MPFR_IMPL_H__
+# error "MPFR Internal not included"
+#endif
+
+/* Note: the different macros used here are those defined by gcc,
+ for example with gcc -dM -E -xc /dev/null
+ As of gcc 4.2, you can also use: -march=native or -mtune=native */
+
+#if 1 /* no processor specific optimization for TeX Live */
+#define MPFR_TUNE_CASE "default"
+#elif defined (__tune_pentium4__) /* Threshold for Pentium 4 */
+#define MPFR_TUNE_CASE "src/x86_64/pentium4/mparam.h"
+#include "x86_64/pentium4/mparam.h"
+
+#elif (defined (__tune_core2__) || defined (__tune_nocona__)) && defined (__x86_64) /* 64-bit Core 2 or Xeon */
+#define MPFR_TUNE_CASE "src/x86_64/core2/mparam.h"
+#include "x86_64/core2/mparam.h"
+
+#elif defined (__tune_core2__) && defined (__i386) /* 32-bit Core 2,
+ for example a 64-bit machine with gmp/mpfr compiled with ABI=32 */
+#define MPFR_TUNE_CASE "src/x86/core2/mparam.h"
+#include "x86/core2/mparam.h"
+
+#elif defined (__tune_k8__) /* Threshold for AMD 64 */
+#define MPFR_TUNE_CASE "src/amd/k8/mparam.h"
+#include "amd/k8/mparam.h"
+
+#elif defined (__tune_athlon__) /* Threshold for Athlon */
+#define MPFR_TUNE_CASE "src/amd/athlon/mparam.h"
+#include "amd/athlon/mparam.h"
+
+#elif defined (__tune_pentiumpro__) || defined (__tune_i686__) || defined (__i386) /* we consider all other 386's here */
+#define MPFR_TUNE_CASE "src/x86/mparam.h"
+#include "x86/mparam.h"
+
+#elif defined (__ia64) || defined (__itanium__) || defined (__tune_ia64__)
+/* Threshold for IA64 */
+#define MPFR_TUNE_CASE "src/ia64/mparam.h"
+#include "ia64/mparam.h"
+
+#elif defined (__arm__) /* Threshold for ARM */
+#define MPFR_TUNE_CASE "src/arm/mparam.h"
+#include "arm/mparam.h"
+
+#elif defined (__PPC64__) /* Threshold for 64-bit PowerPC, test it before
+ 32-bit PowerPC since _ARCH_PPC is also defined
+ on 64-bit PowerPC */
+#define MPFR_TUNE_CASE "src/powerpc64/mparam.h"
+#include "powerpc64/mparam.h"
+
+#elif defined (_ARCH_PPC) /* Threshold for 32-bit PowerPC */
+#define MPFR_TUNE_CASE "src/powerpc32/mparam.h"
+#include "powerpc32/mparam.h"
+
+#elif defined (__sparc_v9__) /* Threshold for 64-bits Sparc */
+#define MPFR_TUNE_CASE "src/sparc64/mparam.h"
+#include "sparc64/mparam.h"
+
+#elif defined (__hppa__) /* Threshold for HPPA */
+#define MPFR_TUNE_CASE "src/hppa/mparam.h"
+#include "hppa/mparam.h"
+
+#else
+#define MPFR_TUNE_CASE "default"
+#endif
+
+/****************************************************************
+ * Default values of Threshold. *
+ * Must be included in any case: it checks, for every constant, *
+ * if it has been defined, and it sets it to a default value if *
+ * it was not previously defined. *
+ ****************************************************************/
+#include "generic/mparam.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpf2mpfr.h b/Build/source/libs/mpfr/mpfr-src/src/mpf2mpfr.h
new file mode 100644
index 00000000000..03f6afbf890
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpf2mpfr.h
@@ -0,0 +1,175 @@
+/* mpf2mpfr.h -- Compatibility include file with mpf.
+
+Copyright 1999-2002, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __MPFR_FROM_MPF__
+#define __MPFR_FROM_MPF__
+
+/* types */
+#define mpf_t mpfr_t
+#define mpf_srcptr mpfr_srcptr
+#define mpf_ptr mpfr_ptr
+
+/* Get current Rounding Mode */
+#ifndef MPFR_DEFAULT_RND
+# define MPFR_DEFAULT_RND mpfr_get_default_rounding_mode ()
+#endif
+
+/* mpf_init initalizes at 0 */
+#undef mpf_init
+#define mpf_init(x) mpfr_init_set_ui ((x), 0, MPFR_DEFAULT_RND)
+#undef mpf_init2
+#define mpf_init2(x,p) (mpfr_init2((x),(p)), mpfr_set_ui ((x), 0, MPFR_DEFAULT_RND))
+
+/* functions which don't take as argument the rounding mode */
+#undef mpf_ceil
+#define mpf_ceil mpfr_ceil
+#undef mpf_clear
+#define mpf_clear mpfr_clear
+#undef mpf_cmp
+#define mpf_cmp mpfr_cmp
+#undef mpf_cmp_si
+#define mpf_cmp_si mpfr_cmp_si
+#undef mpf_cmp_ui
+#define mpf_cmp_ui mpfr_cmp_ui
+#undef mpf_cmp_d
+#define mpf_cmp_d mpfr_cmp_d
+#undef mpf_eq
+#define mpf_eq mpfr_eq
+#undef mpf_floor
+#define mpf_floor mpfr_floor
+#undef mpf_get_prec
+#define mpf_get_prec mpfr_get_prec
+#undef mpf_integer_p
+#define mpf_integer_p mpfr_integer_p
+#undef mpf_random2
+#define mpf_random2 mpfr_random2
+#undef mpf_set_default_prec
+#define mpf_set_default_prec mpfr_set_default_prec
+#undef mpf_get_default_prec
+#define mpf_get_default_prec mpfr_get_default_prec
+#undef mpf_set_prec
+#define mpf_set_prec mpfr_set_prec
+#undef mpf_set_prec_raw
+#define mpf_set_prec_raw(x,p) mpfr_prec_round(x,p,MPFR_DEFAULT_RND)
+#undef mpf_trunc
+#define mpf_trunc mpfr_trunc
+#undef mpf_sgn
+#define mpf_sgn mpfr_sgn
+#undef mpf_swap
+#define mpf_swap mpfr_swap
+#undef mpf_dump
+#define mpf_dump mpfr_dump
+
+/* functions which take as argument the rounding mode */
+#undef mpf_abs
+#define mpf_abs(x,y) mpfr_abs(x,y,MPFR_DEFAULT_RND)
+#undef mpf_add
+#define mpf_add(x,y,z) mpfr_add(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_add_ui
+#define mpf_add_ui(x,y,z) mpfr_add_ui(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_div
+#define mpf_div(x,y,z) mpfr_div(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_div_ui
+#define mpf_div_ui(x,y,z) mpfr_div_ui(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_div_2exp
+#define mpf_div_2exp(x,y,z) mpfr_div_2exp(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_fits_slong_p
+#define mpf_fits_slong_p(x) mpfr_fits_ulong_p(x,MPFR_DEFAULT_RND)
+#undef mpf_fits_ulong_p
+#define mpf_fits_ulong_p(x) mpfr_fits_ulong_p(x,MPFR_DEFAULT_RND)
+#undef mpf_fits_sint_p
+#define mpf_fits_sint_p(x) mpfr_fits_uint_p(x,MPFR_DEFAULT_RND)
+#undef mpf_fits_uint_p
+#define mpf_fits_uint_p(x) mpfr_fits_uint_p(x,MPFR_DEFAULT_RND)
+#undef mpf_fits_sshort_p
+#define mpf_fits_sshort_p(x) mpfr_fits_ushort_p(x,MPFR_DEFAULT_RND)
+#undef mpf_fits_ushort_p
+#define mpf_fits_ushort_p(x) mpfr_fits_ushort_p(x,MPFR_DEFAULT_RND)
+#undef mpf_get_str
+#define mpf_get_str(x,y,z,t,u) mpfr_get_str(x,y,z,t,u,MPFR_DEFAULT_RND)
+#undef mpf_get_d
+#define mpf_get_d(x) mpfr_get_d(x,MPFR_DEFAULT_RND)
+#undef mpf_get_d_2exp
+#define mpf_get_d_2exp(e,x) mpfr_get_d_2exp(e,x,MPFR_DEFAULT_RND)
+#undef mpf_get_ui
+#define mpf_get_ui(x) mpfr_get_ui(x,MPFR_DEFAULT_RND)
+#undef mpf_get_si
+#define mpf_get_si(x) mpfr_get_ui(x,MPFR_DEFAULT_RND)
+#undef mpf_inp_str
+#define mpf_inp_str(x,y,z) mpfr_inp_str(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_set_str
+#define mpf_set_str(x,y,z) mpfr_set_str(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_init_set
+#define mpf_init_set(x,y) mpfr_init_set(x,y,MPFR_DEFAULT_RND)
+#undef mpf_init_set_d
+#define mpf_init_set_d(x,y) mpfr_init_set_d(x,y,MPFR_DEFAULT_RND)
+#undef mpf_init_set_si
+#define mpf_init_set_si(x,y) mpfr_init_set_si(x,y,MPFR_DEFAULT_RND)
+#undef mpf_init_set_str
+#define mpf_init_set_str(x,y,z) mpfr_init_set_str(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_init_set_ui
+#define mpf_init_set_ui(x,y) mpfr_init_set_ui(x,y,MPFR_DEFAULT_RND)
+#undef mpf_mul
+#define mpf_mul(x,y,z) mpfr_mul(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_mul_2exp
+#define mpf_mul_2exp(x,y,z) mpfr_mul_2exp(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_mul_ui
+#define mpf_mul_ui(x,y,z) mpfr_mul_ui(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_neg
+#define mpf_neg(x,y) mpfr_neg(x,y,MPFR_DEFAULT_RND)
+#undef mpf_out_str
+#define mpf_out_str(x,y,z,t) mpfr_out_str(x,y,z,t,MPFR_DEFAULT_RND)
+#undef mpf_pow_ui
+#define mpf_pow_ui(x,y,z) mpfr_pow_ui(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_reldiff
+#define mpf_reldiff(x,y,z) mpfr_reldiff(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_set
+#define mpf_set(x,y) mpfr_set(x,y,MPFR_DEFAULT_RND)
+#undef mpf_set_d
+#define mpf_set_d(x,y) mpfr_set_d(x,y,MPFR_DEFAULT_RND)
+#undef mpf_set_q
+#define mpf_set_q(x,y) mpfr_set_q(x,y,MPFR_DEFAULT_RND)
+#undef mpf_set_si
+#define mpf_set_si(x,y) mpfr_set_si(x,y,MPFR_DEFAULT_RND)
+#undef mpf_set_ui
+#define mpf_set_ui(x,y) mpfr_set_ui(x,y,MPFR_DEFAULT_RND)
+#undef mpf_set_z
+#define mpf_set_z(x,y) mpfr_set_z(x,y,MPFR_DEFAULT_RND)
+#undef mpf_sqrt
+#define mpf_sqrt(x,y) mpfr_sqrt(x,y,MPFR_DEFAULT_RND)
+#undef mpf_sqrt_ui
+#define mpf_sqrt_ui(x,y) mpfr_sqrt_ui(x,y,MPFR_DEFAULT_RND)
+#undef mpf_sub
+#define mpf_sub(x,y,z) mpfr_sub(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_sub_ui
+#define mpf_sub_ui(x,y,z) mpfr_sub_ui(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_ui_div
+#define mpf_ui_div(x,y,z) mpfr_ui_div(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_ui_sub
+#define mpf_ui_sub(x,y,z) mpfr_ui_sub(x,y,z,MPFR_DEFAULT_RND)
+#undef mpf_urandomb
+#define mpf_urandomb(x,y,n) mpfr_urandomb(x,y)
+
+#undef mpz_set_f
+#define mpz_set_f(z,f) mpfr_get_z(z,f,MPFR_DEFAULT_RND)
+
+#endif /* __MPFR_FROM_MPF__ */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.c b/Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.c
new file mode 100644
index 00000000000..893b2e495ad
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.c
@@ -0,0 +1,386 @@
+/* mpfr_gmp -- Limited gmp-impl emulator
+ Modified version of the GMP files.
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdlib.h> /* For malloc, free, realloc and abort */
+
+#include "mpfr-impl.h"
+
+#ifndef MPFR_HAVE_GMP_IMPL
+
+char mpfr_rands_initialized = 0;
+gmp_randstate_t mpfr_rands;
+
+const struct bases mpfr_bases[257] =
+{
+ /* 0 */ {0.0},
+ /* 1 */ {1e37},
+ /* 2 */ {1.0000000000000000},
+ /* 3 */ {0.6309297535714574},
+ /* 4 */ {0.5000000000000000},
+ /* 5 */ {0.4306765580733931},
+ /* 6 */ {0.3868528072345416},
+ /* 7 */ {0.3562071871080222},
+ /* 8 */ {0.3333333333333333},
+ /* 9 */ {0.3154648767857287},
+ /* 10 */ {0.3010299956639812},
+ /* 11 */ {0.2890648263178878},
+ /* 12 */ {0.2789429456511298},
+ /* 13 */ {0.2702381544273197},
+ /* 14 */ {0.2626495350371935},
+ /* 15 */ {0.2559580248098155},
+ /* 16 */ {0.2500000000000000},
+ /* 17 */ {0.2446505421182260},
+ /* 18 */ {0.2398124665681314},
+ /* 19 */ {0.2354089133666382},
+ /* 20 */ {0.2313782131597592},
+ /* 21 */ {0.2276702486969530},
+ /* 22 */ {0.2242438242175754},
+ /* 23 */ {0.2210647294575037},
+ /* 24 */ {0.2181042919855316},
+ /* 25 */ {0.2153382790366965},
+ /* 26 */ {0.2127460535533632},
+ /* 27 */ {0.2103099178571525},
+ /* 28 */ {0.2080145976765095},
+ /* 29 */ {0.2058468324604344},
+ /* 30 */ {0.2037950470905062},
+ /* 31 */ {0.2018490865820999},
+ /* 32 */ {0.2000000000000000},
+ /* 33 */ {0.1982398631705605},
+ /* 34 */ {0.1965616322328226},
+ /* 35 */ {0.1949590218937863},
+ /* 36 */ {0.1934264036172708},
+ /* 37 */ {0.1919587200065601},
+ /* 38 */ {0.1905514124267734},
+ /* 39 */ {0.1892003595168700},
+ /* 40 */ {0.1879018247091076},
+ /* 41 */ {0.1866524112389434},
+ /* 42 */ {0.1854490234153689},
+ /* 43 */ {0.1842888331487062},
+ /* 44 */ {0.1831692509136336},
+ /* 45 */ {0.1820879004699383},
+ /* 46 */ {0.1810425967800402},
+ /* 47 */ {0.1800313266566926},
+ /* 48 */ {0.1790522317510414},
+ /* 49 */ {0.1781035935540111},
+ /* 50 */ {0.1771838201355579},
+ /* 51 */ {0.1762914343888821},
+ /* 52 */ {0.1754250635819545},
+ /* 53 */ {0.1745834300480449},
+ /* 54 */ {0.1737653428714400},
+ /* 55 */ {0.1729696904450771},
+ /* 56 */ {0.1721954337940981},
+ /* 57 */ {0.1714416005739134},
+ /* 58 */ {0.1707072796637201},
+ /* 59 */ {0.1699916162869140},
+ /* 60 */ {0.1692938075987814},
+ /* 61 */ {0.1686130986895011},
+ /* 62 */ {0.1679487789570419},
+ /* 63 */ {0.1673001788101741},
+ /* 64 */ {0.1666666666666667},
+ /* 65 */ {0.1660476462159378},
+ /* 66 */ {0.1654425539190583},
+ /* 67 */ {0.1648508567221603},
+ /* 68 */ {0.1642720499620502},
+ /* 69 */ {0.1637056554452156},
+ /* 70 */ {0.1631512196835108},
+ /* 71 */ {0.1626083122716342},
+ /* 72 */ {0.1620765243931223},
+ /* 73 */ {0.1615554674429964},
+ /* 74 */ {0.1610447717564444},
+ /* 75 */ {0.1605440854340214},
+ /* 76 */ {0.1600530732548213},
+ /* 77 */ {0.1595714156699382},
+ /* 78 */ {0.1590988078692941},
+ /* 79 */ {0.1586349589155960},
+ /* 80 */ {0.1581795909397823},
+ /* 81 */ {0.1577324383928644},
+ /* 82 */ {0.1572932473495469},
+ /* 83 */ {0.1568617748594410},
+ /* 84 */ {0.1564377883420715},
+ /* 85 */ {0.1560210650222250},
+ /* 86 */ {0.1556113914024939},
+ /* 87 */ {0.1552085627701551},
+ /* 88 */ {0.1548123827357682},
+ /* 89 */ {0.1544226628011101},
+ /* 90 */ {0.1540392219542636},
+ /* 91 */ {0.1536618862898642},
+ /* 92 */ {0.1532904886526781},
+ /* 93 */ {0.1529248683028321},
+ /* 94 */ {0.1525648706011593},
+ /* 95 */ {0.1522103467132434},
+ /* 96 */ {0.1518611533308632},
+ /* 97 */ {0.1515171524096389},
+ /* 98 */ {0.1511782109217764},
+ /* 99 */ {0.1508442006228941},
+ /* 100 */ {0.1505149978319906},
+ /* 101 */ {0.1501904832236880},
+ /* 102 */ {0.1498705416319474},
+ /* 103 */ {0.1495550618645152},
+ /* 104 */ {0.1492439365274121},
+ /* 105 */ {0.1489370618588283},
+ /* 106 */ {0.1486343375718350},
+ /* 107 */ {0.1483356667053617},
+ /* 108 */ {0.1480409554829326},
+ /* 109 */ {0.1477501131786861},
+ /* 110 */ {0.1474630519902391},
+ /* 111 */ {0.1471796869179852},
+ /* 112 */ {0.1468999356504447},
+ /* 113 */ {0.1466237184553111},
+ /* 114 */ {0.1463509580758620},
+ /* 115 */ {0.1460815796324244},
+ /* 116 */ {0.1458155105286054},
+ /* 117 */ {0.1455526803620167},
+ /* 118 */ {0.1452930208392429},
+ /* 119 */ {0.1450364656948130},
+ /* 120 */ {0.1447829506139581},
+ /* 121 */ {0.1445324131589439},
+ /* 122 */ {0.1442847926987864},
+ /* 123 */ {0.1440400303421672},
+ /* 124 */ {0.1437980688733776},
+ /* 125 */ {0.1435588526911310},
+ /* 126 */ {0.1433223277500932},
+ /* 127 */ {0.1430884415049874},
+ /* 128 */ {0.1428571428571428},
+ /* 129 */ {0.1426283821033600},
+ /* 130 */ {0.1424021108869747},
+ /* 131 */ {0.1421782821510107},
+ /* 132 */ {0.1419568500933153},
+ /* 133 */ {0.1417377701235801},
+ /* 134 */ {0.1415209988221527},
+ /* 135 */ {0.1413064939005528},
+ /* 136 */ {0.1410942141636095},
+ /* 137 */ {0.1408841194731412},
+ /* 138 */ {0.1406761707131039},
+ /* 139 */ {0.1404703297561400},
+ /* 140 */ {0.1402665594314587},
+ /* 141 */ {0.1400648234939879},
+ /* 142 */ {0.1398650865947379},
+ /* 143 */ {0.1396673142523192},
+ /* 144 */ {0.1394714728255649},
+ /* 145 */ {0.1392775294872041},
+ /* 146 */ {0.1390854521985406},
+ /* 147 */ {0.1388952096850913},
+ /* 148 */ {0.1387067714131417},
+ /* 149 */ {0.1385201075671774},
+ /* 150 */ {0.1383351890281539},
+ /* 151 */ {0.1381519873525671},
+ /* 152 */ {0.1379704747522905},
+ /* 153 */ {0.1377906240751463},
+ /* 154 */ {0.1376124087861776},
+ /* 155 */ {0.1374358029495937},
+ /* 156 */ {0.1372607812113589},
+ /* 157 */ {0.1370873187823978},
+ /* 158 */ {0.1369153914223921},
+ /* 159 */ {0.1367449754241439},
+ /* 160 */ {0.1365760475984821},
+ /* 161 */ {0.1364085852596902},
+ /* 162 */ {0.1362425662114337},
+ /* 163 */ {0.1360779687331669},
+ /* 164 */ {0.1359147715670014},
+ /* 165 */ {0.1357529539050150},
+ /* 166 */ {0.1355924953769864},
+ /* 167 */ {0.1354333760385373},
+ /* 168 */ {0.1352755763596663},
+ /* 169 */ {0.1351190772136599},
+ /* 170 */ {0.1349638598663645},
+ /* 171 */ {0.1348099059658080},
+ /* 172 */ {0.1346571975321549},
+ /* 173 */ {0.1345057169479844},
+ /* 174 */ {0.1343554469488779},
+ /* 175 */ {0.1342063706143054},
+ /* 176 */ {0.1340584713587979},
+ /* 177 */ {0.1339117329233981},
+ /* 178 */ {0.1337661393673756},
+ /* 179 */ {0.1336216750601996},
+ /* 180 */ {0.1334783246737591},
+ /* 181 */ {0.1333360731748201},
+ /* 182 */ {0.1331949058177136},
+ /* 183 */ {0.1330548081372441},
+ /* 184 */ {0.1329157659418126},
+ /* 185 */ {0.1327777653067443},
+ /* 186 */ {0.1326407925678156},
+ /* 187 */ {0.1325048343149731},
+ /* 188 */ {0.1323698773862368},
+ /* 189 */ {0.1322359088617821},
+ /* 190 */ {0.1321029160581950},
+ /* 191 */ {0.1319708865228925},
+ /* 192 */ {0.1318398080287045},
+ /* 193 */ {0.1317096685686114},
+ /* 194 */ {0.1315804563506306},
+ /* 195 */ {0.1314521597928493},
+ /* 196 */ {0.1313247675185968},
+ /* 197 */ {0.1311982683517524},
+ /* 198 */ {0.1310726513121843},
+ /* 199 */ {0.1309479056113158},
+ /* 200 */ {0.1308240206478128},
+ /* 201 */ {0.1307009860033912},
+ /* 202 */ {0.1305787914387386},
+ /* 203 */ {0.1304574268895465},
+ /* 204 */ {0.1303368824626505},
+ /* 205 */ {0.1302171484322746},
+ /* 206 */ {0.1300982152363760},
+ /* 207 */ {0.1299800734730872},
+ /* 208 */ {0.1298627138972530},
+ /* 209 */ {0.1297461274170591},
+ /* 210 */ {0.1296303050907487},
+ /* 211 */ {0.1295152381234257},
+ /* 212 */ {0.1294009178639407},
+ /* 213 */ {0.1292873358018581},
+ /* 214 */ {0.1291744835645007},
+ /* 215 */ {0.1290623529140715},
+ /* 216 */ {0.1289509357448472},
+ /* 217 */ {0.1288402240804449},
+ /* 218 */ {0.1287302100711566},
+ /* 219 */ {0.1286208859913518},
+ /* 220 */ {0.1285122442369443},
+ /* 221 */ {0.1284042773229231},
+ /* 222 */ {0.1282969778809442},
+ /* 223 */ {0.1281903386569819},
+ /* 224 */ {0.1280843525090381},
+ /* 225 */ {0.1279790124049077},
+ /* 226 */ {0.1278743114199984},
+ /* 227 */ {0.1277702427352035},
+ /* 228 */ {0.1276667996348261},
+ /* 229 */ {0.1275639755045533},
+ /* 230 */ {0.1274617638294791},
+ /* 231 */ {0.1273601581921740},
+ /* 232 */ {0.1272591522708010},
+ /* 233 */ {0.1271587398372755},
+ /* 234 */ {0.1270589147554692},
+ /* 235 */ {0.1269596709794558},
+ /* 236 */ {0.1268610025517973},
+ /* 237 */ {0.1267629036018709},
+ /* 238 */ {0.1266653683442337},
+ /* 239 */ {0.1265683910770258},
+ /* 240 */ {0.1264719661804097},
+ /* 241 */ {0.1263760881150453},
+ /* 242 */ {0.1262807514205999},
+ /* 243 */ {0.1261859507142915},
+ /* 244 */ {0.1260916806894653},
+ /* 245 */ {0.1259979361142023},
+ /* 246 */ {0.1259047118299582},
+ /* 247 */ {0.1258120027502338},
+ /* 248 */ {0.1257198038592741},
+ /* 249 */ {0.1256281102107963},
+ /* 250 */ {0.1255369169267456},
+ /* 251 */ {0.1254462191960791},
+ /* 252 */ {0.1253560122735751},
+ /* 253 */ {0.1252662914786691},
+ /* 254 */ {0.1251770521943144},
+ /* 255 */ {0.1250882898658681},
+ /* 256 */ {0.1250000000000000},
+};
+
+void
+mpfr_assert_fail (const char *filename, int linenum,
+ const char *expr)
+{
+ if (filename != NULL && filename[0] != '\0')
+ {
+ fprintf (stderr, "%s:", filename);
+ if (linenum != -1)
+ fprintf (stderr, "%d: ", linenum);
+ }
+ fprintf (stderr, "MPFR assertion failed: %s\n", expr);
+ abort();
+}
+
+#ifdef mp_get_memory_functions
+
+/* putting 0 as initial values forces those symbols to be fully defined,
+ and always resolved, otherwise they are only tentatively defined, which
+ leads to problems on e.g. MacOS, cf
+ http://lists.gforge.inria.fr/pipermail/mpc-discuss/2008-November/000048.html
+ and http://software.intel.com/en-us/articles/intelr-fortran-compiler-for-mac-os-non_lazy_ptr-unresolved-references-from-linking
+ Note that using ranlib -c or libtool -c is another fix.
+*/
+MPFR_THREAD_ATTR void * (*mpfr_allocate_func) (size_t) = 0;
+MPFR_THREAD_ATTR void * (*mpfr_reallocate_func) (void *, size_t, size_t) = 0;
+MPFR_THREAD_ATTR void (*mpfr_free_func) (void *, size_t) = 0;
+
+#endif
+
+void *
+mpfr_default_allocate (size_t size)
+{
+ void *ret;
+ ret = malloc (size);
+ if (ret == NULL)
+ {
+ fprintf (stderr, "MPFR: Can't allocate memory (size=%lu)\n",
+ (unsigned long) size);
+ abort ();
+ }
+ return ret;
+}
+
+void *
+mpfr_default_reallocate (void *oldptr, size_t old_size, size_t new_size)
+{
+ void *ret;
+ ret = realloc (oldptr, new_size);
+ if (ret == NULL)
+ {
+ fprintf (stderr,
+ "MPFR: Can't reallocate memory (old_size=%lu new_size=%lu)\n",
+ (unsigned long) old_size, (unsigned long) new_size);
+ abort ();
+ }
+ return ret;
+}
+
+void
+mpfr_default_free (void *blk_ptr, size_t blk_size)
+{
+ free (blk_ptr);
+}
+
+void *
+mpfr_tmp_allocate (struct tmp_marker **tmp_marker, size_t size)
+{
+ struct tmp_marker *head;
+
+ head = (struct tmp_marker *)
+ mpfr_default_allocate (sizeof (struct tmp_marker));
+ head->ptr = mpfr_default_allocate (size);
+ head->size = size;
+ head->next = *tmp_marker;
+ *tmp_marker = head;
+ return head->ptr;
+}
+
+void
+mpfr_tmp_free (struct tmp_marker *tmp_marker)
+{
+ struct tmp_marker *t;
+
+ while (tmp_marker != NULL)
+ {
+ t = tmp_marker;
+ mpfr_default_free (t->ptr, t->size);
+ tmp_marker = t->next;
+ mpfr_default_free (t, sizeof (struct tmp_marker));
+ }
+}
+
+#endif /* Have gmp-impl.h */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.h b/Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.h
new file mode 100644
index 00000000000..b1862ffe717
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr-gmp.h
@@ -0,0 +1,412 @@
+/* Interface to replace gmp-impl.h
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __GMPFR_GMP_H__
+#define __GMPFR_GMP_H__
+
+#ifndef __MPFR_IMPL_H__
+# error "mpfr-impl.h not included"
+#endif
+
+#include <limits.h> /* For INT_MAX, ... */
+#include <string.h> /* For memcpy, memset and memmove */
+
+/* The following tries to get a good version of alloca.
+ See gmp-impl.h for implementation details and original version */
+/* FIXME: the autoconf manual gives a different piece of code under the
+ documentation of the AC_FUNC_ALLOCA macro. Should we switch to it? */
+#ifndef alloca
+# if defined ( __GNUC__ )
+# define alloca __builtin_alloca
+# elif defined (__DECC)
+# define alloca(x) __ALLOCA(x)
+# elif defined (_MSC_VER)
+# include <malloc.h>
+# define alloca _alloca
+# elif defined (HAVE_ALLOCA_H)
+# include <alloca.h>
+# elif defined (_AIX) || defined (_IBMR2)
+# pragma alloca
+# else
+void *alloca (size_t);
+# endif
+#endif
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/* Define GMP_NUMB_BITS
+ Can't use sizeof(mp_limb_t) since it should be a preprocessor constant */
+#if defined(GMP_NUMB_BITS) /* GMP 4.1.2 or above */
+#ifndef GMP_NUMB_BITS
+# define GMP_NUMB_BITS (GMP_NUMB_BITS+GMP_NAIL_BITS)
+#endif
+#elif defined (__GMP_GMP_NUMB_BITS) /* Older versions 4.x.x */
+# define GMP_NUMB_BITS __GMP_GMP_NUMB_BITS
+# define GMP_NUMB_BITS GMP_NUMB_BITS
+# ifndef GMP_NAIL_BITS
+# define GMP_NAIL_BITS 0
+# endif
+#else
+# error "Could not detect GMP_NUMB_BITS. Try with gmp internal files."
+#endif
+
+/* Define some macros */
+
+#define MP_LIMB_T_MAX (~(mp_limb_t)0)
+
+#define ULONG_HIGHBIT (ULONG_MAX ^ ((unsigned long) ULONG_MAX >> 1))
+#define UINT_HIGHBIT (UINT_MAX ^ ((unsigned) UINT_MAX >> 1))
+#define USHRT_HIGHBIT ((unsigned short) (USHRT_MAX ^ ((unsigned short) USHRT_MAX >> 1)))
+
+#define GMP_LIMB_HIGHBIT (MP_LIMB_T_MAX ^ (MP_LIMB_T_MAX >> 1))
+
+
+#if __GMP_MP_SIZE_T_INT
+#define MP_SIZE_T_MAX INT_MAX
+#define MP_SIZE_T_MIN INT_MIN
+#else
+#define MP_SIZE_T_MAX LONG_MAX
+#define MP_SIZE_T_MIN LONG_MIN
+#endif
+
+#define LONG_HIGHBIT LONG_MIN
+#define INT_HIGHBIT INT_MIN
+#define SHRT_HIGHBIT SHRT_MIN
+
+/* MP_LIMB macros */
+#define MPN_ZERO(dst, n) memset((dst), 0, (n)*MPFR_BYTES_PER_MP_LIMB)
+#define MPN_COPY_DECR(dst,src,n) memmove((dst),(src),(n)*MPFR_BYTES_PER_MP_LIMB)
+#define MPN_COPY_INCR(dst,src,n) memmove((dst),(src),(n)*MPFR_BYTES_PER_MP_LIMB)
+#define MPN_COPY(dst,src,n) \
+ do \
+ { \
+ if ((dst) != (src)) \
+ { \
+ MPFR_ASSERTD ((char *) (dst) >= (char *) (src) + \
+ (n) * MPFR_BYTES_PER_MP_LIMB || \
+ (char *) (src) >= (char *) (dst) + \
+ (n) * MPFR_BYTES_PER_MP_LIMB); \
+ memcpy ((dst), (src), (n) * MPFR_BYTES_PER_MP_LIMB); \
+ } \
+ } \
+ while (0)
+
+/* MPN macros taken from gmp-impl.h */
+#define MPN_NORMALIZE(DST, NLIMBS) \
+ do { \
+ while (NLIMBS > 0) \
+ { \
+ if ((DST)[(NLIMBS) - 1] != 0) \
+ break; \
+ NLIMBS--; \
+ } \
+ } while (0)
+#define MPN_NORMALIZE_NOT_ZERO(DST, NLIMBS) \
+ do { \
+ MPFR_ASSERTD ((NLIMBS) >= 1); \
+ while (1) \
+ { \
+ if ((DST)[(NLIMBS) - 1] != 0) \
+ break; \
+ NLIMBS--; \
+ } \
+ } while (0)
+#define MPN_OVERLAP_P(xp, xsize, yp, ysize) \
+ ((xp) + (xsize) > (yp) && (yp) + (ysize) > (xp))
+#define MPN_SAME_OR_INCR2_P(dst, dsize, src, ssize) \
+ ((dst) <= (src) || ! MPN_OVERLAP_P (dst, dsize, src, ssize))
+#define MPN_SAME_OR_INCR_P(dst, src, size) \
+ MPN_SAME_OR_INCR2_P(dst, size, src, size)
+#define MPN_SAME_OR_DECR2_P(dst, dsize, src, ssize) \
+ ((dst) >= (src) || ! MPN_OVERLAP_P (dst, dsize, src, ssize))
+#define MPN_SAME_OR_DECR_P(dst, src, size) \
+ MPN_SAME_OR_DECR2_P(dst, size, src, size)
+
+/* If mul_basecase or mpn_sqr_basecase are not exported, used mpn_mul instead */
+#ifndef mpn_mul_basecase
+# define mpn_mul_basecase(dst,s1,n1,s2,n2) mpn_mul((dst),(s1),(n1),(s2),(n2))
+#endif
+#ifndef mpn_sqr_basecase
+# define mpn_sqr_basecase(dst,src,n) mpn_mul((dst),(src),(n),(src),(n))
+#endif
+
+/* ASSERT */
+__MPFR_DECLSPEC void mpfr_assert_fail _MPFR_PROTO((const char *, int,
+ const char *));
+
+#define ASSERT_FAIL(expr) mpfr_assert_fail (__FILE__, __LINE__, #expr)
+#define ASSERT(expr) MPFR_ASSERTD(expr)
+
+/* Access fileds of GMP struct */
+#define SIZ(x) ((x)->_mp_size)
+#define ABSIZ(x) ABS (SIZ (x))
+#define PTR(x) ((x)->_mp_d)
+#define EXP(x) ((x)->_mp_exp)
+#define PREC(x) ((x)->_mp_prec)
+#define ALLOC(x) ((x)->_mp_alloc)
+#define MPZ_REALLOC(z,n) ((n) > ALLOC(z) ? _mpz_realloc(z,n) : PTR(z))
+
+/* Non IEEE float supports -- needs to detect them with proper configure */
+#undef XDEBUG
+#define XDEBUG
+
+/* For longlong.h */
+#ifdef HAVE_ATTRIBUTE_MODE
+typedef unsigned int UQItype __attribute__ ((mode (QI)));
+typedef int SItype __attribute__ ((mode (SI)));
+typedef unsigned int USItype __attribute__ ((mode (SI)));
+typedef int DItype __attribute__ ((mode (DI)));
+typedef unsigned int UDItype __attribute__ ((mode (DI)));
+#else
+typedef unsigned char UQItype;
+typedef long SItype;
+typedef unsigned long USItype;
+#ifdef HAVE_LONG_LONG
+typedef long long int DItype;
+typedef unsigned long long int UDItype;
+#else /* Assume `long' gives us a wide enough type. Needed for hppa2.0w. */
+typedef long int DItype;
+typedef unsigned long int UDItype;
+#endif
+#endif
+typedef mp_limb_t UWtype;
+typedef unsigned int UHWtype;
+#define W_TYPE_SIZE GMP_NUMB_BITS
+
+/* Remap names of internal mpn functions (for longlong.h). */
+#undef __clz_tab
+#define __clz_tab mpfr_clz_tab
+
+/* Use (4.0 * ...) instead of (2.0 * ...) to work around buggy compilers
+ that don't convert ulong->double correctly (eg. SunOS 4 native cc). */
+#undef MP_BASE_AS_DOUBLE
+#define MP_BASE_AS_DOUBLE (4.0 * ((mp_limb_t) 1 << (GMP_NUMB_BITS - 2)))
+
+/* Structure for conversion between internal binary format and
+ strings in base 2..36. */
+struct bases
+{
+ /* log(2)/log(conversion_base) */
+ double chars_per_bit_exactly;
+};
+#undef __mp_bases
+#define __mp_bases mpfr_bases
+__MPFR_DECLSPEC extern const struct bases mpfr_bases[257];
+
+/* Standard macros */
+#undef ABS
+#undef MIN
+#undef MAX
+#undef numberof
+#define ABS(x) ((x) >= 0 ? (x) : -(x))
+#define MIN(l,o) ((l) < (o) ? (l) : (o))
+#define MAX(h,i) ((h) > (i) ? (h) : (i))
+#define numberof(x) (sizeof (x) / sizeof ((x)[0]))
+
+/* Random */
+#undef __gmp_rands_initialized
+#undef __gmp_rands
+#define __gmp_rands_initialized mpfr_rands_initialized
+#define __gmp_rands mpfr_rands
+
+__MPFR_DECLSPEC extern char mpfr_rands_initialized;
+__MPFR_DECLSPEC extern gmp_randstate_t mpfr_rands;
+
+#undef RANDS
+#define RANDS \
+ ((__gmp_rands_initialized ? 0 \
+ : (__gmp_rands_initialized = 1, \
+ gmp_randinit_default (__gmp_rands), 0)), \
+ __gmp_rands)
+
+#undef RANDS_CLEAR
+#define RANDS_CLEAR() \
+ do { \
+ if (__gmp_rands_initialized) \
+ { \
+ __gmp_rands_initialized = 0; \
+ gmp_randclear (__gmp_rands); \
+ } \
+ } while (0)
+
+typedef __gmp_randstate_struct *gmp_randstate_ptr;
+
+/* Allocate func are defined in gmp-impl.h */
+
+/* In newer GMP, there aren't anymore __gmp_allocate_func,
+ __gmp_reallocate_func & __gmp_free_func in gmp.h
+ Just getting the correct value by calling mp_get_memory_functions */
+#ifdef mp_get_memory_functions
+
+#undef __gmp_allocate_func
+#undef __gmp_reallocate_func
+#undef __gmp_free_func
+#define MPFR_GET_MEMFUNC \
+ ((void) (MPFR_LIKELY (mpfr_allocate_func != 0) || \
+ (mp_get_memory_functions(&mpfr_allocate_func, \
+ &mpfr_reallocate_func, \
+ &mpfr_free_func), 1)))
+#define __gmp_allocate_func (MPFR_GET_MEMFUNC, mpfr_allocate_func)
+#define __gmp_reallocate_func (MPFR_GET_MEMFUNC, mpfr_reallocate_func)
+#define __gmp_free_func (MPFR_GET_MEMFUNC, mpfr_free_func)
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR void * (*mpfr_allocate_func) _MPFR_PROTO ((size_t));
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR void * (*mpfr_reallocate_func) _MPFR_PROTO ((void *, size_t, size_t));
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR void (*mpfr_free_func) _MPFR_PROTO ((void *, size_t));
+
+#endif
+
+#undef __gmp_default_allocate
+#undef __gmp_default_reallocate
+#undef __gmp_default_free
+#define __gmp_default_allocate mpfr_default_allocate
+#define __gmp_default_reallocate mpfr_default_reallocate
+#define __gmp_default_free mpfr_default_free
+__MPFR_DECLSPEC void *__gmp_default_allocate _MPFR_PROTO ((size_t));
+__MPFR_DECLSPEC void *__gmp_default_reallocate _MPFR_PROTO ((void *, size_t,
+ size_t));
+__MPFR_DECLSPEC void __gmp_default_free _MPFR_PROTO ((void *, size_t));
+
+#if defined(WANT_GMP_INTERNALS) && defined(HAVE___GMPN_ROOTREM)
+#ifndef __gmpn_rootrem
+ __MPFR_DECLSPEC mp_size_t __gmpn_rootrem _MPFR_PROTO ((mp_limb_t*,
+ mp_limb_t*, mp_limb_t*, mp_size_t, mp_limb_t));
+#endif
+#endif
+
+#if defined(WANT_GMP_INTERNALS) && defined(HAVE___GMPN_SBPI1_DIVAPPR_Q)
+#ifndef __gmpn_sbpi1_divappr_q
+ __MPFR_DECLSPEC mp_limb_t __gmpn_sbpi1_divappr_q _MPFR_PROTO ((mp_limb_t*,
+ mp_limb_t*, mp_size_t, mp_limb_t*, mp_size_t, mp_limb_t));
+#endif
+#endif
+
+/* Temp memory allocate */
+
+struct tmp_marker
+{
+ void *ptr;
+ size_t size;
+ struct tmp_marker *next;
+};
+
+__MPFR_DECLSPEC void *mpfr_tmp_allocate _MPFR_PROTO ((struct tmp_marker **,
+ size_t));
+__MPFR_DECLSPEC void mpfr_tmp_free _MPFR_PROTO ((struct tmp_marker *));
+
+/* Do not define TMP_SALLOC (see the test in mpfr-impl.h)! */
+#define TMP_ALLOC(n) (MPFR_LIKELY ((n) < 16384) ? \
+ alloca (n) : mpfr_tmp_allocate (&tmp_marker, (n)))
+#define TMP_DECL(m) struct tmp_marker *tmp_marker
+#define TMP_MARK(m) (tmp_marker = 0)
+#define TMP_FREE(m) mpfr_tmp_free (tmp_marker)
+
+/* invert_limb macro, copied from GMP 5.0.2, file gmp-impl.h.
+ It returns invxl = floor((B^2-1)/xl)-B, where B=2^BITS_PER_LIMB,
+ assuming the most significant bit of xl is set. */
+#undef invert_limb
+#define invert_limb(invxl,xl) \
+ do { \
+ mp_limb_t dummy; \
+ MPFR_ASSERTD ((xl) != 0); \
+ udiv_qrnnd (invxl, dummy, ~(xl), ~(mp_limb_t)0, xl); \
+ } while (0)
+
+typedef struct {mp_limb_t inv32;} mpfr_pi1_t; /* We changed gmp_pi1_t into
+ mpfr_pi1_t to avoid using
+ GMP's namespace. */
+/* invert_pi1 macro, adapted from GMP 5.0.2, file gmp-impl.h.
+ It returns dinv = floor((B^3-1)/(d1*B+d0))-B, where B=2^BITS_PER_LIMB,
+ assuming the most significant bit of d1 is set. */
+#undef invert_pi1
+#define invert_pi1(dinv, d1, d0) \
+ do { \
+ mp_limb_t _v, _p, _t1, _t0, _mask; \
+ invert_limb (_v, d1); \
+ _p = d1 * _v; \
+ _p += d0; \
+ if (_p < d0) \
+ { \
+ _v--; \
+ _mask = -(_p >= d1); \
+ _p -= d1; \
+ _v += _mask; \
+ _p -= _mask & d1; \
+ } \
+ umul_ppmm (_t1, _t0, d0, _v); \
+ _p += _t1; \
+ if (_p < _t1) \
+ { \
+ _v--; \
+ if (MPFR_UNLIKELY (_p >= d1)) \
+ { \
+ if (_p > d1 || _t0 >= d0) \
+ _v--; \
+ } \
+ } \
+ (dinv).inv32 = _v; \
+ } while (0)
+
+/* udiv_qr_3by2 macro, adapted from GMP 5.0.2, file gmp-impl.h.
+ Compute quotient the quotient and remainder for n / d. Requires d
+ >= B^2 / 2 and n < d B. dinv is the inverse
+
+ floor ((B^3 - 1) / (d0 + d1 B)) - B.
+
+ NOTE: Output variables are updated multiple times. Only some inputs
+ and outputs may overlap.
+*/
+#undef udiv_qr_3by2
+#define udiv_qr_3by2(q, r1, r0, n2, n1, n0, d1, d0, dinv) \
+ do { \
+ mp_limb_t _q0, _t1, _t0, _mask; \
+ umul_ppmm ((q), _q0, (n2), (dinv)); \
+ add_ssaaaa ((q), _q0, (q), _q0, (n2), (n1)); \
+ \
+ /* Compute the two most significant limbs of n - q'd */ \
+ (r1) = (n1) - (d1) * (q); \
+ (r0) = (n0); \
+ sub_ddmmss ((r1), (r0), (r1), (r0), (d1), (d0)); \
+ umul_ppmm (_t1, _t0, (d0), (q)); \
+ sub_ddmmss ((r1), (r0), (r1), (r0), _t1, _t0); \
+ (q)++; \
+ \
+ /* Conditionally adjust q and the remainders */ \
+ _mask = - (mp_limb_t) ((r1) >= _q0); \
+ (q) += _mask; \
+ add_ssaaaa ((r1), (r0), (r1), (r0), _mask & (d1), _mask & (d0)); \
+ if (MPFR_UNLIKELY ((r1) >= (d1))) \
+ { \
+ if ((r1) > (d1) || (r0) >= (d0)) \
+ { \
+ (q)++; \
+ sub_ddmmss ((r1), (r0), (r1), (r0), (d1), (d0)); \
+ } \
+ } \
+ } while (0)
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* Gmp internal emulator */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr-impl.h b/Build/source/libs/mpfr/mpfr-src/src/mpfr-impl.h
new file mode 100644
index 00000000000..5ce52ac21d1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr-impl.h
@@ -0,0 +1,1941 @@
+/* Utilities for MPFR developers, not exported.
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __MPFR_IMPL_H__
+#define __MPFR_IMPL_H__
+
+/* Include MPFR 'config.h' before ANY system headers */
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/* Let's include some standard headers unconditionally as they are
+ already needed by several source files or when some options are
+ enabled/disabled, and it is easy to forget them (some configure
+ options may hide the error).
+ Note: If some source file must not have such a header included
+ (which is very unlikely and probably means something broken in
+ this source file), we should do that with some macro (that would
+ also force to disable incompatible features). */
+#if defined (__cplusplus)
+#include <cstdio>
+#include <cstring>
+#else
+#include <stdio.h>
+#include <string.h>
+#endif
+#include <limits.h>
+
+#if _MPFR_EXP_FORMAT == 4
+/* mpfr_exp_t will be defined as intmax_t */
+# include "mpfr-intmax.h"
+#endif
+
+/* Check if we are inside a build of MPFR or inside the test suite.
+ This is needed in mpfr.h to export or import the functions.
+ It matters only for Windows DLL */
+#ifndef __MPFR_TEST_H__
+# define __MPFR_WITHIN_MPFR 1
+#endif
+
+/******************************************************
+ ****************** Include files *********************
+ ******************************************************/
+
+/* For the definition of MPFR_THREAD_ATTR. GCC/ICC detection macros are
+ no longer used, as they sometimes gave incorrect information about
+ the support of thread-local variables. A configure check is now done. */
+#include "mpfr-thread.h"
+
+#ifdef MPFR_HAVE_GMP_IMPL /* Build with gmp internals */
+
+# ifndef __GMP_H__
+# include "gmp.h"
+# endif
+# ifndef __GMP_IMPL_H__
+# include "gmp-impl.h"
+# endif
+# ifdef MPFR_NEED_LONGLONG_H
+# include "longlong.h"
+# endif
+# ifndef __MPFR_H
+# include "mpfr.h"
+# endif
+
+#else /* Build without gmp internals */
+
+# ifndef __GMP_H__
+# include "gmp.h"
+# endif
+# ifndef __MPFR_H
+# include "mpfr.h"
+# endif
+# ifndef __GMPFR_GMP_H__
+# include "mpfr-gmp.h"
+# endif
+# ifdef MPFR_NEED_LONGLONG_H
+# define LONGLONG_STANDALONE
+# include "mpfr-longlong.h"
+# endif
+
+#endif
+#undef MPFR_NEED_LONGLONG_H
+
+/* If a mpn_sqr_n macro is not defined, use mpn_mul. GMP 4.x defines a
+ mpn_sqr_n macro in gmp-impl.h (and this macro disappeared in GMP 5),
+ so that GMP's macro can only be used when MPFR has been configured
+ with --with-gmp-build (and only with GMP 4.x). */
+#ifndef mpn_sqr_n
+# define mpn_sqr_n(dst,src,n) mpn_mul((dst),(src),(n),(src),(n))
+#endif
+
+
+/******************************************************
+ ***************** Detection macros *******************
+ ******************************************************/
+
+/* Macros to detect STDC, GCC, GLIBC, GMP and ICC version */
+#if defined(__STDC_VERSION__)
+# define __MPFR_STDC(version) (__STDC_VERSION__>=(version))
+#elif defined(__STDC__)
+# define __MPFR_STDC(version) (0 == (version))
+#else
+# define __MPFR_STDC(version) 0
+#endif
+
+#if defined(_WIN32)
+/* Under MS Windows (e.g. with VS2008 or VS2010), Intel's compiler doesn't
+ support/enable extensions like the ones seen under GNU/Linux.
+ https://sympa.inria.fr/sympa/arc/mpfr/2011-02/msg00032.html */
+# define __MPFR_ICC(a,b,c) 0
+#elif defined(__ICC)
+# define __MPFR_ICC(a,b,c) (__ICC >= (a)*100+(b)*10+(c))
+#elif defined(__INTEL_COMPILER)
+# define __MPFR_ICC(a,b,c) (__INTEL_COMPILER >= (a)*100+(b)*10+(c))
+#else
+# define __MPFR_ICC(a,b,c) 0
+#endif
+
+#if defined(__GNUC__) && defined(__GNUC_MINOR__) && ! __MPFR_ICC(0,0,0)
+# define __MPFR_GNUC(a,i) \
+ (MPFR_VERSION_NUM(__GNUC__,__GNUC_MINOR__,0) >= MPFR_VERSION_NUM(a,i,0))
+#else
+# define __MPFR_GNUC(a,i) 0
+#endif
+
+#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+# define __MPFR_GLIBC(a,i) \
+ (MPFR_VERSION_NUM(__GLIBC__,__GLIBC_MINOR__,0) >= MPFR_VERSION_NUM(a,i,0))
+#else
+# define __MPFR_GLIBC(a,i) 0
+#endif
+
+#if defined(__GNU_MP_VERSION) && \
+ defined(__GNU_MP_VERSION_MINOR) && \
+ defined(__GNU_MP_VERSION_PATCHLEVEL)
+# define __MPFR_GMP(a,b,c) \
+ (MPFR_VERSION_NUM(__GNU_MP_VERSION,__GNU_MP_VERSION_MINOR,__GNU_MP_VERSION_PATCHLEVEL) >= MPFR_VERSION_NUM(a,b,c))
+#else
+# define __MPFR_GMP(a,b,c) 0
+#endif
+
+
+
+/******************************************************
+ ************* GMP Basic Pointer Types ****************
+ ******************************************************/
+
+typedef mp_limb_t *mpfr_limb_ptr;
+typedef __gmp_const mp_limb_t *mpfr_limb_srcptr;
+
+
+
+/******************************************************
+ ****************** (U)INTMAX_MAX *********************
+ ******************************************************/
+
+/* Let's try to fix UINTMAX_MAX and INTMAX_MAX if these macros don't work
+ (e.g. with gcc -ansi -pedantic-errors in 32-bit mode under GNU/Linux),
+ see <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=582698>. */
+#ifdef _MPFR_H_HAVE_INTMAX_T
+# ifdef MPFR_HAVE_INTMAX_MAX
+# define MPFR_UINTMAX_MAX UINTMAX_MAX
+# define MPFR_INTMAX_MAX INTMAX_MAX
+# define MPFR_INTMAX_MIN INTMAX_MIN
+# else
+# define MPFR_UINTMAX_MAX ((uintmax_t) -1)
+# define MPFR_INTMAX_MAX ((intmax_t) (MPFR_UINTMAX_MAX >> 1))
+# define MPFR_INTMAX_MIN (INT_MIN + INT_MAX - MPFR_INTMAX_MAX)
+# endif
+#endif
+
+#define MPFR_BYTES_PER_MP_LIMB (GMP_NUMB_BITS/CHAR_BIT)
+
+/******************************************************
+ ******************** Check GMP ***********************
+ ******************************************************/
+
+#if !__MPFR_GMP(4,1,0)
+# error "GMP 4.1.0 or newer needed"
+#endif
+
+#if GMP_NAIL_BITS != 0
+# error "MPFR doesn't support nonzero values of GMP_NAIL_BITS"
+#endif
+
+#if (GMP_NUMB_BITS<32) || (GMP_NUMB_BITS & (GMP_NUMB_BITS - 1))
+# error "GMP_NUMB_BITS must be a power of 2, and >= 32"
+#endif
+
+#if GMP_NUMB_BITS == 16
+# define MPFR_LOG2_GMP_NUMB_BITS 4
+#elif GMP_NUMB_BITS == 32
+# define MPFR_LOG2_GMP_NUMB_BITS 5
+#elif GMP_NUMB_BITS == 64
+# define MPFR_LOG2_GMP_NUMB_BITS 6
+#elif GMP_NUMB_BITS == 128
+# define MPFR_LOG2_GMP_NUMB_BITS 7
+#elif GMP_NUMB_BITS == 256
+# define MPFR_LOG2_GMP_NUMB_BITS 8
+#else
+# error "Can't compute log2(GMP_NUMB_BITS)"
+#endif
+
+#if __MPFR_GNUC(3,0) || __MPFR_ICC(8,1,0)
+/* For the future: N1478: Supporting the 'noreturn' property in C1x
+ http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1478.htm */
+# define MPFR_NORETURN_ATTR __attribute__ ((noreturn))
+# define MPFR_CONST_ATTR __attribute__ ((const))
+#else
+# define MPFR_NORETURN_ATTR
+# define MPFR_CONST_ATTR
+#endif
+
+/******************************************************
+ ************* Global Internal Variables **************
+ ******************************************************/
+
+/* Cache struct */
+struct __gmpfr_cache_s {
+ mpfr_t x;
+ int inexact;
+ int (*func)(mpfr_ptr, mpfr_rnd_t);
+};
+typedef struct __gmpfr_cache_s mpfr_cache_t[1];
+typedef struct __gmpfr_cache_s *mpfr_cache_ptr;
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR unsigned int __gmpfr_flags;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_exp_t __gmpfr_emin;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_exp_t __gmpfr_emax;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_prec_t __gmpfr_default_fp_bit_precision;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_rnd_t __gmpfr_default_rounding_mode;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_cache_const_euler;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_cache_const_catalan;
+
+#ifndef MPFR_USE_LOGGING
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_cache_const_pi;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_cache_const_log2;
+#else
+/* Two constants are used by the logging functions (via mpfr_fprintf,
+ then mpfr_log, for the base conversion): pi and log(2). Since the
+ mpfr_cache function isn't re-entrant when working on the same cache,
+ we need to define two caches for each constant. */
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_normal_pi;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_normal_log2;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_logging_pi;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_t __gmpfr_logging_log2;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_ptr __gmpfr_cache_const_pi;
+__MPFR_DECLSPEC extern MPFR_THREAD_ATTR mpfr_cache_ptr __gmpfr_cache_const_log2;
+#endif
+
+#define BASE_MAX 62
+__MPFR_DECLSPEC extern const __mpfr_struct __gmpfr_l2b[BASE_MAX-1][2];
+
+/* Note: do not use the following values when they can be outside the
+ current exponent range, e.g. when the exponent range has not been
+ extended yet; under such a condition, they can be used only in
+ mpfr_cmpabs. */
+__MPFR_DECLSPEC extern const mpfr_t __gmpfr_one;
+__MPFR_DECLSPEC extern const mpfr_t __gmpfr_two;
+__MPFR_DECLSPEC extern const mpfr_t __gmpfr_four;
+
+
+#if defined (__cplusplus)
+ }
+#endif
+
+/* Flags of __gmpfr_flags */
+#define MPFR_FLAGS_UNDERFLOW 1
+#define MPFR_FLAGS_OVERFLOW 2
+#define MPFR_FLAGS_NAN 4
+#define MPFR_FLAGS_INEXACT 8
+#define MPFR_FLAGS_ERANGE 16
+#define MPFR_FLAGS_DIVBY0 32
+#define MPFR_FLAGS_ALL 63
+
+/* Replace some common functions for direct access to the global vars */
+#define mpfr_get_emin() (__gmpfr_emin + 0)
+#define mpfr_get_emax() (__gmpfr_emax + 0)
+#define mpfr_get_default_rounding_mode() (__gmpfr_default_rounding_mode + 0)
+#define mpfr_get_default_prec() (__gmpfr_default_fp_bit_precision + 0)
+
+#define mpfr_clear_flags() \
+ ((void) (__gmpfr_flags = 0))
+#define mpfr_clear_underflow() \
+ ((void) (__gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_UNDERFLOW))
+#define mpfr_clear_overflow() \
+ ((void) (__gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_OVERFLOW))
+#define mpfr_clear_nanflag() \
+ ((void) (__gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_NAN))
+#define mpfr_clear_inexflag() \
+ ((void) (__gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_INEXACT))
+#define mpfr_clear_erangeflag() \
+ ((void) (__gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_ERANGE))
+#define mpfr_clear_divby0() \
+ ((void) (__gmpfr_flags &= MPFR_FLAGS_ALL ^ MPFR_FLAGS_DIVBY0))
+#define mpfr_underflow_p() \
+ ((int) (__gmpfr_flags & MPFR_FLAGS_UNDERFLOW))
+#define mpfr_overflow_p() \
+ ((int) (__gmpfr_flags & MPFR_FLAGS_OVERFLOW))
+#define mpfr_nanflag_p() \
+ ((int) (__gmpfr_flags & MPFR_FLAGS_NAN))
+#define mpfr_inexflag_p() \
+ ((int) (__gmpfr_flags & MPFR_FLAGS_INEXACT))
+#define mpfr_erangeflag_p() \
+ ((int) (__gmpfr_flags & MPFR_FLAGS_ERANGE))
+#define mpfr_divby0_p() \
+ ((int) (__gmpfr_flags & MPFR_FLAGS_DIVBY0))
+
+/* Testing an exception flag correctly is tricky. There are mainly two
+ pitfalls: First, one needs to remember to clear the corresponding
+ flag, in case it was set before the function call or during some
+ intermediate computations (in practice, one can clear all the flags).
+ Secondly, one needs to test the flag early enough, i.e. before it
+ can be modified by another function. Moreover, it is quite difficult
+ (if not impossible) to reliably check problems with "make check". To
+ avoid these pitfalls, it is recommended to use the following macros.
+ Other use of the exception-flag predicate functions/macros will be
+ detected by mpfrlint.
+ Note: _op can be either a statement or an expression.
+ MPFR_BLOCK_EXCEP should be used only inside a block; it is useful to
+ detect some exception in order to exit the block as soon as possible. */
+#define MPFR_BLOCK_DECL(_flags) unsigned int _flags
+/* The (void) (_flags) makes sure that _flags is read at least once (it
+ makes sense to use MPFR_BLOCK while _flags will never be read in the
+ source, so that we wish to avoid the corresponding warning). */
+#define MPFR_BLOCK(_flags,_op) \
+ do \
+ { \
+ mpfr_clear_flags (); \
+ _op; \
+ (_flags) = __gmpfr_flags; \
+ (void) (_flags); \
+ } \
+ while (0)
+#define MPFR_BLOCK_TEST(_flags,_f) MPFR_UNLIKELY ((_flags) & (_f))
+#define MPFR_BLOCK_EXCEP (__gmpfr_flags & (MPFR_FLAGS_UNDERFLOW | \
+ MPFR_FLAGS_OVERFLOW | \
+ MPFR_FLAGS_DIVBY0 | \
+ MPFR_FLAGS_NAN))
+/* Let's use a MPFR_ prefix, because e.g. OVERFLOW is defined by glibc's
+ math.h, though this is not a reserved identifier! */
+#define MPFR_UNDERFLOW(_flags) MPFR_BLOCK_TEST (_flags, MPFR_FLAGS_UNDERFLOW)
+#define MPFR_OVERFLOW(_flags) MPFR_BLOCK_TEST (_flags, MPFR_FLAGS_OVERFLOW)
+#define MPFR_NANFLAG(_flags) MPFR_BLOCK_TEST (_flags, MPFR_FLAGS_NAN)
+#define MPFR_INEXFLAG(_flags) MPFR_BLOCK_TEST (_flags, MPFR_FLAGS_INEXACT)
+#define MPFR_ERANGEFLAG(_flags) MPFR_BLOCK_TEST (_flags, MPFR_FLAGS_ERANGE)
+#define MPFR_DIVBY0(_flags) MPFR_BLOCK_TEST (_flags, MPFR_FLAGS_DIVBY0)
+
+
+/******************************************************
+ ******************** Assertions **********************
+ ******************************************************/
+
+/* Compile with -DMPFR_WANT_ASSERT to check all assert statements */
+
+/* Note: do not use GMP macros ASSERT_ALWAYS and ASSERT as they are not
+ expressions, and as a consequence, they cannot be used in a for(),
+ with a comma operator and so on. */
+
+/* MPFR_ASSERTN(expr): assertions that should always be checked */
+#define MPFR_ASSERTN(expr) \
+ ((void) ((MPFR_UNLIKELY(expr)) || MPFR_UNLIKELY( (ASSERT_FAIL(expr),0) )))
+
+/* MPFR_ASSERTD(expr): assertions that should be checked when testing */
+#ifdef MPFR_WANT_ASSERT
+# define MPFR_EXP_CHECK 1
+# define MPFR_ASSERTD(expr) MPFR_ASSERTN (expr)
+#else
+# define MPFR_ASSERTD(expr) ((void) 0)
+#endif
+
+/* Code to deal with impossible
+ WARNING: It doesn't use do { } while (0) for Insure++*/
+#define MPFR_RET_NEVER_GO_HERE() {MPFR_ASSERTN(0); return 0;}
+
+
+/******************************************************
+ ******************** Warnings ************************
+ ******************************************************/
+
+/* MPFR_WARNING is no longer useful, but let's keep the macro in case
+ it needs to be used again in the future. */
+
+#ifdef MPFR_USE_WARNINGS
+# include <stdlib.h>
+# define MPFR_WARNING(W) \
+ do \
+ { \
+ char *q = getenv ("MPFR_QUIET"); \
+ if (q == NULL || *q == 0) \
+ fprintf (stderr, "MPFR: %s\n", W); \
+ } \
+ while (0)
+#else
+# define MPFR_WARNING(W) ((void) 0)
+#endif
+
+
+/******************************************************
+ ****************** double macros *********************
+ ******************************************************/
+
+/* Precision used for lower precision computations */
+#define MPFR_SMALL_PRECISION 32
+
+/* Definition of constants */
+#define LOG2 0.69314718055994528622 /* log(2) rounded to zero on 53 bits */
+#define ALPHA 4.3191365662914471407 /* a+2 = a*log(a), rounded to +infinity */
+#define EXPM1 0.36787944117144227851 /* exp(-1), rounded to zero */
+
+/* MPFR_DOUBLE_SPEC = 1 if the C type 'double' corresponds to IEEE-754
+ double precision, 0 if it doesn't, and undefined if one doesn't know.
+ On all the tested machines, MPFR_DOUBLE_SPEC = 1. To have this macro
+ defined here, #include <float.h> is needed. If need be, other values
+ could be defined for other specs (once they are known). */
+#if !defined(MPFR_DOUBLE_SPEC) && defined(FLT_RADIX) && \
+ defined(DBL_MANT_DIG) && defined(DBL_MIN_EXP) && defined(DBL_MAX_EXP)
+# if FLT_RADIX == 2 && DBL_MANT_DIG == 53 && \
+ DBL_MIN_EXP == -1021 && DBL_MAX_EXP == 1024
+# define MPFR_DOUBLE_SPEC 1
+# else
+# define MPFR_DOUBLE_SPEC 0
+# endif
+#endif
+
+/* Debug non IEEE floats */
+#ifdef XDEBUG
+# undef _GMP_IEEE_FLOATS
+#endif
+#ifndef _GMP_IEEE_FLOATS
+# define _GMP_IEEE_FLOATS 0
+#endif
+
+#ifndef IEEE_DBL_MANT_DIG
+#define IEEE_DBL_MANT_DIG 53
+#endif
+#define MPFR_LIMBS_PER_DOUBLE ((IEEE_DBL_MANT_DIG-1)/GMP_NUMB_BITS+1)
+
+#ifndef IEEE_FLT_MANT_DIG
+#define IEEE_FLT_MANT_DIG 24
+#endif
+#define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG-1)/GMP_NUMB_BITS+1)
+
+/* Visual C++ doesn't support +1.0/0.0, -1.0/0.0 and 0.0/0.0
+ at compile time.
+ Clang with -fsanitize=undefined is a bit similar due to a bug:
+ http://llvm.org/bugs/show_bug.cgi?id=17381
+ but even without its sanitizer, it may be better to use the
+ double_zero version until IEEE 754 division by zero is properly
+ supported:
+ http://llvm.org/bugs/show_bug.cgi?id=17000
+*/
+#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)) || \
+ defined(__clang__)
+static double double_zero = 0.0;
+# define DBL_NAN (double_zero/double_zero)
+# define DBL_POS_INF ((double) 1.0/double_zero)
+# define DBL_NEG_INF ((double)-1.0/double_zero)
+# define DBL_NEG_ZERO (-double_zero)
+#else
+# define DBL_POS_INF ((double) 1.0/0.0)
+# define DBL_NEG_INF ((double)-1.0/0.0)
+# define DBL_NAN ((double) 0.0/0.0)
+# define DBL_NEG_ZERO (-0.0)
+#endif
+
+/* Note: In the past, there was specific code for _GMP_IEEE_FLOATS, which
+ was based on NaN and Inf memory representations. This code was breaking
+ the aliasing rules (see ISO C99, 6.5#6 and 6.5#7 on the effective type)
+ and for this reason it did not behave correctly with GCC 4.5.0 20091119.
+ The code needed a memory transfer and was probably not better than the
+ macros below with a good compiler (a fix based on the NaN / Inf memory
+ representation would be even worse due to C limitations), and this code
+ could be selected only when MPFR was built with --with-gmp-build, thus
+ introducing a difference (bad for maintaining/testing MPFR); therefore
+ it has been removed. The old code required that the argument x be an
+ lvalue of type double. We still require that, in case one would need
+ to change the macros below, e.g. for some broken compiler. But the
+ LVALUE(x) condition could be removed if really necessary. */
+/* Below, the &(x) == &(x) || &(x) != &(x) allows to make sure that x
+ is a lvalue without (probably) any warning from the compiler. The
+ &(x) != &(x) is needed to avoid a failure under Mac OS X 10.4.11
+ (with Xcode 2.4.1, i.e. the latest one). */
+#define LVALUE(x) (&(x) == &(x) || &(x) != &(x))
+#define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX || (x) < -DBL_MAX))
+/* The DOUBLE_ISNAN(x) macro is also valid on long double x
+ (assuming that the compiler isn't too broken). */
+#ifdef MPFR_NANISNAN
+/* Avoid MIPSpro / IRIX64 / gcc -ffast-math (incorrect) optimizations.
+ The + must not be replaced by a ||. With gcc -ffast-math, NaN is
+ regarded as a positive number or something like that; the second
+ test catches this case. */
+# define DOUBLE_ISNAN(x) \
+ (LVALUE(x) && !((((x) >= 0.0) + ((x) <= 0.0)) && -(x)*(x) <= 0.0))
+#else
+# define DOUBLE_ISNAN(x) (LVALUE(x) && (x) != (x))
+#endif
+
+/******************************************************
+ *************** Long double macros *******************
+ ******************************************************/
+
+/* We try to get the exact value of the precision of long double
+ (provided by the implementation) in order to provide correct
+ rounding in this case (not guaranteed if the C implementation
+ does not have an adequate long double arithmetic). Note that
+ it may be lower than the precision of some numbers that can
+ be represented in a long double; e.g. on FreeBSD/x86, it is
+ 53 because the processor is configured to round in double
+ precision (even when using the long double type -- this is a
+ limitation of the x87 arithmetic), and on Mac OS X, it is 106
+ because the implementation is a double-double arithmetic.
+ Otherwise (e.g. in base 10), we get an upper bound of the
+ precision, and correct rounding isn't currently provided.
+*/
+#if defined(LDBL_MANT_DIG) && FLT_RADIX == 2
+# define MPFR_LDBL_MANT_DIG LDBL_MANT_DIG
+#else
+# define MPFR_LDBL_MANT_DIG \
+ (sizeof(long double)*GMP_NUMB_BITS/sizeof(mp_limb_t))
+#endif
+#define MPFR_LIMBS_PER_LONG_DOUBLE \
+ ((sizeof(long double)-1)/sizeof(mp_limb_t)+1)
+
+/* LONGDOUBLE_NAN_ACTION executes the code "action" if x is a NaN. */
+
+/* On hppa2.0n-hp-hpux10 with the unbundled HP cc, the test x!=x on a NaN
+ has been seen false, meaning NaNs are not detected. This seemed to
+ happen only after other comparisons, not sure what's really going on. In
+ any case we can pick apart the bytes to identify a NaN. */
+#ifdef HAVE_LDOUBLE_IEEE_QUAD_BIG
+# define LONGDOUBLE_NAN_ACTION(x, action) \
+ do { \
+ union { \
+ long double ld; \
+ struct { \
+ unsigned int sign : 1; \
+ unsigned int exp : 15; \
+ unsigned int man3 : 16; \
+ unsigned int man2 : 32; \
+ unsigned int man1 : 32; \
+ unsigned int man0 : 32; \
+ } s; \
+ } u; \
+ u.ld = (x); \
+ if (u.s.exp == 0x7FFFL \
+ && (u.s.man0 | u.s.man1 | u.s.man2 | u.s.man3) != 0) \
+ { action; } \
+ } while (0)
+#endif
+
+#ifdef HAVE_LDOUBLE_IEEE_QUAD_LITTLE
+# define LONGDOUBLE_NAN_ACTION(x, action) \
+ do { \
+ union { \
+ long double ld; \
+ struct { \
+ unsigned int man0 : 32; \
+ unsigned int man1 : 32; \
+ unsigned int man2 : 32; \
+ unsigned int man3 : 16; \
+ unsigned int exp : 15; \
+ unsigned int sign : 1; \
+ } s; \
+ } u; \
+ u.ld = (x); \
+ if (u.s.exp == 0x7FFFL \
+ && (u.s.man0 | u.s.man1 | u.s.man2 | u.s.man3) != 0) \
+ { action; } \
+ } while (0)
+#endif
+
+/* Under IEEE rules, NaN is not equal to anything, including itself.
+ "volatile" here stops "cc" on mips64-sgi-irix6.5 from optimizing away
+ x!=x. */
+#ifndef LONGDOUBLE_NAN_ACTION
+# define LONGDOUBLE_NAN_ACTION(x, action) \
+ do { \
+ volatile long double __x = LONGDOUBLE_VOLATILE (x); \
+ if ((x) != __x) \
+ { action; } \
+ } while (0)
+# define WANT_LONGDOUBLE_VOLATILE 1
+#endif
+
+/* If we don't have a proper "volatile" then volatile is #defined to empty,
+ in this case call through an external function to stop the compiler
+ optimizing anything. */
+#ifdef WANT_LONGDOUBLE_VOLATILE
+# ifdef volatile
+__MPFR_DECLSPEC long double __gmpfr_longdouble_volatile _MPFR_PROTO ((long double)) MPFR_CONST_ATTR;
+# define LONGDOUBLE_VOLATILE(x) (__gmpfr_longdouble_volatile (x))
+# define WANT_GMPFR_LONGDOUBLE_VOLATILE 1
+# else
+# define LONGDOUBLE_VOLATILE(x) (x)
+# endif
+#endif
+
+/* Some special case for IEEE_EXT Litle Endian */
+#if HAVE_LDOUBLE_IEEE_EXT_LITTLE
+
+typedef union {
+ long double ld;
+ struct {
+ unsigned int manl : 32;
+ unsigned int manh : 32;
+ unsigned int expl : 8 ;
+ unsigned int exph : 7;
+ unsigned int sign : 1;
+ } s;
+} mpfr_long_double_t;
+
+/* #undef MPFR_LDBL_MANT_DIG */
+#undef MPFR_LIMBS_PER_LONG_DOUBLE
+/* #define MPFR_LDBL_MANT_DIG 64 */
+#define MPFR_LIMBS_PER_LONG_DOUBLE ((64-1)/GMP_NUMB_BITS+1)
+
+#endif
+
+/******************************************************
+ *************** _Decimal64 support *******************
+ ******************************************************/
+
+#ifdef MPFR_WANT_DECIMAL_FLOATS
+/* to cast between binary64 and decimal64 */
+union ieee_double_decimal64 { double d; _Decimal64 d64; };
+#endif
+
+/******************************************************
+ **************** mpfr_t properties *******************
+ ******************************************************/
+
+/* In the following macro, p is usually a mpfr_prec_t, but this macro
+ works with other integer types (without integer overflow). Checking
+ that p >= 1 in debug mode is useful here because this macro can be
+ used on a computed precision (in particular, this formula does not
+ work for a degenerate case p = 0, and could give different results
+ on different platforms). But let us not use an assertion checking
+ in the MPFR_LAST_LIMB() and MPFR_LIMB_SIZE() macros below to avoid
+ too much expansion for assertions (in practice, this should be a
+ problem just when testing MPFR with the --enable-assert configure
+ option and the -ansi -pedantic-errors gcc compiler flags). */
+#define MPFR_PREC2LIMBS(p) \
+ (MPFR_ASSERTD ((p) >= 1), ((p) - 1) / GMP_NUMB_BITS + 1)
+
+#define MPFR_PREC(x) ((x)->_mpfr_prec)
+#define MPFR_EXP(x) ((x)->_mpfr_exp)
+#define MPFR_MANT(x) ((x)->_mpfr_d)
+#define MPFR_LAST_LIMB(x) ((MPFR_PREC (x) - 1) / GMP_NUMB_BITS)
+#define MPFR_LIMB_SIZE(x) (MPFR_LAST_LIMB (x) + 1)
+
+
+/******************************************************
+ **************** exponent properties *****************
+ ******************************************************/
+
+/* Limits of the mpfr_exp_t type (NOT those of valid exponent values).
+ These macros can be used in preprocessor directives. */
+#if _MPFR_EXP_FORMAT == 1
+# define MPFR_EXP_MAX (SHRT_MAX)
+# define MPFR_EXP_MIN (SHRT_MIN)
+#elif _MPFR_EXP_FORMAT == 2
+# define MPFR_EXP_MAX (INT_MAX)
+# define MPFR_EXP_MIN (INT_MIN)
+#elif _MPFR_EXP_FORMAT == 3
+# define MPFR_EXP_MAX (LONG_MAX)
+# define MPFR_EXP_MIN (LONG_MIN)
+#elif _MPFR_EXP_FORMAT == 4
+# define MPFR_EXP_MAX (MPFR_INTMAX_MAX)
+# define MPFR_EXP_MIN (MPFR_INTMAX_MIN)
+#else
+# error "Invalid MPFR Exp format"
+#endif
+
+/* Before doing a cast to mpfr_uexp_t, make sure that the value is
+ nonnegative. */
+#define MPFR_UEXP(X) (MPFR_ASSERTD ((X) >= 0), (mpfr_uexp_t) (X))
+
+#if MPFR_EXP_MIN >= LONG_MIN && MPFR_EXP_MAX <= LONG_MAX
+typedef long int mpfr_eexp_t;
+# define mpfr_get_exp_t(x,r) mpfr_get_si((x),(r))
+# define mpfr_set_exp_t(x,e,r) mpfr_set_si((x),(e),(r))
+# define MPFR_EXP_FSPEC "l"
+#elif defined (_MPFR_H_HAVE_INTMAX_T)
+typedef intmax_t mpfr_eexp_t;
+# define mpfr_get_exp_t(x,r) mpfr_get_sj((x),(r))
+# define mpfr_set_exp_t(x,e,r) mpfr_set_sj((x),(e),(r))
+# define MPFR_EXP_FSPEC "j"
+#else
+# error "Cannot define mpfr_get_exp_t and mpfr_set_exp_t"
+#endif
+
+/* Invalid exponent value (to track bugs...) */
+#define MPFR_EXP_INVALID \
+ ((mpfr_exp_t) 1 << (GMP_NUMB_BITS*sizeof(mpfr_exp_t)/sizeof(mp_limb_t)-2))
+
+/* Definition of the exponent limits for MPFR numbers.
+ * These limits are chosen so that if e is such an exponent, then 2e-1 and
+ * 2e+1 are representable. This is useful for intermediate computations,
+ * in particular the multiplication.
+ */
+#undef MPFR_EMIN_MIN
+#undef MPFR_EMIN_MAX
+#undef MPFR_EMAX_MIN
+#undef MPFR_EMAX_MAX
+#define MPFR_EMIN_MIN (1-MPFR_EXP_INVALID)
+#define MPFR_EMIN_MAX (MPFR_EXP_INVALID-1)
+#define MPFR_EMAX_MIN (1-MPFR_EXP_INVALID)
+#define MPFR_EMAX_MAX (MPFR_EXP_INVALID-1)
+
+/* Use MPFR_GET_EXP and MPFR_SET_EXP instead of MPFR_EXP directly,
+ unless when the exponent may be out-of-range, for instance when
+ setting the exponent before calling mpfr_check_range.
+ MPFR_EXP_CHECK is defined when MPFR_WANT_ASSERT is defined, but if you
+ don't use MPFR_WANT_ASSERT (for speed reasons), you can still define
+ MPFR_EXP_CHECK by setting -DMPFR_EXP_CHECK in $CFLAGS. */
+
+#ifdef MPFR_EXP_CHECK
+# define MPFR_GET_EXP(x) (mpfr_get_exp) (x)
+# define MPFR_SET_EXP(x, exp) MPFR_ASSERTN (!mpfr_set_exp ((x), (exp)))
+# define MPFR_SET_INVALID_EXP(x) ((void) (MPFR_EXP (x) = MPFR_EXP_INVALID))
+#else
+# define MPFR_GET_EXP(x) MPFR_EXP (x)
+# define MPFR_SET_EXP(x, exp) ((void) (MPFR_EXP (x) = (exp)))
+# define MPFR_SET_INVALID_EXP(x) ((void) 0)
+#endif
+
+
+
+/******************************************************
+ ********** Singular Values (NAN, INF, ZERO) **********
+ ******************************************************/
+
+/* Enum special value of exponent. */
+# define MPFR_EXP_ZERO (MPFR_EXP_MIN+1)
+# define MPFR_EXP_NAN (MPFR_EXP_MIN+2)
+# define MPFR_EXP_INF (MPFR_EXP_MIN+3)
+
+#define MPFR_IS_NAN(x) (MPFR_EXP(x) == MPFR_EXP_NAN)
+#define MPFR_SET_NAN(x) (MPFR_EXP(x) = MPFR_EXP_NAN)
+#define MPFR_IS_INF(x) (MPFR_EXP(x) == MPFR_EXP_INF)
+#define MPFR_SET_INF(x) (MPFR_EXP(x) = MPFR_EXP_INF)
+#define MPFR_IS_ZERO(x) (MPFR_EXP(x) == MPFR_EXP_ZERO)
+#define MPFR_SET_ZERO(x) (MPFR_EXP(x) = MPFR_EXP_ZERO)
+#define MPFR_NOTZERO(x) (MPFR_EXP(x) != MPFR_EXP_ZERO)
+
+#define MPFR_IS_FP(x) (!MPFR_IS_NAN(x) && !MPFR_IS_INF(x))
+#define MPFR_IS_SINGULAR(x) (MPFR_EXP(x) <= MPFR_EXP_INF)
+#define MPFR_IS_PURE_FP(x) (!MPFR_IS_SINGULAR(x) && \
+ (MPFR_ASSERTD ((MPFR_MANT(x)[MPFR_LAST_LIMB(x)] \
+ & MPFR_LIMB_HIGHBIT) != 0), 1))
+
+#define MPFR_ARE_SINGULAR(x,y) \
+ (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)) || MPFR_UNLIKELY(MPFR_IS_SINGULAR(y)))
+
+#define MPFR_IS_POWER_OF_2(x) \
+ (mpfr_cmp_ui_2exp ((x), 1, MPFR_GET_EXP (x) - 1) == 0)
+
+
+/******************************************************
+ ********************* Sign Macros ********************
+ ******************************************************/
+
+#define MPFR_SIGN_POS (1)
+#define MPFR_SIGN_NEG (-1)
+
+#define MPFR_IS_STRICTPOS(x) (MPFR_NOTZERO((x)) && MPFR_SIGN(x) > 0)
+#define MPFR_IS_STRICTNEG(x) (MPFR_NOTZERO((x)) && MPFR_SIGN(x) < 0)
+
+#define MPFR_IS_NEG(x) (MPFR_SIGN(x) < 0)
+#define MPFR_IS_POS(x) (MPFR_SIGN(x) > 0)
+
+#define MPFR_SET_POS(x) (MPFR_SIGN(x) = MPFR_SIGN_POS)
+#define MPFR_SET_NEG(x) (MPFR_SIGN(x) = MPFR_SIGN_NEG)
+
+#define MPFR_CHANGE_SIGN(x) (MPFR_SIGN(x) = -MPFR_SIGN(x))
+#define MPFR_SET_SAME_SIGN(x, y) (MPFR_SIGN(x) = MPFR_SIGN(y))
+#define MPFR_SET_OPPOSITE_SIGN(x, y) (MPFR_SIGN(x) = -MPFR_SIGN(y))
+#define MPFR_ASSERT_SIGN(s) \
+ (MPFR_ASSERTD((s) == MPFR_SIGN_POS || (s) == MPFR_SIGN_NEG))
+#define MPFR_SET_SIGN(x, s) \
+ (MPFR_ASSERT_SIGN(s), MPFR_SIGN(x) = s)
+#define MPFR_IS_POS_SIGN(s1) (s1 > 0)
+#define MPFR_IS_NEG_SIGN(s1) (s1 < 0)
+#define MPFR_MULT_SIGN(s1, s2) ((s1) * (s2))
+/* Transform a sign to 1 or -1 */
+#define MPFR_FROM_SIGN_TO_INT(s) (s)
+#define MPFR_INT_SIGN(x) MPFR_FROM_SIGN_TO_INT(MPFR_SIGN(x))
+
+
+
+/******************************************************
+ ***************** Ternary Value Macros ***************
+ ******************************************************/
+
+/* Special inexact value */
+#define MPFR_EVEN_INEX 2
+
+/* Macros for functions returning two inexact values in an 'int' */
+#define INEXPOS(y) ((y) == 0 ? 0 : (((y) > 0) ? 1 : 2))
+#define INEX(y,z) (INEXPOS(y) | (INEXPOS(z) << 2))
+
+/* When returning the ternary inexact value, ALWAYS use one of the
+ following two macros, unless the flag comes from another function
+ returning the ternary inexact value */
+#define MPFR_RET(I) return \
+ (I) ? ((__gmpfr_flags |= MPFR_FLAGS_INEXACT), (I)) : 0
+#define MPFR_RET_NAN return (__gmpfr_flags |= MPFR_FLAGS_NAN), 0
+
+#define MPFR_SET_ERANGE() (__gmpfr_flags |= MPFR_FLAGS_ERANGE)
+
+#define SIGN(I) ((I) < 0 ? -1 : (I) > 0)
+#define SAME_SIGN(I1,I2) (SIGN (I1) == SIGN (I2))
+
+
+
+/******************************************************
+ ************** Rounding mode macros *****************
+ ******************************************************/
+
+/* MPFR_RND_MAX gives the number of supported rounding modes by all functions.
+ * Once faithful rounding is implemented, MPFR_RNDA should be changed
+ * to MPFR_RNDF. But this will also require more changes in the tests.
+ */
+#define MPFR_RND_MAX ((mpfr_rnd_t)((MPFR_RNDA)+1))
+
+/* We want to test this :
+ * (rnd == MPFR_RNDU && test) || (rnd == RNDD && !test)
+ * ie it transforms RNDU or RNDD to Away or Zero according to the sign */
+#define MPFR_IS_RNDUTEST_OR_RNDDNOTTEST(rnd, test) \
+ (((rnd) + (test)) == MPFR_RNDD)
+
+/* We want to test if rnd = Zero, or Away.
+ 'test' is 1 if negative, and 0 if positive. */
+#define MPFR_IS_LIKE_RNDZ(rnd, test) \
+ ((rnd==MPFR_RNDZ) || MPFR_IS_RNDUTEST_OR_RNDDNOTTEST (rnd, test))
+
+#define MPFR_IS_LIKE_RNDU(rnd, sign) \
+ ((rnd==MPFR_RNDU) || (rnd==MPFR_RNDZ && sign<0) || (rnd==MPFR_RNDA && sign>0))
+
+#define MPFR_IS_LIKE_RNDD(rnd, sign) \
+ ((rnd==MPFR_RNDD) || (rnd==MPFR_RNDZ && sign>0) || (rnd==MPFR_RNDA && sign<0))
+
+/* Invert a rounding mode, RNDZ and RNDA are unchanged */
+#define MPFR_INVERT_RND(rnd) ((rnd == MPFR_RNDU) ? MPFR_RNDD : \
+ ((rnd == MPFR_RNDD) ? MPFR_RNDU : rnd))
+
+/* Transform RNDU and RNDD to RNDZ according to test */
+#define MPFR_UPDATE_RND_MODE(rnd, test) \
+ do { \
+ if (MPFR_UNLIKELY(MPFR_IS_RNDUTEST_OR_RNDDNOTTEST(rnd, test))) \
+ rnd = MPFR_RNDZ; \
+ } while (0)
+
+/* Transform RNDU and RNDD to RNDZ or RNDA according to sign,
+ leave the other modes unchanged */
+#define MPFR_UPDATE2_RND_MODE(rnd, sign) \
+ do { \
+ if (rnd == MPFR_RNDU) \
+ rnd = (sign > 0) ? MPFR_RNDA : MPFR_RNDZ; \
+ else if (rnd == MPFR_RNDD) \
+ rnd = (sign < 0) ? MPFR_RNDA : MPFR_RNDZ; \
+ } while (0)
+
+
+/******************************************************
+ ******************* Limb Macros **********************
+ ******************************************************/
+
+ /* Definition of MPFR_LIMB_HIGHBIT */
+#if defined(GMP_LIMB_HIGHBIT)
+# define MPFR_LIMB_HIGHBIT GMP_LIMB_HIGHBIT
+#elif defined(MP_LIMB_T_HIGHBIT)
+# define MPFR_LIMB_HIGHBIT MP_LIMB_T_HIGHBIT
+#else
+# error "Neither GMP_LIMB_HIGHBIT nor MP_LIMB_T_HIGHBIT defined in GMP"
+#endif
+
+/* Mask to get the Most Significant Bit of a limb */
+#define MPFR_LIMB_MSB(l) ((l)&MPFR_LIMB_HIGHBIT)
+
+/* Definition of MPFR_LIMB_ONE & MPFR_LIMB_ZERO */
+#ifdef CNST_LIMB
+# define MPFR_LIMB_ONE CNST_LIMB(1)
+# define MPFR_LIMB_ZERO CNST_LIMB(0)
+#else
+# define MPFR_LIMB_ONE ((mp_limb_t) 1L)
+# define MPFR_LIMB_ZERO ((mp_limb_t) 0L)
+#endif
+
+/* Mask for the low 's' bits of a limb */
+#define MPFR_LIMB_MASK(s) ((MPFR_LIMB_ONE<<(s))-MPFR_LIMB_ONE)
+
+
+
+/******************************************************
+ ********************** Memory ************************
+ ******************************************************/
+
+/* Heap Memory gestion */
+typedef union { mp_size_t s; mp_limb_t l; } mpfr_size_limb_t;
+#define MPFR_GET_ALLOC_SIZE(x) \
+ ( ((mp_size_t*) MPFR_MANT(x))[-1] + 0)
+#define MPFR_SET_ALLOC_SIZE(x, n) \
+ ( ((mp_size_t*) MPFR_MANT(x))[-1] = n)
+#define MPFR_MALLOC_SIZE(s) \
+ ( sizeof(mpfr_size_limb_t) + MPFR_BYTES_PER_MP_LIMB * ((size_t) s) )
+#define MPFR_SET_MANT_PTR(x,p) \
+ (MPFR_MANT(x) = (mp_limb_t*) ((mpfr_size_limb_t*) p + 1))
+#define MPFR_GET_REAL_PTR(x) \
+ ((mp_limb_t*) ((mpfr_size_limb_t*) MPFR_MANT(x) - 1))
+
+/* Temporary memory gestion */
+#ifndef TMP_SALLOC
+/* GMP 4.1.x or below or internals */
+#define MPFR_TMP_DECL TMP_DECL
+#define MPFR_TMP_MARK TMP_MARK
+#define MPFR_TMP_ALLOC TMP_ALLOC
+#define MPFR_TMP_FREE TMP_FREE
+#else
+#define MPFR_TMP_DECL(x) TMP_DECL
+#define MPFR_TMP_MARK(x) TMP_MARK
+#define MPFR_TMP_ALLOC(s) TMP_ALLOC(s)
+#define MPFR_TMP_FREE(x) TMP_FREE
+#endif
+
+/* This code is experimental: don't use it */
+#ifdef MPFR_USE_OWN_MPFR_TMP_ALLOC
+extern unsigned char *mpfr_stack;
+#undef MPFR_TMP_DECL
+#undef MPFR_TMP_MARK
+#undef MPFR_TMP_ALLOC
+#undef MPFR_TMP_FREE
+#define MPFR_TMP_DECL(_x) unsigned char *(_x)
+#define MPFR_TMP_MARK(_x) ((_x) = mpfr_stack)
+#define MPFR_TMP_ALLOC(_s) (mpfr_stack += (_s), mpfr_stack - (_s))
+#define MPFR_TMP_FREE(_x) (mpfr_stack = (_x))
+#endif
+
+#define MPFR_TMP_LIMBS_ALLOC(N) \
+ ((mp_limb_t *) MPFR_TMP_ALLOC ((size_t) (N) * MPFR_BYTES_PER_MP_LIMB))
+
+/* temporary allocate 1 limb at xp, and initialize mpfr variable x */
+/* The temporary var doesn't have any size field, but it doesn't matter
+ * since only functions dealing with the Heap care about it */
+#define MPFR_TMP_INIT1(xp, x, p) \
+ ( MPFR_PREC(x) = (p), \
+ MPFR_MANT(x) = (xp), \
+ MPFR_SET_POS(x), \
+ MPFR_SET_INVALID_EXP(x))
+
+#define MPFR_TMP_INIT(xp, x, p, s) \
+ (xp = MPFR_TMP_LIMBS_ALLOC(s), \
+ MPFR_TMP_INIT1(xp, x, p))
+
+#define MPFR_TMP_INIT_ABS(d, s) \
+ ( MPFR_PREC(d) = MPFR_PREC(s), \
+ MPFR_MANT(d) = MPFR_MANT(s), \
+ MPFR_SET_POS(d), \
+ MPFR_EXP(d) = MPFR_EXP(s))
+
+
+
+/******************************************************
+ ***************** Cache macros **********************
+ ******************************************************/
+
+#define mpfr_const_pi(_d,_r) mpfr_cache(_d, __gmpfr_cache_const_pi,_r)
+#define mpfr_const_log2(_d,_r) mpfr_cache(_d, __gmpfr_cache_const_log2, _r)
+#define mpfr_const_euler(_d,_r) mpfr_cache(_d, __gmpfr_cache_const_euler, _r)
+#define mpfr_const_catalan(_d,_r) mpfr_cache(_d,__gmpfr_cache_const_catalan,_r)
+
+#define MPFR_DECL_INIT_CACHE(_cache,_func) \
+ mpfr_cache_t MPFR_THREAD_ATTR _cache = \
+ {{{{0,MPFR_SIGN_POS,0,(mp_limb_t*)0}},0,_func}}
+
+
+
+/******************************************************
+ ******************* Threshold ***********************
+ ******************************************************/
+
+#include "mparam.h"
+
+/******************************************************
+ ***************** Useful macros *********************
+ ******************************************************/
+
+/* Theses macros help the compiler to determine if a test is
+ likely or unlikely. The !! is necessary in case x is larger
+ than a long. */
+#if __MPFR_GNUC(3,0) || __MPFR_ICC(8,1,0)
+# define MPFR_LIKELY(x) (__builtin_expect(!!(x),1))
+# define MPFR_UNLIKELY(x) (__builtin_expect(!!(x),0))
+#else
+# define MPFR_LIKELY(x) (x)
+# define MPFR_UNLIKELY(x) (x)
+#endif
+
+/* Declare that some variable is initialized before being used (without a
+ dummy initialization) in order to avoid some compiler warnings. Use the
+ VAR = VAR trick (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36296)
+ only with gcc as this is undefined behavior, and we don't know what
+ other compilers do (they may also be smarter). This trick could be
+ disabled with future gcc versions. */
+#if defined(__GNUC__)
+# define INITIALIZED(VAR) VAR = VAR
+#else
+# define INITIALIZED(VAR) VAR
+#endif
+
+/* Ceil log 2: If GCC, uses a GCC extension, otherwise calls a function */
+/* Warning:
+ * Needs to define MPFR_NEED_LONGLONG.
+ * Computes ceil(log2(x)) only for x integer (unsigned long)
+ * Undefined if x is 0 */
+#if __MPFR_GNUC(2,95) || __MPFR_ICC(8,1,0)
+# define MPFR_INT_CEIL_LOG2(x) \
+ (MPFR_UNLIKELY ((x) == 1) ? 0 : \
+ __extension__ ({ int _b; mp_limb_t _limb; \
+ MPFR_ASSERTN ((x) > 1); \
+ _limb = (x) - 1; \
+ MPFR_ASSERTN (_limb == (x) - 1); \
+ count_leading_zeros (_b, _limb); \
+ (GMP_NUMB_BITS - _b); }))
+#else
+# define MPFR_INT_CEIL_LOG2(x) (__gmpfr_int_ceil_log2(x))
+#endif
+
+/* Add two integers with overflow handling */
+/* Example: MPFR_SADD_OVERFLOW (c, a, b, long, unsigned long,
+ * LONG_MIN, LONG_MAX,
+ * goto overflow, goto underflow); */
+#define MPFR_UADD_OVERFLOW(c,a,b,ACTION_IF_OVERFLOW) \
+ do { \
+ (c) = (a) + (b); \
+ if ((c) < (a)) ACTION_IF_OVERFLOW; \
+ } while (0)
+
+#define MPFR_SADD_OVERFLOW(c,a,b,STYPE,UTYPE,MIN,MAX,ACTION_IF_POS_OVERFLOW,ACTION_IF_NEG_OVERFLOW) \
+ do { \
+ if ((a) >= 0 && (b) >= 0) { \
+ UTYPE uc,ua,ub; \
+ ua = (UTYPE) (a); ub = (UTYPE) (b); \
+ MPFR_UADD_OVERFLOW (uc, ua, ub, ACTION_IF_POS_OVERFLOW); \
+ if (uc > (UTYPE)(MAX)) ACTION_IF_POS_OVERFLOW; \
+ else (c) = (STYPE) uc; \
+ } else if ((a) < 0 && (b) < 0) { \
+ UTYPE uc,ua,ub; \
+ ua = -(UTYPE) (a); ub = -(UTYPE) (b); \
+ MPFR_UADD_OVERFLOW (uc, ua, ub, ACTION_IF_NEG_OVERFLOW); \
+ if (uc >= -(UTYPE)(MIN) || uc > (UTYPE)(MAX)) { \
+ if (uc == -(UTYPE)(MIN)) (c) = (MIN); \
+ else ACTION_IF_NEG_OVERFLOW; } \
+ else (c) = -(STYPE) uc; \
+ } else (c) = (a) + (b); \
+ } while (0)
+
+
+/* Set a number to 1 (Fast) - It doesn't check if 1 is in the exponent range */
+#define MPFR_SET_ONE(x) \
+do { \
+ mp_size_t _size = MPFR_LAST_LIMB(x); \
+ MPFR_SET_POS(x); \
+ MPFR_EXP(x) = 1; \
+ MPN_ZERO ( MPFR_MANT(x), _size); \
+ MPFR_MANT(x)[_size] = MPFR_LIMB_HIGHBIT; \
+} while (0)
+
+/* Compute s = (-a) % GMP_NUMB_BITS as unsigned */
+#define MPFR_UNSIGNED_MINUS_MODULO(s, a) \
+ do \
+ { \
+ if (IS_POW2 (GMP_NUMB_BITS)) \
+ (s) = (- (unsigned int) (a)) % GMP_NUMB_BITS; \
+ else \
+ { \
+ (s) = (a) % GMP_NUMB_BITS; \
+ if ((s) != 0) \
+ (s) = GMP_NUMB_BITS - (s); \
+ } \
+ MPFR_ASSERTD ((s) >= 0 && (s) < GMP_NUMB_BITS); \
+ } \
+ while (0)
+
+/* Use it only for debug reasons */
+/* MPFR_TRACE (operation) : execute operation iff DEBUG flag is set */
+/* MPFR_DUMP (x) : print x (a mpfr_t) on stdout */
+#ifdef DEBUG
+# define MPFR_TRACE(x) x
+#else
+# define MPFR_TRACE(x) (void) 0
+#endif
+#define MPFR_DUMP(x) ( printf(#x"="), mpfr_dump(x) )
+
+/* Test if X (positive) is a power of 2 */
+#define IS_POW2(X) (((X) & ((X) - 1)) == 0)
+#define NOT_POW2(X) (((X) & ((X) - 1)) != 0)
+
+/* Safe absolute value (to avoid possible integer overflow) */
+/* type is the target (unsigned) type */
+#define SAFE_ABS(type,x) ((x) >= 0 ? (type)(x) : -(type)(x))
+
+#define mpfr_get_d1(x) mpfr_get_d(x,__gmpfr_default_rounding_mode)
+
+/* Store in r the size in bits of the mpz_t z */
+#define MPFR_MPZ_SIZEINBASE2(r, z) \
+ do { \
+ int _cnt; \
+ mp_size_t _size; \
+ MPFR_ASSERTD (mpz_sgn (z) != 0); \
+ _size = ABSIZ(z); \
+ count_leading_zeros (_cnt, PTR(z)[_size-1]); \
+ (r) = _size * GMP_NUMB_BITS - _cnt; \
+ } while (0)
+
+/* MPFR_LCONV_DPTS can also be forced to 0 or 1 by the user. */
+#ifndef MPFR_LCONV_DPTS
+# if defined(HAVE_LOCALE_H) && \
+ defined(HAVE_STRUCT_LCONV_DECIMAL_POINT) && \
+ defined(HAVE_STRUCT_LCONV_THOUSANDS_SEP)
+# define MPFR_LCONV_DPTS 1
+# else
+# define MPFR_LCONV_DPTS 0
+# endif
+#endif
+
+#if MPFR_LCONV_DPTS
+#include <locale.h>
+/* Warning! In case of signed char, the value of MPFR_DECIMAL_POINT may
+ be negative (the ISO C99 does not seem to forbid negative values). */
+#define MPFR_DECIMAL_POINT (localeconv()->decimal_point[0])
+#define MPFR_THOUSANDS_SEPARATOR (localeconv()->thousands_sep[0])
+#else
+#define MPFR_DECIMAL_POINT ((char) '.')
+#define MPFR_THOUSANDS_SEPARATOR ('\0')
+#endif
+
+
+/* Set y to s*significand(x)*2^e, for example MPFR_ALIAS(y,x,1,MPFR_EXP(x))
+ sets y to |x|, and MPFR_ALIAS(y,x,MPFR_SIGN(x),0) sets y to x*2^f such
+ that 1/2 <= |y| < 1. Does not check y is in the valid exponent range.
+ WARNING! x and y share the same mantissa. So, some operations are
+ not valid if x has been provided via an argument, e.g., trying to
+ modify the mantissa of y, even temporarily, or calling mpfr_clear on y.
+*/
+#define MPFR_ALIAS(y,x,s,e) \
+ do \
+ { \
+ MPFR_PREC(y) = MPFR_PREC(x); \
+ MPFR_SIGN(y) = (s); \
+ MPFR_EXP(y) = (e); \
+ MPFR_MANT(y) = MPFR_MANT(x); \
+ } while (0)
+
+
+/******************************************************
+ ************** Save exponent macros ****************
+ ******************************************************/
+
+/* See README.dev for details on how to use the macros.
+ They are used to set the exponent range to the maximum
+ temporarily */
+
+typedef struct {
+ unsigned int saved_flags;
+ mpfr_exp_t saved_emin;
+ mpfr_exp_t saved_emax;
+} mpfr_save_expo_t;
+
+/* Minimum and maximum exponents of the extended exponent range. */
+#define MPFR_EXT_EMIN MPFR_EMIN_MIN
+#define MPFR_EXT_EMAX MPFR_EMAX_MAX
+
+#define MPFR_SAVE_EXPO_DECL(x) mpfr_save_expo_t x
+#define MPFR_SAVE_EXPO_MARK(x) \
+ ((x).saved_flags = __gmpfr_flags, \
+ (x).saved_emin = __gmpfr_emin, \
+ (x).saved_emax = __gmpfr_emax, \
+ __gmpfr_emin = MPFR_EXT_EMIN, \
+ __gmpfr_emax = MPFR_EXT_EMAX)
+#define MPFR_SAVE_EXPO_FREE(x) \
+ (__gmpfr_flags = (x).saved_flags, \
+ __gmpfr_emin = (x).saved_emin, \
+ __gmpfr_emax = (x).saved_emax)
+#define MPFR_SAVE_EXPO_UPDATE_FLAGS(x, flags) \
+ (x).saved_flags |= (flags)
+
+/* Speed up final checking */
+#define mpfr_check_range(x,t,r) \
+ (MPFR_LIKELY (MPFR_EXP (x) >= __gmpfr_emin && MPFR_EXP (x) <= __gmpfr_emax) \
+ ? ((t) ? (__gmpfr_flags |= MPFR_FLAGS_INEXACT, (t)) : 0) \
+ : mpfr_check_range(x,t,r))
+
+
+/******************************************************
+ ***************** Inline Rounding *******************
+ ******************************************************/
+
+/*
+ * Note: due to the labels, one cannot use a macro MPFR_RNDRAW* more than
+ * once in a function (otherwise these labels would not be unique).
+ */
+
+/*
+ * Round mantissa (srcp, sprec) to mpfr_t dest using rounding mode rnd
+ * assuming dest's sign is sign.
+ * In rounding to nearest mode, execute MIDDLE_HANDLER when the value
+ * is the middle of two consecutive numbers in dest precision.
+ * Execute OVERFLOW_HANDLER in case of overflow when rounding.
+ */
+#define MPFR_RNDRAW_GEN(inexact, dest, srcp, sprec, rnd, sign, \
+ MIDDLE_HANDLER, OVERFLOW_HANDLER) \
+ do { \
+ mp_size_t _dests, _srcs; \
+ mp_limb_t *_destp; \
+ mpfr_prec_t _destprec, _srcprec; \
+ \
+ /* Check Trivial Case when Dest Mantissa has more bits than source */ \
+ _srcprec = (sprec); \
+ _destprec = MPFR_PREC (dest); \
+ _destp = MPFR_MANT (dest); \
+ if (MPFR_UNLIKELY (_destprec >= _srcprec)) \
+ { \
+ _srcs = MPFR_PREC2LIMBS (_srcprec); \
+ _dests = MPFR_PREC2LIMBS (_destprec) - _srcs; \
+ MPN_COPY (_destp + _dests, srcp, _srcs); \
+ MPN_ZERO (_destp, _dests); \
+ inexact = 0; \
+ } \
+ else \
+ { \
+ /* Non trivial case: rounding needed */ \
+ mpfr_prec_t _sh; \
+ mp_limb_t *_sp; \
+ mp_limb_t _rb, _sb, _ulp; \
+ \
+ /* Compute Position and shift */ \
+ _srcs = MPFR_PREC2LIMBS (_srcprec); \
+ _dests = MPFR_PREC2LIMBS (_destprec); \
+ MPFR_UNSIGNED_MINUS_MODULO (_sh, _destprec); \
+ _sp = (srcp) + _srcs - _dests; \
+ \
+ /* General case when prec % GMP_NUMB_BITS != 0 */ \
+ if (MPFR_LIKELY (_sh != 0)) \
+ { \
+ mp_limb_t _mask; \
+ /* Compute Rounding Bit and Sticky Bit */ \
+ /* Note: in directed rounding modes, if the rounding bit */ \
+ /* is 1, the behavior does not depend on the sticky bit; */ \
+ /* thus we will not try to compute it in this case (this */ \
+ /* can be much faster and avoids to read uninitialized */ \
+ /* data in the current mpfr_mul implementation). We just */ \
+ /* make sure that _sb is initialized. */ \
+ _mask = MPFR_LIMB_ONE << (_sh - 1); \
+ _rb = _sp[0] & _mask; \
+ _sb = _sp[0] & (_mask - 1); \
+ if (MPFR_UNLIKELY (_sb == 0) && \
+ ((rnd) == MPFR_RNDN || _rb == 0)) \
+ { /* TODO: Improve it */ \
+ mp_limb_t *_tmp; \
+ mp_size_t _n; \
+ for (_tmp = _sp, _n = _srcs - _dests ; \
+ _n != 0 && _sb == 0 ; _n--) \
+ _sb = *--_tmp; \
+ } \
+ _ulp = 2 * _mask; \
+ } \
+ else /* _sh == 0 */ \
+ { \
+ MPFR_ASSERTD (_dests < _srcs); \
+ /* Compute Rounding Bit and Sticky Bit - see note above */ \
+ _rb = _sp[-1] & MPFR_LIMB_HIGHBIT; \
+ _sb = _sp[-1] & (MPFR_LIMB_HIGHBIT-1); \
+ if (MPFR_UNLIKELY (_sb == 0) && \
+ ((rnd) == MPFR_RNDN || _rb == 0)) \
+ { \
+ mp_limb_t *_tmp; \
+ mp_size_t _n; \
+ for (_tmp = _sp - 1, _n = _srcs - _dests - 1 ; \
+ _n != 0 && _sb == 0 ; _n--) \
+ _sb = *--_tmp; \
+ } \
+ _ulp = MPFR_LIMB_ONE; \
+ } \
+ /* Rounding */ \
+ if (MPFR_LIKELY (rnd == MPFR_RNDN)) \
+ { \
+ if (_rb == 0) \
+ { \
+ trunc: \
+ inexact = MPFR_LIKELY ((_sb | _rb) != 0) ? -sign : 0; \
+ trunc_doit: \
+ MPN_COPY (_destp, _sp, _dests); \
+ _destp[0] &= ~(_ulp - 1); \
+ } \
+ else if (MPFR_UNLIKELY (_sb == 0)) \
+ { /* Middle of two consecutive representable numbers */ \
+ MIDDLE_HANDLER; \
+ } \
+ else \
+ { \
+ if (0) \
+ goto addoneulp_doit; /* dummy code to avoid warning */ \
+ addoneulp: \
+ inexact = sign; \
+ addoneulp_doit: \
+ if (MPFR_UNLIKELY (mpn_add_1 (_destp, _sp, _dests, _ulp))) \
+ { \
+ _destp[_dests - 1] = MPFR_LIMB_HIGHBIT; \
+ OVERFLOW_HANDLER; \
+ } \
+ _destp[0] &= ~(_ulp - 1); \
+ } \
+ } \
+ else \
+ { /* Directed rounding mode */ \
+ if (MPFR_LIKELY (MPFR_IS_LIKE_RNDZ (rnd, \
+ MPFR_IS_NEG_SIGN (sign)))) \
+ goto trunc; \
+ else if (MPFR_UNLIKELY ((_sb | _rb) == 0)) \
+ { \
+ inexact = 0; \
+ goto trunc_doit; \
+ } \
+ else \
+ goto addoneulp; \
+ } \
+ } \
+ } while (0)
+
+/*
+ * Round mantissa (srcp, sprec) to mpfr_t dest using rounding mode rnd
+ * assuming dest's sign is sign.
+ * Execute OVERFLOW_HANDLER in case of overflow when rounding.
+ */
+#define MPFR_RNDRAW(inexact, dest, srcp, sprec, rnd, sign, OVERFLOW_HANDLER) \
+ MPFR_RNDRAW_GEN (inexact, dest, srcp, sprec, rnd, sign, \
+ if ((_sp[0] & _ulp) == 0) \
+ { \
+ inexact = -sign; \
+ goto trunc_doit; \
+ } \
+ else \
+ goto addoneulp; \
+ , OVERFLOW_HANDLER)
+
+/*
+ * Round mantissa (srcp, sprec) to mpfr_t dest using rounding mode rnd
+ * assuming dest's sign is sign.
+ * Execute OVERFLOW_HANDLER in case of overflow when rounding.
+ * Set inexact to +/- MPFR_EVEN_INEX in case of even rounding.
+ */
+#define MPFR_RNDRAW_EVEN(inexact, dest, srcp, sprec, rnd, sign, \
+ OVERFLOW_HANDLER) \
+ MPFR_RNDRAW_GEN (inexact, dest, srcp, sprec, rnd, sign, \
+ if ((_sp[0] & _ulp) == 0) \
+ { \
+ inexact = -MPFR_EVEN_INEX * sign; \
+ goto trunc_doit; \
+ } \
+ else \
+ { \
+ inexact = MPFR_EVEN_INEX * sign; \
+ goto addoneulp_doit; \
+ } \
+ , OVERFLOW_HANDLER)
+
+/* Return TRUE if b is non singular and we can round it to precision 'prec'
+ and determine the ternary value, with rounding mode 'rnd', and with
+ error at most 'error' */
+#define MPFR_CAN_ROUND(b,err,prec,rnd) \
+ (!MPFR_IS_SINGULAR (b) && mpfr_round_p (MPFR_MANT (b), MPFR_LIMB_SIZE (b), \
+ (err), (prec) + ((rnd)==MPFR_RNDN)))
+
+/* Copy the sign and the significand, and handle the exponent in exp. */
+#define MPFR_SETRAW(inexact,dest,src,exp,rnd) \
+ if (MPFR_UNLIKELY (dest != src)) \
+ { \
+ MPFR_SET_SIGN (dest, MPFR_SIGN (src)); \
+ if (MPFR_LIKELY (MPFR_PREC (dest) == MPFR_PREC (src))) \
+ { \
+ MPN_COPY (MPFR_MANT (dest), MPFR_MANT (src), \
+ MPFR_LIMB_SIZE (src)); \
+ inexact = 0; \
+ } \
+ else \
+ { \
+ MPFR_RNDRAW (inexact, dest, MPFR_MANT (src), MPFR_PREC (src), \
+ rnd, MPFR_SIGN (src), exp++); \
+ } \
+ } \
+ else \
+ inexact = 0;
+
+/* TODO: fix this description (see round_near_x.c). */
+/* Assuming that the function has a Taylor expansion which looks like:
+ y=o(f(x)) = o(v + g(x)) with |g(x)| <= 2^(EXP(v)-err)
+ we can quickly set y to v if x is small (ie err > prec(y)+1) in most
+ cases. It assumes that f(x) is not representable exactly as a FP number.
+ v must not be a singular value (NAN, INF or ZERO); usual values are
+ v=1 or v=x.
+
+ y is the destination (a mpfr_t), v the value to set (a mpfr_t),
+ err1+err2 with err2 <= 3 the error term (mpfr_exp_t's), dir (an int) is
+ the direction of the committed error (if dir = 0, it rounds toward 0,
+ if dir=1, it rounds away from 0), rnd the rounding mode.
+
+ It returns from the function a ternary value in case of success.
+ If you want to free something, you must fill the "extra" field
+ in consequences, otherwise put nothing in it.
+
+ The test is less restrictive than necessary, but the function
+ will finish the check itself.
+
+ Note: err1 + err2 is allowed to overflow as mpfr_exp_t, but it must give
+ its real value as mpfr_uexp_t.
+*/
+#define MPFR_FAST_COMPUTE_IF_SMALL_INPUT(y,v,err1,err2,dir,rnd,extra) \
+ do { \
+ mpfr_ptr _y = (y); \
+ mpfr_exp_t _err1 = (err1); \
+ mpfr_exp_t _err2 = (err2); \
+ if (_err1 > 0) \
+ { \
+ mpfr_uexp_t _err = (mpfr_uexp_t) _err1 + _err2; \
+ if (MPFR_UNLIKELY (_err > MPFR_PREC (_y) + 1)) \
+ { \
+ int _inexact = mpfr_round_near_x (_y,(v),_err,(dir),(rnd)); \
+ if (_inexact != 0) \
+ { \
+ extra; \
+ return _inexact; \
+ } \
+ } \
+ } \
+ } while (0)
+
+/* Variant, to be called somewhere after MPFR_SAVE_EXPO_MARK. This variant
+ is needed when there are some computations before or when some non-zero
+ real constant is used, such as __gmpfr_one for mpfr_cos. */
+#define MPFR_SMALL_INPUT_AFTER_SAVE_EXPO(y,v,err1,err2,dir,rnd,expo,extra) \
+ do { \
+ mpfr_ptr _y = (y); \
+ mpfr_exp_t _err1 = (err1); \
+ mpfr_exp_t _err2 = (err2); \
+ if (_err1 > 0) \
+ { \
+ mpfr_uexp_t _err = (mpfr_uexp_t) _err1 + _err2; \
+ if (MPFR_UNLIKELY (_err > MPFR_PREC (_y) + 1)) \
+ { \
+ int _inexact; \
+ mpfr_clear_flags (); \
+ _inexact = mpfr_round_near_x (_y,(v),_err,(dir),(rnd)); \
+ if (_inexact != 0) \
+ { \
+ extra; \
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); \
+ MPFR_SAVE_EXPO_FREE (expo); \
+ return mpfr_check_range (_y, _inexact, (rnd)); \
+ } \
+ } \
+ } \
+ } while (0)
+
+/******************************************************
+ *************** Ziv Loop Macro *********************
+ ******************************************************/
+
+#ifndef MPFR_USE_LOGGING
+
+#define MPFR_ZIV_DECL(_x) mpfr_prec_t _x
+#define MPFR_ZIV_INIT(_x, _p) (_x) = GMP_NUMB_BITS
+#define MPFR_ZIV_NEXT(_x, _p) ((_p) += (_x), (_x) = (_p)/2)
+#define MPFR_ZIV_FREE(x)
+
+#else
+
+/* The following test on glibc is there mainly for Darwin (Mac OS X), to
+ obtain a better error message. The real test should have been a test
+ concerning nested functions in gcc, which are disabled by default on
+ Darwin; but it is not possible to do that without a configure test. */
+# if defined (__cplusplus) || !(__MPFR_GNUC(3,0) && __MPFR_GLIBC(2,0))
+# error "Logging not supported (needs gcc >= 3.0 and GNU C Library >= 2.0)."
+# endif
+
+/* Use LOGGING */
+
+/* Note: the mpfr_log_level >= 0 below avoids to take into account
+ Ziv loops used by the MPFR functions called by the mpfr_fprintf
+ in LOG_PRINT. */
+
+#define MPFR_ZIV_DECL(_x) \
+ mpfr_prec_t _x; \
+ int _x ## _cpt = 1; \
+ static unsigned long _x ## _loop = 0, _x ## _bad = 0; \
+ static const char *_x ## _fname = __func__; \
+ auto void __attribute__ ((destructor)) x ## _f (void); \
+ void __attribute__ ((destructor)) x ## _f (void) { \
+ if (_x ## _loop != 0 && (MPFR_LOG_STAT_F & mpfr_log_type)) \
+ fprintf (mpfr_log_file, \
+ "%s: Ziv failed %2.2f%% (%lu bad cases / %lu calls)\n", \
+ _x ## _fname, (double) 100.0 * _x ## _bad / _x ## _loop, \
+ _x ## _bad, _x ## _loop ); }
+
+#define MPFR_ZIV_INIT(_x, _p) \
+ do \
+ { \
+ (_x) = GMP_NUMB_BITS; \
+ if (mpfr_log_level >= 0) \
+ _x ## _loop ++; \
+ if ((MPFR_LOG_BADCASE_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ LOG_PRINT ("%s:ZIV 1st prec=%Pd\n", \
+ __func__, (mpfr_prec_t) (_p)); \
+ } \
+ while (0)
+
+#define MPFR_ZIV_NEXT(_x, _p) \
+ do \
+ { \
+ (_p) += (_x); \
+ (_x) = (_p) / 2; \
+ if (mpfr_log_level >= 0) \
+ _x ## _bad += (_x ## _cpt == 1); \
+ _x ## _cpt ++; \
+ if ((MPFR_LOG_BADCASE_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ LOG_PRINT ("%s:ZIV new prec=%Pd\n", \
+ __func__, (mpfr_prec_t) (_p)); \
+ } \
+ while (0)
+
+#define MPFR_ZIV_FREE(_x) \
+ do \
+ { \
+ if ((MPFR_LOG_BADCASE_F & mpfr_log_type) && _x ## _cpt > 1 && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ fprintf (mpfr_log_file, "%s:ZIV %d loops\n", \
+ __func__, _x ## _cpt); \
+ } \
+ while (0)
+
+#endif
+
+
+/******************************************************
+ *************** Logging Macros *********************
+ ******************************************************/
+
+/* The different kind of LOG */
+#define MPFR_LOG_INPUT_F 1
+#define MPFR_LOG_OUTPUT_F 2
+#define MPFR_LOG_INTERNAL_F 4
+#define MPFR_LOG_TIME_F 8
+#define MPFR_LOG_BADCASE_F 16
+#define MPFR_LOG_MSG_F 32
+#define MPFR_LOG_STAT_F 64
+
+#ifdef MPFR_USE_LOGGING
+
+/* Check if we can support this feature */
+# ifdef MPFR_USE_THREAD_SAFE
+# error "Enable either `Logging' or `thread-safe', not both"
+# endif
+# if !__MPFR_GNUC(3,0)
+# error "Logging not supported (GCC >= 3.0)"
+# endif
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+__MPFR_DECLSPEC extern FILE *mpfr_log_file;
+__MPFR_DECLSPEC extern int mpfr_log_type;
+__MPFR_DECLSPEC extern int mpfr_log_level;
+__MPFR_DECLSPEC extern int mpfr_log_current;
+__MPFR_DECLSPEC extern mpfr_prec_t mpfr_log_prec;
+
+#if defined (__cplusplus)
+ }
+#endif
+
+/* LOG_PRINT calls mpfr_fprintf on mpfr_log_file with logging disabled
+ (recursive logging is not wanted and freezes MPFR). */
+#define LOG_PRINT(format, ...) \
+ do \
+ { \
+ int old_level = mpfr_log_level; \
+ mpfr_log_level = -1; /* disable logging in mpfr_fprintf */ \
+ __gmpfr_cache_const_pi = __gmpfr_logging_pi; \
+ __gmpfr_cache_const_log2 = __gmpfr_logging_log2; \
+ mpfr_fprintf (mpfr_log_file, format, __VA_ARGS__); \
+ mpfr_log_level = old_level; \
+ __gmpfr_cache_const_pi = __gmpfr_normal_pi; \
+ __gmpfr_cache_const_log2 = __gmpfr_normal_log2; \
+ } \
+ while (0)
+
+#define MPFR_LOG_VAR(x) \
+ do \
+ if ((MPFR_LOG_INTERNAL_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ LOG_PRINT ("%s.%d:%s[%#Pu]=%.*Rg\n", __func__, __LINE__, \
+ #x, mpfr_get_prec (x), mpfr_log_prec, x); \
+ while (0)
+
+#define MPFR_LOG_MSG2(format, ...) \
+ do \
+ if ((MPFR_LOG_MSG_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ LOG_PRINT ("%s.%d: "format, __func__, __LINE__, __VA_ARGS__); \
+ while (0)
+#define MPFR_LOG_MSG(x) MPFR_LOG_MSG2 x
+
+#define MPFR_LOG_BEGIN2(format, ...) \
+ mpfr_log_current ++; \
+ if ((MPFR_LOG_INPUT_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ LOG_PRINT ("%s:IN "format"\n", __func__, __VA_ARGS__); \
+ if ((MPFR_LOG_TIME_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ __gmpfr_log_time = mpfr_get_cputime ();
+#define MPFR_LOG_BEGIN(x) \
+ int __gmpfr_log_time = 0; \
+ MPFR_LOG_BEGIN2 x
+
+#define MPFR_LOG_END2(format, ...) \
+ if ((MPFR_LOG_TIME_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ fprintf (mpfr_log_file, "%s:TIM %dms\n", __mpfr_log_fname, \
+ mpfr_get_cputime () - __gmpfr_log_time); \
+ if ((MPFR_LOG_OUTPUT_F & mpfr_log_type) && \
+ (mpfr_log_current <= mpfr_log_level)) \
+ LOG_PRINT ("%s:OUT "format"\n", __mpfr_log_fname, __VA_ARGS__); \
+ mpfr_log_current --;
+#define MPFR_LOG_END(x) \
+ static const char *__mpfr_log_fname = __func__; \
+ MPFR_LOG_END2 x
+
+#define MPFR_LOG_FUNC(begin,end) \
+ static const char *__mpfr_log_fname = __func__; \
+ auto void __mpfr_log_cleanup (int *time); \
+ void __mpfr_log_cleanup (int *time) { \
+ int __gmpfr_log_time = *time; \
+ MPFR_LOG_END2 end; } \
+ int __gmpfr_log_time __attribute__ ((cleanup (__mpfr_log_cleanup))); \
+ __gmpfr_log_time = 0; \
+ MPFR_LOG_BEGIN2 begin
+
+#else /* MPFR_USE_LOGGING */
+
+/* Define void macro for logging */
+
+#define MPFR_LOG_VAR(x)
+#define MPFR_LOG_BEGIN(x)
+#define MPFR_LOG_END(x)
+#define MPFR_LOG_MSG(x)
+#define MPFR_LOG_FUNC(x,y)
+
+#endif /* MPFR_USE_LOGGING */
+
+
+/**************************************************************
+ ************ Group Initialize Functions Macros *************
+ **************************************************************/
+
+#ifndef MPFR_GROUP_STATIC_SIZE
+# define MPFR_GROUP_STATIC_SIZE 16
+#endif
+
+struct mpfr_group_t {
+ size_t alloc;
+ mp_limb_t *mant;
+ mp_limb_t tab[MPFR_GROUP_STATIC_SIZE];
+};
+
+#define MPFR_GROUP_DECL(g) struct mpfr_group_t g
+#define MPFR_GROUP_CLEAR(g) do { \
+ MPFR_LOG_MSG (("GROUP_CLEAR: ptr = 0x%lX, size = %lu\n", \
+ (unsigned long) (g).mant, \
+ (unsigned long) (g).alloc)); \
+ if (MPFR_UNLIKELY ((g).alloc != 0)) { \
+ MPFR_ASSERTD ((g).mant != (g).tab); \
+ (*__gmp_free_func) ((g).mant, (g).alloc); \
+ }} while (0)
+
+#define MPFR_GROUP_INIT_TEMPLATE(g, prec, num, handler) do { \
+ mpfr_prec_t _prec = (prec); \
+ mp_size_t _size; \
+ MPFR_ASSERTD (_prec >= MPFR_PREC_MIN); \
+ if (MPFR_UNLIKELY (_prec > MPFR_PREC_MAX)) \
+ mpfr_abort_prec_max (); \
+ _size = MPFR_PREC2LIMBS (_prec); \
+ if (MPFR_UNLIKELY (_size * (num) > MPFR_GROUP_STATIC_SIZE)) \
+ { \
+ (g).alloc = (num) * _size * sizeof (mp_limb_t); \
+ (g).mant = (mp_limb_t *) (*__gmp_allocate_func) ((g).alloc); \
+ } \
+ else \
+ { \
+ (g).alloc = 0; \
+ (g).mant = (g).tab; \
+ } \
+ MPFR_LOG_MSG (("GROUP_INIT: ptr = 0x%lX, size = %lu\n", \
+ (unsigned long) (g).mant, (unsigned long) (g).alloc)); \
+ handler; \
+ } while (0)
+#define MPFR_GROUP_TINIT(g, n, x) \
+ MPFR_TMP_INIT1 ((g).mant + _size * (n), x, _prec)
+
+#define MPFR_GROUP_INIT_1(g, prec, x) \
+ MPFR_GROUP_INIT_TEMPLATE(g, prec, 1, MPFR_GROUP_TINIT(g, 0, x))
+#define MPFR_GROUP_INIT_2(g, prec, x, y) \
+ MPFR_GROUP_INIT_TEMPLATE(g, prec, 2, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y))
+#define MPFR_GROUP_INIT_3(g, prec, x, y, z) \
+ MPFR_GROUP_INIT_TEMPLATE(g, prec, 3, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z))
+#define MPFR_GROUP_INIT_4(g, prec, x, y, z, t) \
+ MPFR_GROUP_INIT_TEMPLATE(g, prec, 4, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z);MPFR_GROUP_TINIT(g, 3, t))
+#define MPFR_GROUP_INIT_5(g, prec, x, y, z, t, a) \
+ MPFR_GROUP_INIT_TEMPLATE(g, prec, 5, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z);MPFR_GROUP_TINIT(g, 3, t); \
+ MPFR_GROUP_TINIT(g, 4, a))
+#define MPFR_GROUP_INIT_6(g, prec, x, y, z, t, a, b) \
+ MPFR_GROUP_INIT_TEMPLATE(g, prec, 6, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z);MPFR_GROUP_TINIT(g, 3, t); \
+ MPFR_GROUP_TINIT(g, 4, a);MPFR_GROUP_TINIT(g, 5, b))
+
+#define MPFR_GROUP_REPREC_TEMPLATE(g, prec, num, handler) do { \
+ mpfr_prec_t _prec = (prec); \
+ size_t _oalloc = (g).alloc; \
+ mp_size_t _size; \
+ MPFR_LOG_MSG (("GROUP_REPREC: oldptr = 0x%lX, oldsize = %lu\n", \
+ (unsigned long) (g).mant, (unsigned long) _oalloc)); \
+ MPFR_ASSERTD (_prec >= MPFR_PREC_MIN); \
+ if (MPFR_UNLIKELY (_prec > MPFR_PREC_MAX)) \
+ mpfr_abort_prec_max (); \
+ _size = MPFR_PREC2LIMBS (_prec); \
+ (g).alloc = (num) * _size * sizeof (mp_limb_t); \
+ if (MPFR_LIKELY (_oalloc == 0)) \
+ (g).mant = (mp_limb_t *) (*__gmp_allocate_func) ((g).alloc); \
+ else \
+ (g).mant = (mp_limb_t *) \
+ (*__gmp_reallocate_func) ((g).mant, _oalloc, (g).alloc); \
+ MPFR_LOG_MSG (("GROUP_REPREC: newptr = 0x%lX, newsize = %lu\n", \
+ (unsigned long) (g).mant, (unsigned long) (g).alloc)); \
+ handler; \
+ } while (0)
+
+#define MPFR_GROUP_REPREC_1(g, prec, x) \
+ MPFR_GROUP_REPREC_TEMPLATE(g, prec, 1, MPFR_GROUP_TINIT(g, 0, x))
+#define MPFR_GROUP_REPREC_2(g, prec, x, y) \
+ MPFR_GROUP_REPREC_TEMPLATE(g, prec, 2, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y))
+#define MPFR_GROUP_REPREC_3(g, prec, x, y, z) \
+ MPFR_GROUP_REPREC_TEMPLATE(g, prec, 3, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z))
+#define MPFR_GROUP_REPREC_4(g, prec, x, y, z, t) \
+ MPFR_GROUP_REPREC_TEMPLATE(g, prec, 4, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z);MPFR_GROUP_TINIT(g, 3, t))
+#define MPFR_GROUP_REPREC_5(g, prec, x, y, z, t, a) \
+ MPFR_GROUP_REPREC_TEMPLATE(g, prec, 5, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z);MPFR_GROUP_TINIT(g, 3, t); \
+ MPFR_GROUP_TINIT(g, 4, a))
+#define MPFR_GROUP_REPREC_6(g, prec, x, y, z, t, a, b) \
+ MPFR_GROUP_REPREC_TEMPLATE(g, prec, 6, \
+ MPFR_GROUP_TINIT(g, 0, x);MPFR_GROUP_TINIT(g, 1, y); \
+ MPFR_GROUP_TINIT(g, 2, z);MPFR_GROUP_TINIT(g, 3, t); \
+ MPFR_GROUP_TINIT(g, 4, a);MPFR_GROUP_TINIT(g, 5, b))
+
+
+/******************************************************
+ *************** Internal Functions *****************
+ ******************************************************/
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+__MPFR_DECLSPEC int mpfr_underflow _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t, int));
+__MPFR_DECLSPEC int mpfr_overflow _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t, int));
+
+__MPFR_DECLSPEC int mpfr_add1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_add1sp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub1sp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_can_round_raw _MPFR_PROTO ((const mp_limb_t *,
+ mp_size_t, int, mpfr_exp_t, mpfr_rnd_t, mpfr_rnd_t, mpfr_prec_t));
+
+__MPFR_DECLSPEC int mpfr_cmp2 _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr,
+ mpfr_prec_t *));
+
+__MPFR_DECLSPEC long __gmpfr_ceil_log2 _MPFR_PROTO ((double));
+__MPFR_DECLSPEC long __gmpfr_floor_log2 _MPFR_PROTO ((double));
+__MPFR_DECLSPEC double __gmpfr_ceil_exp2 _MPFR_PROTO ((double));
+__MPFR_DECLSPEC unsigned long __gmpfr_isqrt _MPFR_PROTO ((unsigned long));
+__MPFR_DECLSPEC unsigned long __gmpfr_cuberoot _MPFR_PROTO ((unsigned long));
+__MPFR_DECLSPEC int __gmpfr_int_ceil_log2 _MPFR_PROTO ((unsigned long));
+
+__MPFR_DECLSPEC mpfr_exp_t mpfr_ceil_mul _MPFR_PROTO ((mpfr_exp_t, int, int));
+
+__MPFR_DECLSPEC int mpfr_exp_2 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_exp_3 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_powerof2_raw _MPFR_PROTO ((mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_pow_general _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t, int, mpfr_save_expo_t *));
+
+__MPFR_DECLSPEC void mpfr_setmax _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t));
+__MPFR_DECLSPEC void mpfr_setmin _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t));
+
+__MPFR_DECLSPEC long mpfr_mpn_exp _MPFR_PROTO ((mp_limb_t *, mpfr_exp_t *, int,
+ mpfr_exp_t, size_t));
+
+#ifdef _MPFR_H_HAVE_FILE
+__MPFR_DECLSPEC void mpfr_fprint_binary _MPFR_PROTO ((FILE *, mpfr_srcptr));
+#endif
+__MPFR_DECLSPEC void mpfr_print_binary _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC void mpfr_print_mant_binary _MPFR_PROTO ((const char*,
+ const mp_limb_t*, mpfr_prec_t));
+__MPFR_DECLSPEC void mpfr_set_str_binary _MPFR_PROTO((mpfr_ptr, const char*));
+
+__MPFR_DECLSPEC int mpfr_round_raw _MPFR_PROTO ((mp_limb_t *,
+ const mp_limb_t *, mpfr_prec_t, int, mpfr_prec_t, mpfr_rnd_t, int *));
+__MPFR_DECLSPEC int mpfr_round_raw_2 _MPFR_PROTO ((const mp_limb_t *,
+ mpfr_prec_t, int, mpfr_prec_t, mpfr_rnd_t));
+/* No longer defined (see round_prec.c).
+ Uncomment if it needs to be defined again.
+__MPFR_DECLSPEC int mpfr_round_raw_3 _MPFR_PROTO ((const mp_limb_t *,
+ mpfr_prec_t, int, mpfr_prec_t, mpfr_rnd_t, int *));
+*/
+__MPFR_DECLSPEC int mpfr_round_raw_4 _MPFR_PROTO ((mp_limb_t *,
+ const mp_limb_t *, mpfr_prec_t, int, mpfr_prec_t, mpfr_rnd_t));
+
+#define mpfr_round_raw2(xp, xn, neg, r, prec) \
+ mpfr_round_raw_2((xp),(xn)*GMP_NUMB_BITS,(neg),(prec),(r))
+
+__MPFR_DECLSPEC int mpfr_check _MPFR_PROTO ((mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_sum_sort _MPFR_PROTO ((mpfr_srcptr *const,
+ unsigned long, mpfr_srcptr *));
+
+__MPFR_DECLSPEC int mpfr_get_cputime _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC void mpfr_nexttozero _MPFR_PROTO ((mpfr_ptr));
+__MPFR_DECLSPEC void mpfr_nexttoinf _MPFR_PROTO ((mpfr_ptr));
+
+__MPFR_DECLSPEC int mpfr_const_pi_internal _MPFR_PROTO ((mpfr_ptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_const_log2_internal _MPFR_PROTO((mpfr_ptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_const_euler_internal _MPFR_PROTO((mpfr_ptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_const_catalan_internal _MPFR_PROTO((mpfr_ptr, mpfr_rnd_t));
+
+#if 0
+__MPFR_DECLSPEC void mpfr_init_cache _MPFR_PROTO ((mpfr_cache_t,
+ int(*)(mpfr_ptr,mpfr_rnd_t)));
+#endif
+__MPFR_DECLSPEC void mpfr_clear_cache _MPFR_PROTO ((mpfr_cache_t));
+__MPFR_DECLSPEC int mpfr_cache _MPFR_PROTO ((mpfr_ptr, mpfr_cache_t,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_mulhigh_n _MPFR_PROTO ((mpfr_limb_ptr,
+ mpfr_limb_srcptr, mpfr_limb_srcptr, mp_size_t));
+__MPFR_DECLSPEC void mpfr_mullow_n _MPFR_PROTO ((mpfr_limb_ptr,
+ mpfr_limb_srcptr, mpfr_limb_srcptr, mp_size_t));
+__MPFR_DECLSPEC void mpfr_sqrhigh_n _MPFR_PROTO ((mpfr_limb_ptr,
+ mpfr_limb_srcptr, mp_size_t));
+__MPFR_DECLSPEC mp_limb_t mpfr_divhigh_n _MPFR_PROTO ((mpfr_limb_ptr,
+ mpfr_limb_ptr, mpfr_limb_ptr, mp_size_t));
+
+__MPFR_DECLSPEC int mpfr_round_p _MPFR_PROTO ((mp_limb_t *, mp_size_t,
+ mpfr_exp_t, mpfr_prec_t));
+
+__MPFR_DECLSPEC void mpfr_dump_mant _MPFR_PROTO ((const mp_limb_t *,
+ mpfr_prec_t, mpfr_prec_t,
+ mpfr_prec_t));
+
+__MPFR_DECLSPEC int mpfr_round_near_x _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_uexp_t, int,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC void mpfr_abort_prec_max _MPFR_PROTO ((void))
+ MPFR_NORETURN_ATTR;
+
+__MPFR_DECLSPEC void mpfr_rand_raw _MPFR_PROTO((mpfr_limb_ptr, gmp_randstate_t,
+ mpfr_prec_t));
+
+__MPFR_DECLSPEC mpz_t* mpfr_bernoulli_internal _MPFR_PROTO((mpz_t*,
+ unsigned long));
+
+__MPFR_DECLSPEC int mpfr_sincos_fast _MPFR_PROTO((mpfr_t, mpfr_t,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC double mpfr_scale2 _MPFR_PROTO((double, int));
+
+__MPFR_DECLSPEC void mpfr_div_ui2 _MPFR_PROTO((mpfr_ptr, mpfr_srcptr,
+ unsigned long int, unsigned long int,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_gamma_one_and_two_third _MPFR_PROTO((mpfr_ptr, mpfr_ptr, mpfr_prec_t));
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr-intmax.h b/Build/source/libs/mpfr/mpfr-src/src/mpfr-intmax.h
new file mode 100644
index 00000000000..7a9b802d26d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr-intmax.h
@@ -0,0 +1,40 @@
+/* MPFR internal header related to intmax_t.
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __MPFR_INTMAX_H__
+#define __MPFR_INTMAX_H__
+
+/* The ISO C99 standard specifies that in C++ implementations the
+ INTMAX_MAX, ... macros should only be defined if explicitly requested. */
+#if defined __cplusplus
+# define __STDC_LIMIT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr-longlong.h b/Build/source/libs/mpfr/mpfr-src/src/mpfr-longlong.h
new file mode 100644
index 00000000000..30aa7470bb6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr-longlong.h
@@ -0,0 +1,1943 @@
+/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
+
+Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
+2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013-2015 Free Software Foundation, Inc.
+
+This file is free software; you can redistribute it and/or modify it under the
+terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 3 of the License, or (at your option) any
+later version.
+
+This file is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this file. If not, see http://www.gnu.org/licenses/. */
+
+/* You have to define the following before including this file:
+
+ UWtype -- An unsigned type, default type for operations (typically a "word")
+ UHWtype -- An unsigned type, at least half the size of UWtype.
+ UDWtype -- An unsigned type, at least twice as large a UWtype
+ W_TYPE_SIZE -- size in bits of UWtype
+
+ SItype, USItype -- Signed and unsigned 32 bit types.
+ DItype, UDItype -- Signed and unsigned 64 bit types.
+
+ On a 32 bit machine UWtype should typically be USItype;
+ on a 64 bit machine, UWtype should typically be UDItype.
+
+ CAUTION! Using this file outside of GMP is not safe. You need to include
+ gmp.h and gmp-impl.h, or certain things might not work as expected.
+*/
+
+#define __BITS4 (W_TYPE_SIZE / 4)
+#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
+#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
+#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
+
+/* This is used to make sure no undesirable sharing between different libraries
+ that use this file takes place. */
+#ifndef __MPN
+#define __MPN(x) __##x
+#endif
+
+#ifndef _PROTO
+#if (__STDC__-0) || defined (__cplusplus)
+#define _PROTO(x) x
+#else
+#define _PROTO(x) ()
+#endif
+#endif
+
+/* Define auxiliary asm macros.
+
+ 1) umul_ppmm(high_prod, low_prod, multiplier, multiplicand) multiplies two
+ UWtype integers MULTIPLIER and MULTIPLICAND, and generates a two UWtype
+ word product in HIGH_PROD and LOW_PROD.
+
+ 2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a
+ UDWtype product. This is just a variant of umul_ppmm.
+
+ 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
+ denominator) divides a UDWtype, composed by the UWtype integers
+ HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient
+ in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less
+ than DENOMINATOR for correct operation. If, in addition, the most
+ significant bit of DENOMINATOR must be 1, then the pre-processor symbol
+ UDIV_NEEDS_NORMALIZATION is defined to 1.
+
+ 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
+ denominator). Like udiv_qrnnd but the numbers are signed. The quotient
+ is rounded toward 0.
+
+ 5) count_leading_zeros(count, x) counts the number of zero-bits from the
+ msb to the first non-zero bit in the UWtype X. This is the number of
+ steps X needs to be shifted left to set the msb. Undefined for X == 0,
+ unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value.
+
+ 6) count_trailing_zeros(count, x) like count_leading_zeros, but counts
+ from the least significant end.
+
+ 7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1,
+ high_addend_2, low_addend_2) adds two UWtype integers, composed by
+ HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2
+ respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow
+ (i.e. carry out) is not stored anywhere, and is lost.
+
+ 8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend,
+ high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers,
+ composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and
+ LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE
+ and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere,
+ and is lost.
+
+ If any of these macros are left undefined for a particular CPU,
+ C macros are used.
+
+
+ Notes:
+
+ For add_ssaaaa the two high and two low addends can both commute, but
+ unfortunately gcc only supports one "%" commutative in each asm block.
+ This has always been so but is only documented in recent versions
+ (eg. pre-release 3.3). Having two or more "%"s can cause an internal
+ compiler error in certain rare circumstances.
+
+ Apparently it was only the last "%" that was ever actually respected, so
+ the code has been updated to leave just that. Clearly there's a free
+ choice whether high or low should get it, if there's a reason to favour
+ one over the other. Also obviously when the constraints on the two
+ operands are identical there's no benefit to the reloader in any "%" at
+ all.
+
+ */
+
+/* The CPUs come in alphabetical order below.
+
+ Please add support for more CPUs here, or improve the current support
+ for the CPUs below! */
+
+
+/* count_leading_zeros_gcc_clz is count_leading_zeros implemented with gcc
+ 3.4 __builtin_clzl or __builtin_clzll, according to our limb size.
+ Similarly count_trailing_zeros_gcc_ctz using __builtin_ctzl or
+ __builtin_ctzll.
+
+ These builtins are only used when we check what code comes out, on some
+ chips they're merely libgcc calls, where we will instead want an inline
+ in that case (either asm or generic C).
+
+ These builtins are better than an asm block of the same insn, since an
+ asm block doesn't give gcc any information about scheduling or resource
+ usage. We keep an asm block for use on prior versions of gcc though.
+
+ For reference, __builtin_ffs existed in gcc prior to __builtin_clz, but
+ it's not used (for count_leading_zeros) because it generally gives extra
+ code to ensure the result is 0 when the input is 0, which we don't need
+ or want. */
+
+#ifdef _LONG_LONG_LIMB
+#define count_leading_zeros_gcc_clz(count,x) \
+ do { \
+ ASSERT ((x) != 0); \
+ (count) = __builtin_clzll (x); \
+ } while (0)
+#else
+#define count_leading_zeros_gcc_clz(count,x) \
+ do { \
+ ASSERT ((x) != 0); \
+ (count) = __builtin_clzl (x); \
+ } while (0)
+#endif
+
+#ifdef _LONG_LONG_LIMB
+#define count_trailing_zeros_gcc_ctz(count,x) \
+ do { \
+ ASSERT ((x) != 0); \
+ (count) = __builtin_ctzll (x); \
+ } while (0)
+#else
+#define count_trailing_zeros_gcc_ctz(count,x) \
+ do { \
+ ASSERT ((x) != 0); \
+ (count) = __builtin_ctzl (x); \
+ } while (0)
+#endif
+
+/* Note: the following FIXME comes from GMP, thus it does make sense to try
+ to resolve it in MPFR. */
+/* FIXME: The macros using external routines like __MPN(count_leading_zeros)
+ don't need to be under !NO_ASM */
+#if ! defined (NO_ASM)
+
+#if defined (__alpha) && W_TYPE_SIZE == 64
+/* Most alpha-based machines, except Cray systems. */
+#if defined (__GNUC__)
+#if __GMP_GNUC_PREREQ (3,3)
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ UDItype __m0 = (m0), __m1 = (m1); \
+ (ph) = __builtin_alpha_umulh (__m0, __m1); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#else
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ UDItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("umulh %r1,%2,%0" \
+ : "=r" (ph) \
+ : "%rJ" (m0), "rI" (m1)); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#endif
+#define UMUL_TIME 18
+#else /* ! __GNUC__ */
+#include <machine/builtins.h>
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ UDItype __m0 = (m0), __m1 = (m1); \
+ (ph) = __UMULH (m0, m1); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#endif
+#ifndef LONGLONG_STANDALONE
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { UWtype __di; \
+ __di = __MPN(invert_limb) (d); \
+ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \
+ } while (0)
+#define UDIV_PREINV_ALWAYS 1
+#define UDIV_NEEDS_NORMALIZATION 1
+#define UDIV_TIME 220
+#endif /* LONGLONG_STANDALONE */
+
+/* clz_tab is required in all configurations, since mpn/alpha/cntlz.asm
+ always goes into libgmp.so, even when not actually used. */
+#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
+
+#if defined (__GNUC__) && HAVE_HOST_CPU_alpha_CIX
+#define count_leading_zeros(COUNT,X) \
+ __asm__("ctlz %1,%0" : "=r"(COUNT) : "r"(X))
+#define count_trailing_zeros(COUNT,X) \
+ __asm__("cttz %1,%0" : "=r"(COUNT) : "r"(X))
+#endif /* clz/ctz using cix */
+
+#if ! defined (count_leading_zeros) \
+ && defined (__GNUC__) && ! defined (LONGLONG_STANDALONE)
+/* ALPHA_CMPBGE_0 gives "cmpbge $31,src,dst", ie. test src bytes == 0.
+ "$31" is written explicitly in the asm, since an "r" constraint won't
+ select reg 31. There seems no need to worry about "r31" syntax for cray,
+ since gcc itself (pre-release 3.4) emits just $31 in various places. */
+#define ALPHA_CMPBGE_0(dst, src) \
+ do { asm ("cmpbge $31, %1, %0" : "=r" (dst) : "r" (src)); } while (0)
+/* Zero bytes are turned into bits with cmpbge, a __clz_tab lookup counts
+ them, locating the highest non-zero byte. A second __clz_tab lookup
+ counts the leading zero bits in that byte, giving the result. */
+#define count_leading_zeros(count, x) \
+ do { \
+ UWtype __clz__b, __clz__c, __clz__x = (x); \
+ ALPHA_CMPBGE_0 (__clz__b, __clz__x); /* zero bytes */ \
+ __clz__b = __clz_tab [(__clz__b >> 1) ^ 0x7F]; /* 8 to 1 byte */ \
+ __clz__b = __clz__b * 8 - 7; /* 57 to 1 shift */ \
+ __clz__x >>= __clz__b; \
+ __clz__c = __clz_tab [__clz__x]; /* 8 to 1 bit */ \
+ __clz__b = 65 - __clz__b; \
+ (count) = __clz__b - __clz__c; \
+ } while (0)
+#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
+#endif /* clz using cmpbge */
+
+#if ! defined (count_leading_zeros) && ! defined (LONGLONG_STANDALONE)
+#if HAVE_ATTRIBUTE_CONST
+long __MPN(count_leading_zeros) _PROTO ((UDItype)) __attribute__ ((const));
+#else
+long __MPN(count_leading_zeros) _PROTO ((UDItype));
+#endif
+#define count_leading_zeros(count, x) \
+ ((count) = __MPN(count_leading_zeros) (x))
+#endif /* clz using mpn */
+#endif /* __alpha */
+
+#if defined (_CRAY) && W_TYPE_SIZE == 64
+#include <intrinsics.h>
+#define UDIV_PREINV_ALWAYS 1
+#define UDIV_NEEDS_NORMALIZATION 1
+#define UDIV_TIME 220
+long __MPN(count_leading_zeros) _PROTO ((UDItype));
+#define count_leading_zeros(count, x) \
+ ((count) = _leadz ((UWtype) (x)))
+#if defined (_CRAYIEEE) /* I.e., Cray T90/ieee, T3D, and T3E */
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ UDItype __m0 = (m0), __m1 = (m1); \
+ (ph) = _int_mult_upper (m0, m1); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#ifndef LONGLONG_STANDALONE
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { UWtype __di; \
+ __di = __MPN(invert_limb) (d); \
+ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \
+ } while (0)
+#endif /* LONGLONG_STANDALONE */
+#endif /* _CRAYIEEE */
+#endif /* _CRAY */
+
+#if defined (__ia64) && W_TYPE_SIZE == 64
+/* This form encourages gcc (pre-release 3.4 at least) to emit predicated
+ "sub r=r,r" and "sub r=r,r,1", giving a 2 cycle latency. The generic
+ code using "al<bl" arithmetically comes out making an actual 0 or 1 in a
+ register, which takes an extra cycle. */
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ do { \
+ UWtype __x; \
+ __x = (al) - (bl); \
+ if ((al) < (bl)) \
+ (sh) = (ah) - (bh) - 1; \
+ else \
+ (sh) = (ah) - (bh); \
+ (sl) = __x; \
+ } while (0)
+#if defined (__GNUC__) && ! defined (__INTEL_COMPILER)
+/* Do both product parts in assembly, since that gives better code with
+ all gcc versions. Some callers will just use the upper part, and in
+ that situation we waste an instruction, but not any cycles. */
+#define umul_ppmm(ph, pl, m0, m1) \
+ __asm__ ("xma.hu %0 = %2, %3, f0\n\txma.l %1 = %2, %3, f0" \
+ : "=&f" (ph), "=f" (pl) \
+ : "f" (m0), "f" (m1))
+#define UMUL_TIME 14
+#define count_leading_zeros(count, x) \
+ do { \
+ UWtype _x = (x), _y, _a, _c; \
+ __asm__ ("mux1 %0 = %1, @rev" : "=r" (_y) : "r" (_x)); \
+ __asm__ ("czx1.l %0 = %1" : "=r" (_a) : "r" (-_y | _y)); \
+ _c = (_a - 1) << 3; \
+ _x >>= _c; \
+ if (_x >= 1 << 4) \
+ _x >>= 4, _c += 4; \
+ if (_x >= 1 << 2) \
+ _x >>= 2, _c += 2; \
+ _c += _x >> 1; \
+ (count) = W_TYPE_SIZE - 1 - _c; \
+ } while (0)
+/* similar to what gcc does for __builtin_ffs, but 0 based rather than 1
+ based, and we don't need a special case for x==0 here */
+#define count_trailing_zeros(count, x) \
+ do { \
+ UWtype __ctz_x = (x); \
+ __asm__ ("popcnt %0 = %1" \
+ : "=r" (count) \
+ : "r" ((__ctz_x-1) & ~__ctz_x)); \
+ } while (0)
+#endif
+#if defined (__INTEL_COMPILER)
+#include <ia64intrin.h>
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ UWtype _m0 = (m0), _m1 = (m1); \
+ ph = _m64_xmahu (_m0, _m1, 0); \
+ pl = _m0 * _m1; \
+ } while (0)
+#endif
+#ifndef LONGLONG_STANDALONE
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { UWtype __di; \
+ __di = __MPN(invert_limb) (d); \
+ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \
+ } while (0)
+#define UDIV_PREINV_ALWAYS 1
+#define UDIV_NEEDS_NORMALIZATION 1
+#endif
+#define UDIV_TIME 220
+#endif
+
+
+#if defined (__GNUC__)
+
+/* We sometimes need to clobber "cc" with gcc2, but that would not be
+ understood by gcc1. Use cpp to avoid major code duplication. */
+#if __GNUC__ < 2
+#define __CLOBBER_CC
+#define __AND_CLOBBER_CC
+#else /* __GNUC__ >= 2 */
+#define __CLOBBER_CC : "cc"
+#define __AND_CLOBBER_CC , "cc"
+#endif /* __GNUC__ < 2 */
+
+#if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add %1,%4,%5\n\taddc %0,%2,%3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "rI" (bh), "%r" (al), "rI" (bl))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub %1,%4,%5\n\tsubc %0,%2,%3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl))
+#define umul_ppmm(xh, xl, m0, m1) \
+ do { \
+ USItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("multiplu %0,%1,%2" \
+ : "=r" (xl) \
+ : "r" (__m0), "r" (__m1)); \
+ __asm__ ("multmu %0,%1,%2" \
+ : "=r" (xh) \
+ : "r" (__m0), "r" (__m1)); \
+ } while (0)
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ __asm__ ("dividu %0,%3,%4" \
+ : "=r" (q), "=q" (r) \
+ : "1" (n1), "r" (n0), "r" (d))
+#define count_leading_zeros(count, x) \
+ __asm__ ("clz %0,%1" \
+ : "=r" (count) \
+ : "r" (x))
+#define COUNT_LEADING_ZEROS_0 32
+#endif /* __a29k__ */
+
+#if defined (__arc__)
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add.f\t%1, %4, %5\n\tadc\t%0, %2, %3" \
+ : "=r" (sh), \
+ "=&r" (sl) \
+ : "r" ((USItype) (ah)), \
+ "rIJ" ((USItype) (bh)), \
+ "%r" ((USItype) (al)), \
+ "rIJ" ((USItype) (bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub.f\t%1, %4, %5\n\tsbc\t%0, %2, %3" \
+ : "=r" (sh), \
+ "=&r" (sl) \
+ : "r" ((USItype) (ah)), \
+ "rIJ" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+ "rIJ" ((USItype) (bl)))
+#endif
+
+#if defined (__arm__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("adds\t%1, %4, %5\n\tadc\t%0, %2, %3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "rI" (bh), "%r" (al), "rI" (bl) __CLOBBER_CC)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ do { \
+ if (__builtin_constant_p (al)) \
+ { \
+ if (__builtin_constant_p (ah)) \
+ __asm__ ("rsbs\t%1, %5, %4\n\trsc\t%0, %3, %2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rI" (ah), "r" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \
+ else \
+ __asm__ ("rsbs\t%1, %5, %4\n\tsbc\t%0, %2, %3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "rI" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \
+ } \
+ else if (__builtin_constant_p (ah)) \
+ { \
+ if (__builtin_constant_p (bl)) \
+ __asm__ ("subs\t%1, %4, %5\n\trsc\t%0, %3, %2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rI" (ah), "r" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
+ else \
+ __asm__ ("rsbs\t%1, %5, %4\n\trsc\t%0, %3, %2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rI" (ah), "r" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \
+ } \
+ else if (__builtin_constant_p (bl)) \
+ { \
+ if (__builtin_constant_p (bh)) \
+ __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
+ else \
+ __asm__ ("subs\t%1, %4, %5\n\trsc\t%0, %3, %2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rI" (ah), "r" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
+ } \
+ else /* only bh might be a constant */ \
+ __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC);\
+ } while (0)
+#if 1 || defined (__arm_m__) /* `M' series has widening multiply support */
+#define umul_ppmm(xh, xl, a, b) \
+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
+#define UMUL_TIME 5
+#define smul_ppmm(xh, xl, a, b) \
+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
+#ifndef LONGLONG_STANDALONE
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { UWtype __di; \
+ __di = __MPN(invert_limb) (d); \
+ udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \
+ } while (0)
+#define UDIV_PREINV_ALWAYS 1
+#define UDIV_NEEDS_NORMALIZATION 1
+#define UDIV_TIME 70
+#endif /* LONGLONG_STANDALONE */
+#else
+#define umul_ppmm(xh, xl, a, b) \
+ __asm__ ("%@ Inlined umul_ppmm\n" \
+" mov %|r0, %2, lsr #16\n" \
+" mov %|r2, %3, lsr #16\n" \
+" bic %|r1, %2, %|r0, lsl #16\n" \
+" bic %|r2, %3, %|r2, lsl #16\n" \
+" mul %1, %|r1, %|r2\n" \
+" mul %|r2, %|r0, %|r2\n" \
+" mul %|r1, %0, %|r1\n" \
+" mul %0, %|r0, %0\n" \
+" adds %|r1, %|r2, %|r1\n" \
+" addcs %0, %0, #65536\n" \
+" adds %1, %1, %|r1, lsl #16\n" \
+" adc %0, %0, %|r1, lsr #16" \
+ : "=&r" (xh), "=r" (xl) \
+ : "r" (a), "r" (b) \
+ : "r0", "r1", "r2")
+#define UMUL_TIME 20
+#ifndef LONGLONG_STANDALONE
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { UWtype __r; \
+ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \
+ (r) = __r; \
+ } while (0)
+extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype));
+#define UDIV_TIME 200
+#endif /* LONGLONG_STANDALONE */
+#endif
+#endif /* __arm__ */
+
+#if defined (__clipper__) && W_TYPE_SIZE == 32
+#define umul_ppmm(w1, w0, u, v) \
+ ({union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __x; \
+ __asm__ ("mulwux %2,%0" \
+ : "=r" (__x.__ll) \
+ : "%0" ((USItype)(u)), "r" ((USItype)(v))); \
+ (w1) = __x.__i.__h; (w0) = __x.__i.__l;})
+#define smul_ppmm(w1, w0, u, v) \
+ ({union {DItype __ll; \
+ struct {SItype __l, __h;} __i; \
+ } __x; \
+ __asm__ ("mulwx %2,%0" \
+ : "=r" (__x.__ll) \
+ : "%0" ((SItype)(u)), "r" ((SItype)(v))); \
+ (w1) = __x.__i.__h; (w0) = __x.__i.__l;})
+#define __umulsidi3(u, v) \
+ ({UDItype __w; \
+ __asm__ ("mulwux %2,%0" \
+ : "=r" (__w) : "%0" ((USItype)(u)), "r" ((USItype)(v))); \
+ __w; })
+#endif /* __clipper__ */
+
+/* Fujitsu vector computers. */
+#if defined (__uxp__) && W_TYPE_SIZE == 32
+#define umul_ppmm(ph, pl, u, v) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __asm__ ("mult.lu %1,%2,%0" : "=r" (__x.__ll) : "%r" (u), "rK" (v));\
+ (ph) = __x.__i.__h; \
+ (pl) = __x.__i.__l; \
+ } while (0)
+#define smul_ppmm(ph, pl, u, v) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __asm__ ("mult.l %1,%2,%0" : "=r" (__x.__ll) : "%r" (u), "rK" (v)); \
+ (ph) = __x.__i.__h; \
+ (pl) = __x.__i.__l; \
+ } while (0)
+#endif
+
+#if defined (__gmicro__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add.w %5,%1\n\taddx %3,%0" \
+ : "=g" (sh), "=&g" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "%1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub.w %5,%1\n\tsubx %3,%0" \
+ : "=g" (sh), "=&g" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define umul_ppmm(ph, pl, m0, m1) \
+ __asm__ ("mulx %3,%0,%1" \
+ : "=g" (ph), "=r" (pl) \
+ : "%0" ((USItype)(m0)), "g" ((USItype)(m1)))
+#define udiv_qrnnd(q, r, nh, nl, d) \
+ __asm__ ("divx %4,%0,%1" \
+ : "=g" (q), "=r" (r) \
+ : "1" ((USItype)(nh)), "0" ((USItype)(nl)), "g" ((USItype)(d)))
+#define count_leading_zeros(count, x) \
+ __asm__ ("bsch/1 %1,%0" \
+ : "=g" (count) : "g" ((USItype)(x)), "0" ((USItype)0))
+#endif
+
+#if defined (__hppa) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add%I5 %5,%r4,%1\n\taddc %r2,%r3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rM" (ah), "rM" (bh), "%rM" (al), "rI" (bl))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub%I4 %4,%r5,%1\n\tsubb %r2,%r3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rM" (ah), "rM" (bh), "rI" (al), "rM" (bl))
+#if defined (_PA_RISC1_1)
+#define umul_ppmm(wh, wl, u, v) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __asm__ ("xmpyu %1,%2,%0" : "=*f" (__x.__ll) : "*f" (u), "*f" (v)); \
+ (wh) = __x.__i.__h; \
+ (wl) = __x.__i.__l; \
+ } while (0)
+#define UMUL_TIME 8
+#define UDIV_TIME 60
+#else
+#define UMUL_TIME 40
+#define UDIV_TIME 80
+#endif
+#define count_leading_zeros(count, x) \
+ do { \
+ USItype __tmp; \
+ __asm__ ( \
+ "ldi 1,%0\n" \
+" extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n" \
+" extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n" \
+" ldo 16(%0),%0 ; Yes. Perform add.\n" \
+" extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n" \
+" extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n" \
+" ldo 8(%0),%0 ; Yes. Perform add.\n" \
+" extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n" \
+" extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n" \
+" ldo 4(%0),%0 ; Yes. Perform add.\n" \
+" extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n" \
+" extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n" \
+" ldo 2(%0),%0 ; Yes. Perform add.\n" \
+" extru %1,30,1,%1 ; Extract bit 1.\n" \
+" sub %0,%1,%0 ; Subtract it.\n" \
+ : "=r" (count), "=r" (__tmp) : "1" (x)); \
+ } while (0)
+#endif /* hppa */
+
+/* These macros are for ABI=2.0w. In ABI=2.0n they can't be used, since GCC
+ (3.2) puts longlong into two adjacent 32-bit registers. Presumably this
+ is just a case of no direct support for 2.0n but treating it like 1.0. */
+#if defined (__hppa) && W_TYPE_SIZE == 64 && ! defined (_LONG_LONG_LIMB)
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add%I5 %5,%r4,%1\n\tadd,dc %r2,%r3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rM" (ah), "rM" (bh), "%rM" (al), "rI" (bl))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub%I4 %4,%r5,%1\n\tsub,db %r2,%r3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rM" (ah), "rM" (bh), "rI" (al), "rM" (bl))
+#endif /* hppa */
+
+#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
+#define smul_ppmm(xh, xl, m0, m1) \
+ do { \
+ union {DItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __asm__ ("lr %N0,%1\n\tmr %0,%2" \
+ : "=&r" (__x.__ll) \
+ : "r" (m0), "r" (m1)); \
+ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \
+ } while (0)
+#define sdiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ union {DItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __x.__i.__h = n1; __x.__i.__l = n0; \
+ __asm__ ("dr %0,%2" \
+ : "=r" (__x.__ll) \
+ : "0" (__x.__ll), "r" (d)); \
+ (q) = __x.__i.__l; (r) = __x.__i.__h; \
+ } while (0)
+#endif
+
+#if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("addl %5,%k1\n\tadcl %3,%k0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "%1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("subl %5,%k1\n\tsbbl %3,%k0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("mull %3" \
+ : "=a" (w0), "=d" (w1) \
+ : "%0" ((USItype)(u)), "rm" ((USItype)(v)))
+#define udiv_qrnnd(q, r, n1, n0, dx) /* d renamed to dx avoiding "=d" */\
+ __asm__ ("divl %4" /* stringification in K&R C */ \
+ : "=a" (q), "=d" (r) \
+ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "rm" ((USItype)(dx)))
+
+#if HAVE_HOST_CPU_i586 || HAVE_HOST_CPU_pentium || HAVE_HOST_CPU_pentiummmx
+/* Pentium bsrl takes between 10 and 72 cycles depending where the most
+ significant 1 bit is, hence the use of the following alternatives. bsfl
+ is slow too, between 18 and 42 depending where the least significant 1
+ bit is, so let the generic count_trailing_zeros below make use of the
+ count_leading_zeros here too. */
+
+#if HAVE_HOST_CPU_pentiummmx && ! defined (LONGLONG_STANDALONE)
+/* The following should be a fixed 14 or 15 cycles, but possibly plus an L1
+ cache miss reading from __clz_tab. For P55 it's favoured over the float
+ below so as to avoid mixing MMX and x87, since the penalty for switching
+ between the two is about 100 cycles.
+
+ The asm block sets __shift to -3 if the high 24 bits are clear, -2 for
+ 16, -1 for 8, or 0 otherwise. This could be written equivalently as
+ follows, but as of gcc 2.95.2 it results in conditional jumps.
+
+ __shift = -(__n < 0x1000000);
+ __shift -= (__n < 0x10000);
+ __shift -= (__n < 0x100);
+
+ The middle two sbbl and cmpl's pair, and with luck something gcc
+ generates might pair with the first cmpl and the last sbbl. The "32+1"
+ constant could be folded into __clz_tab[], but it doesn't seem worth
+ making a different table just for that. */
+
+#define count_leading_zeros(c,n) \
+ do { \
+ USItype __n = (n); \
+ USItype __shift; \
+ __asm__ ("cmpl $0x1000000, %1\n" \
+ "sbbl %0, %0\n" \
+ "cmpl $0x10000, %1\n" \
+ "sbbl $0, %0\n" \
+ "cmpl $0x100, %1\n" \
+ "sbbl $0, %0\n" \
+ : "=&r" (__shift) : "r" (__n)); \
+ __shift = __shift*8 + 24 + 1; \
+ (c) = 32 + 1 - __shift - __clz_tab[__n >> __shift]; \
+ } while (0)
+#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
+#define COUNT_LEADING_ZEROS_0 31 /* n==0 indistinguishable from n==1 */
+
+#else /* ! pentiummmx || LONGLONG_STANDALONE */
+/* The following should be a fixed 14 cycles or so. Some scheduling
+ opportunities should be available between the float load/store too. This
+ sort of code is used in gcc 3 for __builtin_ffs (with "n&-n") and is
+ apparently suggested by the Intel optimizing manual (don't know exactly
+ where). gcc 2.95 or up will be best for this, so the "double" is
+ correctly aligned on the stack. */
+#define count_leading_zeros(c,n) \
+ do { \
+ union { \
+ double d; \
+ unsigned a[2]; \
+ } __u; \
+ ASSERT ((n) != 0); \
+ __u.d = (UWtype) (n); \
+ (c) = 0x3FF + 31 - (__u.a[1] >> 20); \
+ } while (0)
+#define COUNT_LEADING_ZEROS_0 (0x3FF + 31)
+#endif /* pentiummx */
+
+#else /* ! pentium */
+
+#if __GMP_GNUC_PREREQ (3,4) /* using bsrl */
+#define count_leading_zeros(count,x) count_leading_zeros_gcc_clz(count,x)
+#endif /* gcc clz */
+
+/* On P6, gcc prior to 3.0 generates a partial register stall for
+ __cbtmp^31, due to using "xorb $31" instead of "xorl $31", the former
+ being 1 code byte smaller. "31-__cbtmp" is a workaround, probably at the
+ cost of one extra instruction. Do this for "i386" too, since that means
+ generic x86. */
+#if ! defined (count_leading_zeros) && __GNUC__ < 3 \
+ && (HAVE_HOST_CPU_i386 \
+ || HAVE_HOST_CPU_i686 \
+ || HAVE_HOST_CPU_pentiumpro \
+ || HAVE_HOST_CPU_pentium2 \
+ || HAVE_HOST_CPU_pentium3)
+#define count_leading_zeros(count, x) \
+ do { \
+ USItype __cbtmp; \
+ ASSERT ((x) != 0); \
+ __asm__ ("bsrl %1,%0" : "=r" (__cbtmp) : "rm" ((USItype)(x))); \
+ (count) = 31 - __cbtmp; \
+ } while (0)
+#endif /* gcc<3 asm bsrl */
+
+#ifndef count_leading_zeros
+#define count_leading_zeros(count, x) \
+ do { \
+ USItype __cbtmp; \
+ ASSERT ((x) != 0); \
+ __asm__ ("bsrl %1,%0" : "=r" (__cbtmp) : "rm" ((USItype)(x))); \
+ (count) = __cbtmp ^ 31; \
+ } while (0)
+#endif /* asm bsrl */
+
+#if __GMP_GNUC_PREREQ (3,4) /* using bsfl */
+#define count_trailing_zeros(count,x) count_trailing_zeros_gcc_ctz(count,x)
+#endif /* gcc ctz */
+
+#ifndef count_trailing_zeros
+#define count_trailing_zeros(count, x) \
+ do { \
+ ASSERT ((x) != 0); \
+ __asm__ ("bsfl %1,%k0" : "=r" (count) : "rm" ((USItype)(x))); \
+ } while (0)
+#endif /* asm bsfl */
+
+#endif /* ! pentium */
+
+#ifndef UMUL_TIME
+#define UMUL_TIME 10
+#endif
+#ifndef UDIV_TIME
+#define UDIV_TIME 40
+#endif
+#endif /* 80x86 */
+
+#if defined (__amd64__) && W_TYPE_SIZE == 64
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("addq %5,%q1\n\tadcq %3,%q0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
+ "%1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("subq %5,%q1\n\tsbbq %3,%q0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
+ "1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("mulq %3" \
+ : "=a" (w0), "=d" (w1) \
+ : "%0" ((UDItype)(u)), "rm" ((UDItype)(v)))
+#define udiv_qrnnd(q, r, n1, n0, dx) /* d renamed to dx avoiding "=d" */\
+ __asm__ ("divq %4" /* stringification in K&R C */ \
+ : "=a" (q), "=d" (r) \
+ : "0" ((UDItype)(n0)), "1" ((UDItype)(n1)), "rm" ((UDItype)(dx)))
+/* bsrq destination must be a 64-bit register, hence UDItype for __cbtmp. */
+#define count_leading_zeros(count, x) \
+ do { \
+ UDItype __cbtmp; \
+ ASSERT ((x) != 0); \
+ __asm__ ("bsrq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \
+ (count) = __cbtmp ^ 63; \
+ } while (0)
+/* bsfq destination must be a 64-bit register, "%q0" forces this in case
+ count is only an int. */
+#define count_trailing_zeros(count, x) \
+ do { \
+ ASSERT ((x) != 0); \
+ __asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \
+ } while (0)
+#endif /* x86_64 */
+
+#if defined (__i860__) && W_TYPE_SIZE == 32
+#define rshift_rhlc(r,h,l,c) \
+ __asm__ ("shr %3,r0,r0\;shrd %1,%2,%0" \
+ "=r" (r) : "r" (h), "r" (l), "rn" (c))
+#endif /* i860 */
+
+#if defined (__i960__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("cmpo 1,0\;addc %5,%4,%1\;addc %3,%2,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "dI" (ah), "dI" (bh), "%dI" (al), "dI" (bl))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("cmpo 0,0\;subc %5,%4,%1\;subc %3,%2,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "dI" (ah), "dI" (bh), "dI" (al), "dI" (bl))
+#define umul_ppmm(w1, w0, u, v) \
+ ({union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __x; \
+ __asm__ ("emul %2,%1,%0" \
+ : "=d" (__x.__ll) : "%dI" (u), "dI" (v)); \
+ (w1) = __x.__i.__h; (w0) = __x.__i.__l;})
+#define __umulsidi3(u, v) \
+ ({UDItype __w; \
+ __asm__ ("emul %2,%1,%0" : "=d" (__w) : "%dI" (u), "dI" (v)); \
+ __w; })
+#define udiv_qrnnd(q, r, nh, nl, d) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __nn; \
+ __nn.__i.__h = (nh); __nn.__i.__l = (nl); \
+ __asm__ ("ediv %d,%n,%0" \
+ : "=d" (__rq.__ll) : "dI" (__nn.__ll), "dI" (d)); \
+ (r) = __rq.__i.__l; (q) = __rq.__i.__h; \
+ } while (0)
+#define count_leading_zeros(count, x) \
+ do { \
+ USItype __cbtmp; \
+ __asm__ ("scanbit %1,%0" : "=r" (__cbtmp) : "r" (x)); \
+ (count) = __cbtmp ^ 31; \
+ } while (0)
+#define COUNT_LEADING_ZEROS_0 (-32) /* sic */
+#if defined (__i960mx) /* what is the proper symbol to test??? */
+#define rshift_rhlc(r,h,l,c) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __nn; \
+ __nn.__i.__h = (h); __nn.__i.__l = (l); \
+ __asm__ ("shre %2,%1,%0" : "=d" (r) : "dI" (__nn.__ll), "dI" (c)); \
+ }
+#endif /* i960mx */
+#endif /* i960 */
+
+#if (defined (__mc68000__) || defined (__mc68020__) || defined(mc68020) \
+ || defined (__m68k__) || defined (__mc5200__) || defined (__mc5206e__) \
+ || defined (__mc5307__)) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \
+ : "=d" (sh), "=&d" (sl) \
+ : "0" ((USItype)(ah)), "d" ((USItype)(bh)), \
+ "%1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub%.l %5,%1\n\tsubx%.l %3,%0" \
+ : "=d" (sh), "=&d" (sl) \
+ : "0" ((USItype)(ah)), "d" ((USItype)(bh)), \
+ "1" ((USItype)(al)), "g" ((USItype)(bl)))
+/* The '020, '030, '040 and CPU32 have 32x32->64 and 64/32->32q-32r. */
+#if defined (__mc68020__) || defined(mc68020) \
+ || defined (__mc68030__) || defined (mc68030) \
+ || defined (__mc68040__) || defined (mc68040) \
+ || defined (__mcpu32__) || defined (mcpu32) \
+ || defined (__NeXT__)
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("mulu%.l %3,%1:%0" \
+ : "=d" (w0), "=d" (w1) \
+ : "%0" ((USItype)(u)), "dmi" ((USItype)(v)))
+#define UMUL_TIME 45
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ __asm__ ("divu%.l %4,%1:%0" \
+ : "=d" (q), "=d" (r) \
+ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "dmi" ((USItype)(d)))
+#define UDIV_TIME 90
+#define sdiv_qrnnd(q, r, n1, n0, d) \
+ __asm__ ("divs%.l %4,%1:%0" \
+ : "=d" (q), "=d" (r) \
+ : "0" ((USItype)(n0)), "1" ((USItype)(n1)), "dmi" ((USItype)(d)))
+#else /* for other 68k family members use 16x16->32 multiplication */
+#define umul_ppmm(xh, xl, a, b) \
+ do { USItype __umul_tmp1, __umul_tmp2; \
+ __asm__ ("| Inlined umul_ppmm\n" \
+" move%.l %5,%3\n" \
+" move%.l %2,%0\n" \
+" move%.w %3,%1\n" \
+" swap %3\n" \
+" swap %0\n" \
+" mulu%.w %2,%1\n" \
+" mulu%.w %3,%0\n" \
+" mulu%.w %2,%3\n" \
+" swap %2\n" \
+" mulu%.w %5,%2\n" \
+" add%.l %3,%2\n" \
+" jcc 1f\n" \
+" add%.l %#0x10000,%0\n" \
+"1: move%.l %2,%3\n" \
+" clr%.w %2\n" \
+" swap %2\n" \
+" swap %3\n" \
+" clr%.w %3\n" \
+" add%.l %3,%1\n" \
+" addx%.l %2,%0\n" \
+" | End inlined umul_ppmm" \
+ : "=&d" (xh), "=&d" (xl), \
+ "=d" (__umul_tmp1), "=&d" (__umul_tmp2) \
+ : "%2" ((USItype)(a)), "d" ((USItype)(b))); \
+ } while (0)
+#define UMUL_TIME 100
+#define UDIV_TIME 400
+#endif /* not mc68020 */
+/* The '020, '030, '040 and '060 have bitfield insns.
+ GCC 3.4 defines __mc68020__ when in CPU32 mode, check for __mcpu32__ to
+ exclude bfffo on that chip (bitfield insns not available). */
+#if (defined (__mc68020__) || defined (mc68020) \
+ || defined (__mc68030__) || defined (mc68030) \
+ || defined (__mc68040__) || defined (mc68040) \
+ || defined (__mc68060__) || defined (mc68060) \
+ || defined (__NeXT__)) \
+ && ! defined (__mcpu32__)
+#define count_leading_zeros(count, x) \
+ __asm__ ("bfffo %1{%b2:%b2},%0" \
+ : "=d" (count) \
+ : "od" ((USItype) (x)), "n" (0))
+#define COUNT_LEADING_ZEROS_0 32
+#endif
+#endif /* mc68000 */
+
+#if defined (__m88000__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("addu.co %1,%r4,%r5\n\taddu.ci %0,%r2,%r3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rJ" (ah), "rJ" (bh), "%rJ" (al), "rJ" (bl))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("subu.co %1,%r4,%r5\n\tsubu.ci %0,%r2,%r3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rJ" (ah), "rJ" (bh), "rJ" (al), "rJ" (bl))
+#define count_leading_zeros(count, x) \
+ do { \
+ USItype __cbtmp; \
+ __asm__ ("ff1 %0,%1" : "=r" (__cbtmp) : "r" (x)); \
+ (count) = __cbtmp ^ 31; \
+ } while (0)
+#define COUNT_LEADING_ZEROS_0 63 /* sic */
+#if defined (__m88110__)
+#define umul_ppmm(wh, wl, u, v) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __asm__ ("mulu.d %0,%1,%2" : "=r" (__x.__ll) : "r" (u), "r" (v)); \
+ (wh) = __x.__i.__h; \
+ (wl) = __x.__i.__l; \
+ } while (0)
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ ({union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x, __q; \
+ __x.__i.__h = (n1); __x.__i.__l = (n0); \
+ __asm__ ("divu.d %0,%1,%2" \
+ : "=r" (__q.__ll) : "r" (__x.__ll), "r" (d)); \
+ (r) = (n0) - __q.__l * (d); (q) = __q.__l; })
+#define UMUL_TIME 5
+#define UDIV_TIME 25
+#else
+#define UMUL_TIME 17
+#define UDIV_TIME 150
+#endif /* __m88110__ */
+#endif /* __m88000__ */
+
+#if defined (__mips) && W_TYPE_SIZE == 32
+#if __GMP_GNUC_PREREQ (4,4)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ UDItype __ll = (UDItype)(u) * (v); \
+ w1 = __ll >> 32; \
+ w0 = __ll; \
+ } while (0)
+#endif
+#if !defined (umul_ppmm) && __GMP_GNUC_PREREQ (2,7)
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("multu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
+#endif
+#if !defined (umul_ppmm)
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("multu %2,%3\n\tmflo %0\n\tmfhi %1" \
+ : "=d" (w0), "=d" (w1) : "d" (u), "d" (v))
+#endif
+#define UMUL_TIME 10
+#define UDIV_TIME 100
+#endif /* __mips */
+
+#if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
+#if __GMP_GNUC_PREREQ (4,4)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \
+ __ll_UTItype __ll = (__ll_UTItype)(u) * (v); \
+ w1 = __ll >> 64; \
+ w0 = __ll; \
+ } while (0)
+#endif
+#if !defined (umul_ppmm) && __GMP_GNUC_PREREQ (2,7)
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("dmultu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
+#endif
+#if !defined (umul_ppmm)
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("dmultu %2,%3\n\tmflo %0\n\tmfhi %1" \
+ : "=d" (w0), "=d" (w1) : "d" (u), "d" (v))
+#endif
+#define UMUL_TIME 20
+#define UDIV_TIME 140
+#endif /* __mips */
+
+#if defined (__mmix__) && W_TYPE_SIZE == 64
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("MULU %0,%2,%3" : "=r" (w0), "=z" (w1) : "r" (u), "r" (v))
+#endif
+
+#if defined (__ns32000__) && W_TYPE_SIZE == 32
+#define umul_ppmm(w1, w0, u, v) \
+ ({union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __x; \
+ __asm__ ("meid %2,%0" \
+ : "=g" (__x.__ll) \
+ : "%0" ((USItype)(u)), "g" ((USItype)(v))); \
+ (w1) = __x.__i.__h; (w0) = __x.__i.__l;})
+#define __umulsidi3(u, v) \
+ ({UDItype __w; \
+ __asm__ ("meid %2,%0" \
+ : "=g" (__w) \
+ : "%0" ((USItype)(u)), "g" ((USItype)(v))); \
+ __w; })
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ ({union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __x; \
+ __x.__i.__h = (n1); __x.__i.__l = (n0); \
+ __asm__ ("deid %2,%0" \
+ : "=g" (__x.__ll) \
+ : "0" (__x.__ll), "g" ((USItype)(d))); \
+ (r) = __x.__i.__l; (q) = __x.__i.__h; })
+#define count_trailing_zeros(count,x) \
+ do { \
+ __asm__ ("ffsd %2,%0" \
+ : "=r" (count) \
+ : "0" ((USItype) 0), "r" ((USItype) (x))); \
+ } while (0)
+#endif /* __ns32000__ */
+
+/* In the past we had a block of various #defines tested
+ _ARCH_PPC - AIX
+ _ARCH_PWR - AIX
+ __powerpc__ - gcc
+ __POWERPC__ - BEOS
+ __ppc__ - Darwin
+ PPC - old gcc, GNU/Linux, SysV
+ The plain PPC test was not good for vxWorks, since PPC is defined on all
+ CPUs there (eg. m68k too), as a constant one is expected to compare
+ CPU_FAMILY against.
+
+ At any rate, this was pretty unattractive and a bit fragile. The use of
+ HAVE_HOST_CPU_FAMILY is designed to cut through it all and be sure of
+ getting the desired effect.
+
+ ENHANCE-ME: We should test _IBMR2 here when we add assembly support for
+ the system vendor compilers. (Is that vendor compilers with inline asm,
+ or what?) */
+
+#if (HAVE_HOST_CPU_FAMILY_power || HAVE_HOST_CPU_FAMILY_powerpc) \
+ && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ do { \
+ if (__builtin_constant_p (bh) && (bh) == 0) \
+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
+ else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
+ else \
+ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
+ } while (0)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ do { \
+ if (__builtin_constant_p (ah) && (ah) == 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
+ else if (__builtin_constant_p (ah) && (ah) == ~(USItype) 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
+ else if (__builtin_constant_p (bh) && (bh) == 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
+ else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
+ else \
+ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
+ } while (0)
+#define count_leading_zeros(count, x) \
+ __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x))
+#define COUNT_LEADING_ZEROS_0 32
+#if HAVE_HOST_CPU_FAMILY_powerpc
+#if __GMP_GNUC_PREREQ (4,4)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ UDItype __ll = (UDItype)(u) * (v); \
+ w1 = __ll >> 32; \
+ w0 = __ll; \
+ } while (0)
+#endif
+#if !defined (umul_ppmm)
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ USItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("mulhwu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#endif
+#define UMUL_TIME 15
+#define smul_ppmm(ph, pl, m0, m1) \
+ do { \
+ SItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("mulhw %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#define SMUL_TIME 14
+#define UDIV_TIME 120
+#else
+#define UMUL_TIME 8
+#define smul_ppmm(xh, xl, m0, m1) \
+ __asm__ ("mul %0,%2,%3" : "=r" (xh), "=q" (xl) : "r" (m0), "r" (m1))
+#define SMUL_TIME 4
+#define sdiv_qrnnd(q, r, nh, nl, d) \
+ __asm__ ("div %0,%2,%4" : "=r" (q), "=q" (r) : "r" (nh), "1" (nl), "r" (d))
+#define UDIV_TIME 100
+#endif
+#endif /* 32-bit POWER architecture variants. */
+
+/* We should test _IBMR2 here when we add assembly support for the system
+ vendor compilers. */
+#if HAVE_HOST_CPU_FAMILY_powerpc && W_TYPE_SIZE == 64
+#if !defined (_LONG_LONG_LIMB)
+/* _LONG_LONG_LIMB is ABI=mode32 where adde operates on 32-bit values. So
+ use adde etc only when not _LONG_LONG_LIMB. */
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ do { \
+ if (__builtin_constant_p (bh) && (bh) == 0) \
+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
+ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
+ else \
+ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
+ } while (0)
+/* We use "*rI" for the constant operand here, since with just "I", gcc barfs.
+ This might seem strange, but gcc folds away the dead code late. */
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ do { \
+ if (__builtin_constant_p (bl) && bl > -0x8000 && bl <= 0x8000) { \
+ if (__builtin_constant_p (ah) && (ah) == 0) \
+ __asm__ ("{ai|addic} %1,%3,%4\n\t{sfze|subfze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "*rI" (-bl)); \
+ else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \
+ __asm__ ("{ai|addic} %1,%3,%4\n\t{sfme|subfme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "*rI" (-bl)); \
+ else if (__builtin_constant_p (bh) && (bh) == 0) \
+ __asm__ ("{ai|addic} %1,%3,%4\n\t{ame|addme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "*rI" (-bl)); \
+ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
+ __asm__ ("{ai|addic} %1,%3,%4\n\t{aze|addze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "*rI" (-bl)); \
+ else \
+ __asm__ ("{ai|addic} %1,%4,%5\n\t{sfe|subfe} %0,%3,%2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "r" (bh), "rI" (al), "*rI" (-bl)); \
+ } else { \
+ if (__builtin_constant_p (ah) && (ah) == 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl)); \
+ else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl)); \
+ else if (__builtin_constant_p (bh) && (bh) == 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl)); \
+ else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
+ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
+ : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl)); \
+ else \
+ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
+ : "=r" (sh), "=&r" (sl) \
+ : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
+ } \
+ } while (0)
+#endif /* ! _LONG_LONG_LIMB */
+#define count_leading_zeros(count, x) \
+ __asm__ ("cntlzd %0,%1" : "=r" (count) : "r" (x))
+#define COUNT_LEADING_ZEROS_0 64
+#if __GMP_GNUC_PREREQ (4,4)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \
+ __ll_UTItype __ll = (__ll_UTItype)(u) * (v); \
+ w1 = __ll >> 64; \
+ w0 = __ll; \
+ } while (0)
+#endif
+#if !defined (umul_ppmm)
+#define umul_ppmm(ph, pl, m0, m1) \
+ do { \
+ UDItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("mulhdu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#endif
+#define UMUL_TIME 15
+#define smul_ppmm(ph, pl, m0, m1) \
+ do { \
+ DItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("mulhd %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
+ (pl) = __m0 * __m1; \
+ } while (0)
+#define SMUL_TIME 14 /* ??? */
+#define UDIV_TIME 120 /* ??? */
+#endif /* 64-bit PowerPC. */
+
+#if defined (__pyr__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("addw %5,%1\n\taddwc %3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "%1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("subw %5,%1\n\tsubwb %3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "1" ((USItype)(al)), "g" ((USItype)(bl)))
+/* This insn works on Pyramids with AP, XP, or MI CPUs, but not with SP. */
+#define umul_ppmm(w1, w0, u, v) \
+ ({union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __x; \
+ __asm__ ("movw %1,%R0\n\tuemul %2,%0" \
+ : "=&r" (__x.__ll) \
+ : "g" ((USItype) (u)), "g" ((USItype)(v))); \
+ (w1) = __x.__i.__h; (w0) = __x.__i.__l;})
+#endif /* __pyr__ */
+
+#if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("a %1,%5\n\tae %0,%3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((USItype)(ah)), "r" ((USItype)(bh)), \
+ "%1" ((USItype)(al)), "r" ((USItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("s %1,%5\n\tse %0,%3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((USItype)(ah)), "r" ((USItype)(bh)), \
+ "1" ((USItype)(al)), "r" ((USItype)(bl)))
+#define smul_ppmm(ph, pl, m0, m1) \
+ __asm__ ( \
+ "s r2,r2\n" \
+" mts r10,%2\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" m r2,%3\n" \
+" cas %0,r2,r0\n" \
+" mfs r10,%1" \
+ : "=r" (ph), "=r" (pl) \
+ : "%r" ((USItype)(m0)), "r" ((USItype)(m1)) \
+ : "r2")
+#define UMUL_TIME 20
+#define UDIV_TIME 200
+#define count_leading_zeros(count, x) \
+ do { \
+ if ((x) >= 0x10000) \
+ __asm__ ("clz %0,%1" \
+ : "=r" (count) : "r" ((USItype)(x) >> 16)); \
+ else \
+ { \
+ __asm__ ("clz %0,%1" \
+ : "=r" (count) : "r" ((USItype)(x))); \
+ (count) += 16; \
+ } \
+ } while (0)
+#endif /* RT/ROMP */
+
+#if defined (__sh2__) && W_TYPE_SIZE == 32
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("dmulu.l %2,%3\n\tsts macl,%1\n\tsts mach,%0" \
+ : "=r" (w1), "=r" (w0) : "r" (u), "r" (v) : "macl", "mach")
+#define UMUL_TIME 5
+#endif
+
+#if defined (__sparc__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("addcc %r4,%5,%1\n\taddx %r2,%3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rJ" (ah), "rI" (bh),"%rJ" (al), "rI" (bl) \
+ __CLOBBER_CC)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("subcc %r4,%5,%1\n\tsubx %r2,%3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rJ" (ah), "rI" (bh), "rJ" (al), "rI" (bl) \
+ __CLOBBER_CC)
+/* Note: the following FIXME comes from GMP, thus it does make sense to try
+ to resolve it in MPFR. */
+/* FIXME: When gcc -mcpu=v9 is used on solaris, gcc/config/sol2-sld-64.h
+ doesn't define anything to indicate that to us, it only sets __sparcv8. */
+#if defined (__sparc_v9__) || defined (__sparcv9)
+/* Perhaps we should use floating-point operations here? */
+#if 0
+/* Triggers a bug making mpz/tests/t-gcd.c fail.
+ Perhaps we simply need explicitly zero-extend the inputs? */
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("mulx %2,%3,%%g1; srl %%g1,0,%1; srlx %%g1,32,%0" : \
+ "=r" (w1), "=r" (w0) : "r" (u), "r" (v) : "g1")
+#else
+/* Use v8 umul until above bug is fixed. */
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v))
+#endif
+/* Use a plain v8 divide for v9. */
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ USItype __q; \
+ __asm__ ("mov %1,%%y;nop;nop;nop;udiv %2,%3,%0" \
+ : "=r" (__q) : "r" (n1), "r" (n0), "r" (d)); \
+ (r) = (n0) - __q * (d); \
+ (q) = __q; \
+ } while (0)
+#else
+#if defined (__sparc_v8__) /* gcc normal */ \
+ || defined (__sparcv8) /* gcc solaris */ \
+ || HAVE_HOST_CPU_supersparc
+/* Don't match immediate range because, 1) it is not often useful,
+ 2) the 'I' flag thinks of the range as a 13 bit signed interval,
+ while we want to match a 13 bit interval, sign extended to 32 bits,
+ but INTERPRETED AS UNSIGNED. */
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v))
+#define UMUL_TIME 5
+
+#if HAVE_HOST_CPU_supersparc
+#define UDIV_TIME 60 /* SuperSPARC timing */
+#else
+/* Don't use this on SuperSPARC because its udiv only handles 53 bit
+ dividends and will trap to the kernel for the rest. */
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ USItype __q; \
+ __asm__ ("mov %1,%%y;nop;nop;nop;udiv %2,%3,%0" \
+ : "=r" (__q) : "r" (n1), "r" (n0), "r" (d)); \
+ (r) = (n0) - __q * (d); \
+ (q) = __q; \
+ } while (0)
+#define UDIV_TIME 25
+#endif /* HAVE_HOST_CPU_supersparc */
+
+#else /* ! __sparc_v8__ */
+#if defined (__sparclite__)
+/* This has hardware multiply but not divide. It also has two additional
+ instructions scan (ffs from high bit) and divscc. */
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("umul %2,%3,%1;rd %%y,%0" : "=r" (w1), "=r" (w0) : "r" (u), "r" (v))
+#define UMUL_TIME 5
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ __asm__ ("! Inlined udiv_qrnnd\n" \
+" wr %%g0,%2,%%y ! Not a delayed write for sparclite\n" \
+" tst %%g0\n" \
+" divscc %3,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%%g1\n" \
+" divscc %%g1,%4,%0\n" \
+" rd %%y,%1\n" \
+" bl,a 1f\n" \
+" add %1,%4,%1\n" \
+"1: ! End of inline udiv_qrnnd" \
+ : "=r" (q), "=r" (r) : "r" (n1), "r" (n0), "rI" (d) \
+ : "%g1" __AND_CLOBBER_CC)
+#define UDIV_TIME 37
+#define count_leading_zeros(count, x) \
+ __asm__ ("scan %1,1,%0" : "=r" (count) : "r" (x))
+/* Early sparclites return 63 for an argument of 0, but they warn that future
+ implementations might change this. Therefore, leave COUNT_LEADING_ZEROS_0
+ undefined. */
+#endif /* __sparclite__ */
+#endif /* __sparc_v8__ */
+#endif /* __sparc_v9__ */
+/* Default to sparc v7 versions of umul_ppmm and udiv_qrnnd. */
+#ifndef umul_ppmm
+#define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("! Inlined umul_ppmm\n" \
+" wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n" \
+" sra %3,31,%%g2 ! Don't move this insn\n" \
+" and %2,%%g2,%%g2 ! Don't move this insn\n" \
+" andcc %%g0,0,%%g1 ! Don't move this insn\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,%3,%%g1\n" \
+" mulscc %%g1,0,%%g1\n" \
+" add %%g1,%%g2,%0\n" \
+" rd %%y,%1" \
+ : "=r" (w1), "=r" (w0) : "%rI" (u), "r" (v) \
+ : "%g1", "%g2" __AND_CLOBBER_CC)
+#define UMUL_TIME 39 /* 39 instructions */
+#endif
+#ifndef udiv_qrnnd
+#ifndef LONGLONG_STANDALONE
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { UWtype __r; \
+ (q) = __MPN(udiv_qrnnd) (&__r, (n1), (n0), (d)); \
+ (r) = __r; \
+ } while (0)
+extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype));
+#ifndef UDIV_TIME
+#define UDIV_TIME 140
+#endif
+#endif /* LONGLONG_STANDALONE */
+#endif /* udiv_qrnnd */
+#endif /* __sparc__ */
+
+#if defined (__sparc__) && W_TYPE_SIZE == 64
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ( \
+ "addcc %r4,%5,%1\n" \
+ " addccc %r6,%7,%%g0\n" \
+ " addc %r2,%3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rJ" (ah), "rI" (bh), "%rJ" (al), "rI" (bl), \
+ "%rJ" ((al) >> 32), "rI" ((bl) >> 32) \
+ __CLOBBER_CC)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ( \
+ "subcc %r4,%5,%1\n" \
+ " subccc %r6,%7,%%g0\n" \
+ " subc %r2,%3,%0" \
+ : "=r" (sh), "=&r" (sl) \
+ : "rJ" (ah), "rI" (bh), "rJ" (al), "rI" (bl), \
+ "rJ" ((al) >> 32), "rI" ((bl) >> 32) \
+ __CLOBBER_CC)
+#endif
+
+#if defined (__vax__) && W_TYPE_SIZE == 32
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("addl2 %5,%1\n\tadwc %3,%0" \
+ : "=g" (sh), "=&g" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "%1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("subl2 %5,%1\n\tsbwc %3,%0" \
+ : "=g" (sh), "=&g" (sl) \
+ : "0" ((USItype)(ah)), "g" ((USItype)(bh)), \
+ "1" ((USItype)(al)), "g" ((USItype)(bl)))
+#define smul_ppmm(xh, xl, m0, m1) \
+ do { \
+ union {UDItype __ll; \
+ struct {USItype __l, __h;} __i; \
+ } __x; \
+ USItype __m0 = (m0), __m1 = (m1); \
+ __asm__ ("emul %1,%2,$0,%0" \
+ : "=g" (__x.__ll) : "g" (__m0), "g" (__m1)); \
+ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \
+ } while (0)
+#define sdiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ union {DItype __ll; \
+ struct {SItype __l, __h;} __i; \
+ } __x; \
+ __x.__i.__h = n1; __x.__i.__l = n0; \
+ __asm__ ("ediv %3,%2,%0,%1" \
+ : "=g" (q), "=g" (r) : "g" (__x.__ll), "g" (d)); \
+ } while (0)
+#if 0
+/* Note: the following FIXME comes from GMP, thus it does make sense to try
+ to resolve it in MPFR. */
+/* FIXME: This instruction appears to be unimplemented on some systems (vax
+ 8800 maybe). */
+#define count_trailing_zeros(count,x) \
+ do { \
+ __asm__ ("ffs 0, 31, %1, %0" \
+ : "=g" (count) \
+ : "g" ((USItype) (x))); \
+ } while (0)
+#endif
+#endif /* __vax__ */
+
+#if defined (__z8000__) && W_TYPE_SIZE == 16
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ __asm__ ("add %H1,%H5\n\tadc %H0,%H3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((unsigned int)(ah)), "r" ((unsigned int)(bh)), \
+ "%1" ((unsigned int)(al)), "rQR" ((unsigned int)(bl)))
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub %H1,%H5\n\tsbc %H0,%H3" \
+ : "=r" (sh), "=&r" (sl) \
+ : "0" ((unsigned int)(ah)), "r" ((unsigned int)(bh)), \
+ "1" ((unsigned int)(al)), "rQR" ((unsigned int)(bl)))
+#define umul_ppmm(xh, xl, m0, m1) \
+ do { \
+ union {long int __ll; \
+ struct {unsigned int __h, __l;} __i; \
+ } __x; \
+ unsigned int __m0 = (m0), __m1 = (m1); \
+ __asm__ ("mult %S0,%H3" \
+ : "=r" (__x.__i.__h), "=r" (__x.__i.__l) \
+ : "%1" (m0), "rQR" (m1)); \
+ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \
+ (xh) += ((((signed int) __m0 >> 15) & __m1) \
+ + (((signed int) __m1 >> 15) & __m0)); \
+ } while (0)
+#endif /* __z8000__ */
+
+#endif /* __GNUC__ */
+
+#endif /* NO_ASM */
+
+
+#if !defined (umul_ppmm) && defined (__umulsidi3)
+#define umul_ppmm(ph, pl, m0, m1) \
+ { \
+ UDWtype __ll = __umulsidi3 (m0, m1); \
+ ph = (UWtype) (__ll >> W_TYPE_SIZE); \
+ pl = (UWtype) __ll; \
+ }
+#endif
+
+#if !defined (__umulsidi3)
+#define __umulsidi3(u, v) \
+ ({UWtype __hi, __lo; \
+ umul_ppmm (__hi, __lo, u, v); \
+ ((UDWtype) __hi << W_TYPE_SIZE) | __lo; })
+#endif
+
+
+/* Use mpn_umul_ppmm or mpn_udiv_qrnnd functions, if they exist. The "_r"
+ forms have "reversed" arguments, meaning the pointer is last, which
+ sometimes allows better parameter passing, in particular on 64-bit
+ hppa. */
+
+#define mpn_umul_ppmm __MPN(umul_ppmm)
+extern UWtype mpn_umul_ppmm _PROTO ((UWtype *, UWtype, UWtype));
+
+#if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm \
+ && ! defined (LONGLONG_STANDALONE)
+#define umul_ppmm(wh, wl, u, v) \
+ do { \
+ UWtype __umul_ppmm__p0; \
+ (wh) = mpn_umul_ppmm (&__umul_ppmm__p0, (UWtype) (u), (UWtype) (v)); \
+ (wl) = __umul_ppmm__p0; \
+ } while (0)
+#endif
+
+#define mpn_umul_ppmm_r __MPN(umul_ppmm_r)
+extern UWtype mpn_umul_ppmm_r _PROTO ((UWtype, UWtype, UWtype *));
+
+#if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm_r \
+ && ! defined (LONGLONG_STANDALONE)
+#define umul_ppmm(wh, wl, u, v) \
+ do { \
+ UWtype __umul_ppmm__p0; \
+ (wh) = mpn_umul_ppmm_r ((UWtype) (u), (UWtype) (v), &__umul_ppmm__p0); \
+ (wl) = __umul_ppmm__p0; \
+ } while (0)
+#endif
+
+#define mpn_udiv_qrnnd __MPN(udiv_qrnnd)
+extern UWtype mpn_udiv_qrnnd _PROTO ((UWtype *, UWtype, UWtype, UWtype));
+
+#if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd \
+ && ! defined (LONGLONG_STANDALONE)
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ UWtype __udiv_qrnnd__r; \
+ (q) = mpn_udiv_qrnnd (&__udiv_qrnnd__r, \
+ (UWtype) (n1), (UWtype) (n0), (UWtype) d); \
+ (r) = __udiv_qrnnd__r; \
+ } while (0)
+#endif
+
+#define mpn_udiv_qrnnd_r __MPN(udiv_qrnnd_r)
+extern UWtype mpn_udiv_qrnnd_r _PROTO ((UWtype, UWtype, UWtype, UWtype *));
+
+#if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd_r \
+ && ! defined (LONGLONG_STANDALONE)
+#define udiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ UWtype __udiv_qrnnd__r; \
+ (q) = mpn_udiv_qrnnd_r ((UWtype) (n1), (UWtype) (n0), (UWtype) d, \
+ &__udiv_qrnnd__r); \
+ (r) = __udiv_qrnnd__r; \
+ } while (0)
+#endif
+
+
+/* If this machine has no inline assembler, use C macros. */
+
+#if !defined (add_ssaaaa)
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+ do { \
+ UWtype __x; \
+ __x = (al) + (bl); \
+ (sh) = (ah) + (bh) + (__x < (al)); \
+ (sl) = __x; \
+ } while (0)
+#endif
+
+#if !defined (sub_ddmmss)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ do { \
+ UWtype __x; \
+ __x = (al) - (bl); \
+ (sh) = (ah) - (bh) - ((al) < (bl)); \
+ (sl) = __x; \
+ } while (0)
+#endif
+
+/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
+ smul_ppmm. */
+#if !defined (umul_ppmm) && defined (smul_ppmm)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ UWtype __w1; \
+ UWtype __xm0 = (u), __xm1 = (v); \
+ smul_ppmm (__w1, w0, __xm0, __xm1); \
+ (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
+ + (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
+ } while (0)
+#endif
+
+/* If we still don't have umul_ppmm, define it using plain C.
+
+ For reference, when this code is used for squaring (ie. u and v identical
+ expressions), gcc recognises __x1 and __x2 are the same and generates 3
+ multiplies, not 4. The subsequent additions could be optimized a bit,
+ but the only place GMP currently uses such a square is mpn_sqr_basecase,
+ and chips obliged to use this generic C umul will have plenty of worse
+ performance problems than a couple of extra instructions on the diagonal
+ of sqr_basecase. */
+
+#if !defined (umul_ppmm)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ UWtype __x0, __x1, __x2, __x3; \
+ UHWtype __ul, __vl, __uh, __vh; \
+ UWtype __u = (u), __v = (v); \
+ \
+ __ul = __ll_lowpart (__u); \
+ __uh = __ll_highpart (__u); \
+ __vl = __ll_lowpart (__v); \
+ __vh = __ll_highpart (__v); \
+ \
+ __x0 = (UWtype) __ul * __vl; \
+ __x1 = (UWtype) __ul * __vh; \
+ __x2 = (UWtype) __uh * __vl; \
+ __x3 = (UWtype) __uh * __vh; \
+ \
+ __x1 += __ll_highpart (__x0);/* this can't give carry */ \
+ __x1 += __x2; /* but this indeed can */ \
+ if (__x1 < __x2) /* did we get it? */ \
+ __x3 += __ll_B; /* yes, add it in the proper pos. */ \
+ \
+ (w1) = __x3 + __ll_highpart (__x1); \
+ (w0) = (__x1 << W_TYPE_SIZE/2) + __ll_lowpart (__x0); \
+ } while (0)
+#endif
+
+/* If we don't have smul_ppmm, define it using umul_ppmm (which surely will
+ exist in one form or another. */
+#if !defined (smul_ppmm)
+#define smul_ppmm(w1, w0, u, v) \
+ do { \
+ UWtype __w1; \
+ UWtype __xm0 = (u), __xm1 = (v); \
+ umul_ppmm (__w1, w0, __xm0, __xm1); \
+ (w1) = __w1 - (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
+ - (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
+ } while (0)
+#endif
+
+/* Define this unconditionally, so it can be used for debugging. */
+#define __udiv_qrnnd_c(q, r, n1, n0, d) \
+ do { \
+ UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m; \
+ \
+ ASSERT ((d) != 0); \
+ ASSERT ((n1) < (d)); \
+ \
+ __d1 = __ll_highpart (d); \
+ __d0 = __ll_lowpart (d); \
+ \
+ __q1 = (n1) / __d1; \
+ __r1 = (n1) - __q1 * __d1; \
+ __m = __q1 * __d0; \
+ __r1 = __r1 * __ll_B | __ll_highpart (n0); \
+ if (__r1 < __m) \
+ { \
+ __q1--, __r1 += (d); \
+ if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
+ if (__r1 < __m) \
+ __q1--, __r1 += (d); \
+ } \
+ __r1 -= __m; \
+ \
+ __q0 = __r1 / __d1; \
+ __r0 = __r1 - __q0 * __d1; \
+ __m = __q0 * __d0; \
+ __r0 = __r0 * __ll_B | __ll_lowpart (n0); \
+ if (__r0 < __m) \
+ { \
+ __q0--, __r0 += (d); \
+ if (__r0 >= (d)) \
+ if (__r0 < __m) \
+ __q0--, __r0 += (d); \
+ } \
+ __r0 -= __m; \
+ \
+ (q) = __q1 * __ll_B | __q0; \
+ (r) = __r0; \
+ } while (0)
+
+/* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through
+ __udiv_w_sdiv (defined in libgcc or elsewhere). */
+#if !defined (udiv_qrnnd) && defined (sdiv_qrnnd)
+#define udiv_qrnnd(q, r, nh, nl, d) \
+ do { \
+ UWtype __r; \
+ (q) = __MPN(udiv_w_sdiv) (&__r, nh, nl, d); \
+ (r) = __r; \
+ } while (0)
+#endif
+
+/* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */
+#if !defined (udiv_qrnnd)
+#define UDIV_NEEDS_NORMALIZATION 1
+#define udiv_qrnnd __udiv_qrnnd_c
+#endif
+
+#if !defined (count_leading_zeros)
+#define count_leading_zeros(count, x) \
+ do { \
+ UWtype __xr = (x); \
+ UWtype __a; \
+ \
+ if (W_TYPE_SIZE == 32) \
+ { \
+ __a = __xr < ((UWtype) 1 << 2*__BITS4) \
+ ? (__xr < ((UWtype) 1 << __BITS4) ? 1 : __BITS4 + 1) \
+ : (__xr < ((UWtype) 1 << 3*__BITS4) ? 2*__BITS4 + 1 \
+ : 3*__BITS4 + 1); \
+ } \
+ else \
+ { \
+ for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \
+ if (((__xr >> __a) & 0xff) != 0) \
+ break; \
+ ++__a; \
+ } \
+ \
+ (count) = W_TYPE_SIZE + 1 - __a - __clz_tab[__xr >> __a]; \
+ } while (0)
+/* This version gives a well-defined value for zero. */
+#define COUNT_LEADING_ZEROS_0 (W_TYPE_SIZE - 1)
+#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
+#endif
+
+/* clz_tab needed by mpn/x86/pentium/mod_1.asm in a fat binary */
+#if HAVE_HOST_CPU_FAMILY_x86 && WANT_FAT_BINARY
+#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
+#endif
+
+#ifdef COUNT_LEADING_ZEROS_NEED_CLZ_TAB
+# ifdef MPFR_HAVE_GMP_IMPL
+ extern const unsigned char __GMP_DECLSPEC __clz_tab[128];
+# else
+ extern const unsigned char __clz_tab[128];
+# endif
+#endif
+
+#if !defined (count_trailing_zeros)
+/* Define count_trailing_zeros using count_leading_zeros. The latter might be
+ defined in asm, but if it is not, the C version above is good enough. */
+#define count_trailing_zeros(count, x) \
+ do { \
+ UWtype __ctz_x = (x); \
+ UWtype __ctz_c; \
+ ASSERT (__ctz_x != 0); \
+ count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \
+ (count) = W_TYPE_SIZE - 1 - __ctz_c; \
+ } while (0)
+#endif
+
+#ifndef UDIV_NEEDS_NORMALIZATION
+#define UDIV_NEEDS_NORMALIZATION 0
+#endif
+
+/* Whether udiv_qrnnd is actually implemented with udiv_qrnnd_preinv, and
+ that hence the latter should always be used. */
+#ifndef UDIV_PREINV_ALWAYS
+#define UDIV_PREINV_ALWAYS 0
+#endif
+
+/* Give defaults for UMUL_TIME and UDIV_TIME. */
+#ifndef UMUL_TIME
+#define UMUL_TIME 1
+#endif
+
+#ifndef UDIV_TIME
+#define UDIV_TIME UMUL_TIME
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr-thread.h b/Build/source/libs/mpfr/mpfr-src/src/mpfr-thread.h
new file mode 100644
index 00000000000..4c77d3f515b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr-thread.h
@@ -0,0 +1,48 @@
+/* MPFR internal header related to thread-local variables.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __MPFR_THREAD_H__
+#define __MPFR_THREAD_H__
+
+/* Note: Let's define MPFR_THREAD_ATTR even after a #error to make the
+ error message more visible (e.g. gcc doesn't immediately stop after
+ the #error line and outputs many error messages if MPFR_THREAD_ATTR
+ is not defined). But some compilers will just output a message and
+ may build MPFR "successfully" (without thread support). */
+#ifndef MPFR_THREAD_ATTR
+# ifdef MPFR_USE_THREAD_SAFE
+# if defined(_MSC_VER)
+# if defined(_WINDLL)
+# error "Can't build MPFR DLL as thread safe."
+# define MPFR_THREAD_ATTR
+# else
+# define MPFR_THREAD_ATTR __declspec( thread )
+# endif
+# else
+# define MPFR_THREAD_ATTR __thread
+# endif
+# else
+# define MPFR_THREAD_ATTR
+# endif
+#endif
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpfr.h b/Build/source/libs/mpfr/mpfr-src/src/mpfr.h
new file mode 100644
index 00000000000..7473dfd79d6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpfr.h
@@ -0,0 +1,1059 @@
+/* mpfr.h -- Include file for mpfr.
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef __MPFR_H
+#define __MPFR_H
+
+/* Define MPFR version number */
+#define MPFR_VERSION_MAJOR 3
+#define MPFR_VERSION_MINOR 1
+#define MPFR_VERSION_PATCHLEVEL 3
+#define MPFR_VERSION_STRING "3.1.3"
+
+/* Macros dealing with MPFR VERSION */
+#define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
+#define MPFR_VERSION \
+MPFR_VERSION_NUM(MPFR_VERSION_MAJOR,MPFR_VERSION_MINOR,MPFR_VERSION_PATCHLEVEL)
+
+/* Check if GMP is included, and try to include it (Works with local GMP) */
+#ifndef __GMP_H__
+# include <gmp.h>
+#endif
+
+/* GMP's internal __gmp_const macro has been removed on 2012-03-04:
+ http://gmplib.org:8000/gmp/rev/d287cfaf6732
+ const is standard and now assumed to be available. If the __gmp_const
+ definition is no longer present in GMP, this probably means that GMP
+ assumes that const is available; thus let's define it to const.
+ Note: this is a temporary fix that can be backported to previous MPFR
+ versions. In the future, __gmp_const should be replaced by const like
+ in GMP. */
+#ifndef __gmp_const
+# define __gmp_const const
+#endif
+
+/* Avoid some problems with macro expansion if the user defines macros
+ with the same name as keywords. By convention, identifiers and macro
+ names starting with mpfr_ are reserved by MPFR. */
+typedef void mpfr_void;
+typedef int mpfr_int;
+typedef unsigned int mpfr_uint;
+typedef long mpfr_long;
+typedef unsigned long mpfr_ulong;
+typedef size_t mpfr_size_t;
+
+/* Definition of rounding modes (DON'T USE MPFR_RNDNA!).
+ Warning! Changing the contents of this enum should be seen as an
+ interface change since the old and the new types are not compatible
+ (the integer type compatible with the enumerated type can even change,
+ see ISO C99, 6.7.2.2#4), and in Makefile.am, AGE should be set to 0.
+
+ MPFR_RNDU must appear just before MPFR_RNDD (see
+ MPFR_IS_RNDUTEST_OR_RNDDNOTTEST in mpfr-impl.h).
+
+ MPFR_RNDF has been added, though not implemented yet, in order to avoid
+ to break the ABI once faithful rounding gets implemented.
+
+ If you change the order of the rounding modes, please update the routines
+ in texceptions.c which assume 0=RNDN, 1=RNDZ, 2=RNDU, 3=RNDD, 4=RNDA.
+*/
+typedef enum {
+ MPFR_RNDN=0, /* round to nearest, with ties to even */
+ MPFR_RNDZ, /* round toward zero */
+ MPFR_RNDU, /* round toward +Inf */
+ MPFR_RNDD, /* round toward -Inf */
+ MPFR_RNDA, /* round away from zero */
+ MPFR_RNDF, /* faithful rounding (not implemented yet) */
+ MPFR_RNDNA=-1 /* round to nearest, with ties away from zero (mpfr_round) */
+} mpfr_rnd_t;
+
+/* kept for compatibility with MPFR 2.4.x and before */
+#define GMP_RNDN MPFR_RNDN
+#define GMP_RNDZ MPFR_RNDZ
+#define GMP_RNDU MPFR_RNDU
+#define GMP_RNDD MPFR_RNDD
+
+/* Note: With the following default choices for _MPFR_PREC_FORMAT and
+ _MPFR_EXP_FORMAT, mpfr_exp_t will be the same as [mp_exp_t] (at least
+ up to GMP 5). */
+
+/* Define precision: 1 (short), 2 (int) or 3 (long) (DON'T USE IT!) */
+#ifndef _MPFR_PREC_FORMAT
+# if __GMP_MP_SIZE_T_INT == 1
+# define _MPFR_PREC_FORMAT 2
+# else
+# define _MPFR_PREC_FORMAT 3
+# endif
+#endif
+
+/* Define exponent: 1 (short), 2 (int), 3 (long) or 4 (intmax_t)
+ (DON'T USE IT!) */
+#ifndef _MPFR_EXP_FORMAT
+# define _MPFR_EXP_FORMAT _MPFR_PREC_FORMAT
+#endif
+
+#if _MPFR_PREC_FORMAT > _MPFR_EXP_FORMAT
+# error "mpfr_prec_t must not be larger than mpfr_exp_t"
+#endif
+
+/* Let's make mpfr_prec_t signed in order to avoid problems due to the
+ usual arithmetic conversions when mixing mpfr_prec_t and mpfr_exp_t
+ in an expression (for error analysis) if casts are forgotten. */
+#if _MPFR_PREC_FORMAT == 1
+typedef short mpfr_prec_t;
+typedef unsigned short mpfr_uprec_t;
+#elif _MPFR_PREC_FORMAT == 2
+typedef int mpfr_prec_t;
+typedef unsigned int mpfr_uprec_t;
+#elif _MPFR_PREC_FORMAT == 3
+typedef long mpfr_prec_t;
+typedef unsigned long mpfr_uprec_t;
+#else
+# error "Invalid MPFR Prec format"
+#endif
+
+/* Definition of precision limits without needing <limits.h> */
+/* Note: the casts allows the expression to yield the wanted behavior
+ for _MPFR_PREC_FORMAT == 1 (due to integer promotion rules). */
+#define MPFR_PREC_MIN 2
+#define MPFR_PREC_MAX ((mpfr_prec_t)((mpfr_uprec_t)(~(mpfr_uprec_t)0)>>1))
+
+/* Definition of sign */
+typedef int mpfr_sign_t;
+
+/* Definition of the exponent. _MPFR_EXP_FORMAT must be large enough
+ so that mpfr_exp_t has at least 32 bits. */
+#if _MPFR_EXP_FORMAT == 1
+typedef short mpfr_exp_t;
+typedef unsigned short mpfr_uexp_t;
+#elif _MPFR_EXP_FORMAT == 2
+typedef int mpfr_exp_t;
+typedef unsigned int mpfr_uexp_t;
+#elif _MPFR_EXP_FORMAT == 3
+typedef long mpfr_exp_t;
+typedef unsigned long mpfr_uexp_t;
+#elif _MPFR_EXP_FORMAT == 4
+/* Note: in this case, intmax_t and uintmax_t must be defined before
+ the inclusion of mpfr.h (we do not include <stdint.h> here because
+ of some non-ISO C99 implementations that support these types). */
+typedef intmax_t mpfr_exp_t;
+typedef uintmax_t mpfr_uexp_t;
+#else
+# error "Invalid MPFR Exp format"
+#endif
+
+/* Definition of the standard exponent limits */
+#define MPFR_EMAX_DEFAULT ((mpfr_exp_t) (((mpfr_ulong) 1 << 30) - 1))
+#define MPFR_EMIN_DEFAULT (-(MPFR_EMAX_DEFAULT))
+
+/* DON'T USE THIS! (For MPFR-public macros only, see below.)
+ The mpfr_sgn macro uses the fact that __MPFR_EXP_NAN and __MPFR_EXP_ZERO
+ are the smallest values. */
+#define __MPFR_EXP_MAX ((mpfr_exp_t) (((mpfr_uexp_t) -1) >> 1))
+#define __MPFR_EXP_NAN (1 - __MPFR_EXP_MAX)
+#define __MPFR_EXP_ZERO (0 - __MPFR_EXP_MAX)
+#define __MPFR_EXP_INF (2 - __MPFR_EXP_MAX)
+
+/* Definition of the main structure */
+typedef struct {
+ mpfr_prec_t _mpfr_prec;
+ mpfr_sign_t _mpfr_sign;
+ mpfr_exp_t _mpfr_exp;
+ mp_limb_t *_mpfr_d;
+} __mpfr_struct;
+
+/* Compatibility with previous types of MPFR */
+#ifndef mp_rnd_t
+# define mp_rnd_t mpfr_rnd_t
+#endif
+#ifndef mp_prec_t
+# define mp_prec_t mpfr_prec_t
+#endif
+
+/*
+ The represented number is
+ _sign*(_d[k-1]/B+_d[k-2]/B^2+...+_d[0]/B^k)*2^_exp
+ where k=ceil(_mp_prec/GMP_NUMB_BITS) and B=2^GMP_NUMB_BITS.
+
+ For the msb (most significant bit) normalized representation, we must have
+ _d[k-1]>=B/2, unless the number is singular.
+
+ We must also have the last k*GMP_NUMB_BITS-_prec bits set to zero.
+*/
+
+typedef __mpfr_struct mpfr_t[1];
+typedef __mpfr_struct *mpfr_ptr;
+typedef __gmp_const __mpfr_struct *mpfr_srcptr;
+
+/* For those who need a direct and fast access to the sign field.
+ However it is not in the API, thus use it at your own risk: it might
+ not be supported, or change name, in further versions!
+ Unfortunately, it must be defined here (instead of MPFR's internal
+ header file mpfr-impl.h) because it is used by some macros below.
+*/
+#define MPFR_SIGN(x) ((x)->_mpfr_sign)
+
+/* Stack interface */
+typedef enum {
+ MPFR_NAN_KIND = 0,
+ MPFR_INF_KIND = 1, MPFR_ZERO_KIND = 2, MPFR_REGULAR_KIND = 3
+} mpfr_kind_t;
+
+/* GMP defines:
+ + size_t: Standard size_t
+ + __GMP_ATTRIBUTE_PURE Attribute for math functions.
+ + __GMP_NOTHROW For C++: can't throw .
+ + __GMP_EXTERN_INLINE Attribute for inline function.
+ * __gmp_const const (Supports for K&R compiler only for mpfr.h).
+ + __GMP_DECLSPEC_EXPORT compiling to go into a DLL
+ + __GMP_DECLSPEC_IMPORT compiling to go into a application
+*/
+/* Extra MPFR defines */
+#define __MPFR_SENTINEL_ATTR
+#if defined (__GNUC__)
+# if __GNUC__ >= 4
+# undef __MPFR_SENTINEL_ATTR
+# define __MPFR_SENTINEL_ATTR __attribute__ ((sentinel))
+# endif
+#endif
+
+/* Prototypes: Support of K&R compiler */
+#if defined (__GMP_PROTO)
+# define _MPFR_PROTO __GMP_PROTO
+#elif defined (__STDC__) || defined (__cplusplus)
+# define _MPFR_PROTO(x) x
+#else
+# define _MPFR_PROTO(x) ()
+#endif
+/* Support for WINDOWS Dll:
+ Check if we are inside a MPFR build, and if so export the functions.
+ Otherwise does the same thing as GMP */
+#if defined(__MPFR_WITHIN_MPFR) && __GMP_LIBGMP_DLL
+# define __MPFR_DECLSPEC __GMP_DECLSPEC_EXPORT
+#else
+# define __MPFR_DECLSPEC __GMP_DECLSPEC
+#endif
+
+/* Use MPFR_DEPRECATED to mark MPFR functions, types or variables as
+ deprecated. Code inspired by Apache Subversion's svn_types.h file. */
+#if defined(__GNUC__) && \
+ (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+# define MPFR_DEPRECATED __attribute__ ((deprecated))
+#elif defined(_MSC_VER) && _MSC_VER >= 1300
+# define MPFR_DEPRECATED __declspec(deprecated)
+#else
+# define MPFR_DEPRECATED
+#endif
+
+/* Note: In order to be declared, some functions need a specific
+ system header to be included *before* "mpfr.h". If the user
+ forgets to include the header, the MPFR function prototype in
+ the user object file is not correct. To avoid wrong results,
+ we raise a linker error in that case by changing their internal
+ name in the library (prefixed by __gmpfr instead of mpfr). See
+ the lines of the form "#define mpfr_xxx __gmpfr_xxx" below. */
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+__MPFR_DECLSPEC __gmp_const char * mpfr_get_version _MPFR_PROTO ((void));
+__MPFR_DECLSPEC __gmp_const char * mpfr_get_patches _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_buildopt_tls_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_buildopt_decimal_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_buildopt_gmpinternals_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC __gmp_const char * mpfr_buildopt_tune_case _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_set_emin _MPFR_PROTO ((mpfr_exp_t));
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_min _MPFR_PROTO ((void));
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_max _MPFR_PROTO ((void));
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_set_emax _MPFR_PROTO ((mpfr_exp_t));
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_min _MPFR_PROTO ((void));
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_max _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC void mpfr_set_default_rounding_mode _MPFR_PROTO((mpfr_rnd_t));
+__MPFR_DECLSPEC mpfr_rnd_t mpfr_get_default_rounding_mode _MPFR_PROTO((void));
+__MPFR_DECLSPEC __gmp_const char *
+ mpfr_print_rnd_mode _MPFR_PROTO((mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_clear_flags _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_clear_underflow _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_clear_overflow _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_clear_divby0 _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_clear_nanflag _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_clear_inexflag _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_clear_erangeflag _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC void mpfr_set_underflow _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_set_overflow _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_set_divby0 _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_set_nanflag _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_set_inexflag _MPFR_PROTO ((void));
+__MPFR_DECLSPEC void mpfr_set_erangeflag _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC int mpfr_underflow_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_overflow_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_divby0_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_nanflag_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_inexflag_p _MPFR_PROTO ((void));
+__MPFR_DECLSPEC int mpfr_erangeflag_p _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC int
+ mpfr_check_range _MPFR_PROTO ((mpfr_ptr, int, mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_init2 _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t));
+__MPFR_DECLSPEC void mpfr_init _MPFR_PROTO ((mpfr_ptr));
+__MPFR_DECLSPEC void mpfr_clear _MPFR_PROTO ((mpfr_ptr));
+
+__MPFR_DECLSPEC void
+ mpfr_inits2 _MPFR_PROTO ((mpfr_prec_t, mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
+__MPFR_DECLSPEC void
+ mpfr_inits _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
+__MPFR_DECLSPEC void
+ mpfr_clears _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
+
+__MPFR_DECLSPEC int
+ mpfr_prec_round _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_can_round _MPFR_PROTO ((mpfr_srcptr, mpfr_exp_t, mpfr_rnd_t, mpfr_rnd_t,
+ mpfr_prec_t));
+__MPFR_DECLSPEC mpfr_prec_t mpfr_min_prec _MPFR_PROTO ((mpfr_srcptr));
+
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_exp _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_set_exp _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t));
+__MPFR_DECLSPEC mpfr_prec_t mpfr_get_prec _MPFR_PROTO((mpfr_srcptr));
+__MPFR_DECLSPEC void mpfr_set_prec _MPFR_PROTO((mpfr_ptr, mpfr_prec_t));
+__MPFR_DECLSPEC void mpfr_set_prec_raw _MPFR_PROTO((mpfr_ptr, mpfr_prec_t));
+__MPFR_DECLSPEC void mpfr_set_default_prec _MPFR_PROTO((mpfr_prec_t));
+__MPFR_DECLSPEC mpfr_prec_t mpfr_get_default_prec _MPFR_PROTO((void));
+
+__MPFR_DECLSPEC int mpfr_set_d _MPFR_PROTO ((mpfr_ptr, double, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_set_flt _MPFR_PROTO ((mpfr_ptr, float, mpfr_rnd_t));
+#ifdef MPFR_WANT_DECIMAL_FLOATS
+__MPFR_DECLSPEC int mpfr_set_decimal64 _MPFR_PROTO ((mpfr_ptr, _Decimal64,
+ mpfr_rnd_t));
+#endif
+__MPFR_DECLSPEC int
+ mpfr_set_ld _MPFR_PROTO ((mpfr_ptr, long double, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_z _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_z_2exp _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_exp_t, mpfr_rnd_t));
+__MPFR_DECLSPEC void mpfr_set_nan _MPFR_PROTO ((mpfr_ptr));
+__MPFR_DECLSPEC void mpfr_set_inf _MPFR_PROTO ((mpfr_ptr, int));
+__MPFR_DECLSPEC void mpfr_set_zero _MPFR_PROTO ((mpfr_ptr, int));
+__MPFR_DECLSPEC int
+ mpfr_set_f _MPFR_PROTO ((mpfr_ptr, mpf_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_get_f _MPFR_PROTO ((mpf_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_set_si _MPFR_PROTO ((mpfr_ptr, long, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_si_2exp _MPFR_PROTO ((mpfr_ptr, long, mpfr_exp_t, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_ui_2exp _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_exp_t,mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_q _MPFR_PROTO ((mpfr_ptr, mpq_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_init_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set4 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t, int));
+__MPFR_DECLSPEC int
+ mpfr_abs _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_neg _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_signbit _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC int
+ mpfr_setsign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, int, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_copysign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC mpfr_exp_t mpfr_get_z_2exp _MPFR_PROTO ((mpz_ptr, mpfr_srcptr));
+__MPFR_DECLSPEC float mpfr_get_flt _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC double mpfr_get_d _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
+#ifdef MPFR_WANT_DECIMAL_FLOATS
+__MPFR_DECLSPEC _Decimal64 mpfr_get_decimal64 _MPFR_PROTO ((mpfr_srcptr,
+ mpfr_rnd_t));
+#endif
+__MPFR_DECLSPEC long double mpfr_get_ld _MPFR_PROTO ((mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC double mpfr_get_d1 _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC double mpfr_get_d_2exp _MPFR_PROTO ((long*, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC long double mpfr_get_ld_2exp _MPFR_PROTO ((long*, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_frexp _MPFR_PROTO ((mpfr_exp_t*, mpfr_ptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC long mpfr_get_si _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC unsigned long mpfr_get_ui _MPFR_PROTO ((mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC char*mpfr_get_str _MPFR_PROTO ((char*, mpfr_exp_t*, int, size_t,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_get_z _MPFR_PROTO ((mpz_ptr z, mpfr_srcptr f,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_free_str _MPFR_PROTO ((char *));
+
+__MPFR_DECLSPEC int mpfr_urandom _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_grandom _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, gmp_randstate_t,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_urandomb _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t));
+
+__MPFR_DECLSPEC void mpfr_nextabove _MPFR_PROTO ((mpfr_ptr));
+__MPFR_DECLSPEC void mpfr_nextbelow _MPFR_PROTO ((mpfr_ptr));
+__MPFR_DECLSPEC void mpfr_nexttoward _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_printf _MPFR_PROTO ((__gmp_const char*, ...));
+__MPFR_DECLSPEC int mpfr_asprintf _MPFR_PROTO ((char**, __gmp_const char*,
+ ...));
+__MPFR_DECLSPEC int mpfr_sprintf _MPFR_PROTO ((char*, __gmp_const char*,
+ ...));
+__MPFR_DECLSPEC int mpfr_snprintf _MPFR_PROTO ((char*, size_t,
+ __gmp_const char*, ...));
+
+__MPFR_DECLSPEC int mpfr_pow _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_pow_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_pow_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_ui_pow_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int,
+ unsigned long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_ui_pow _MPFR_PROTO ((mpfr_ptr, unsigned long int,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_pow_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpz_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sqrt_ui _MPFR_PROTO ((mpfr_ptr, unsigned long,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_rec_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_add _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_mul _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_add_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_ui_sub _MPFR_PROTO ((mpfr_ptr, unsigned long,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_mul_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_ui_div _MPFR_PROTO ((mpfr_ptr, unsigned long,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_add_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_si_sub _MPFR_PROTO ((mpfr_ptr, long int,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_mul_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long int, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_si_div _MPFR_PROTO ((mpfr_ptr, long int,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_add_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ double, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ double, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_d_sub _MPFR_PROTO ((mpfr_ptr, double,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_mul_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ double, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ double, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_d_div _MPFR_PROTO ((mpfr_ptr, double,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_sqr _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_const_pi _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_const_log2 _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_const_euler _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_const_catalan _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_agm _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_log _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_log2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_log10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_log1p _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_exp2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_exp10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_expm1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_eint _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_li2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_cmp _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_cmp3 _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr, int));
+__MPFR_DECLSPEC int mpfr_cmp_d _MPFR_PROTO ((mpfr_srcptr, double));
+__MPFR_DECLSPEC int mpfr_cmp_ld _MPFR_PROTO ((mpfr_srcptr, long double));
+__MPFR_DECLSPEC int mpfr_cmpabs _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_cmp_ui _MPFR_PROTO ((mpfr_srcptr, unsigned long));
+__MPFR_DECLSPEC int mpfr_cmp_si _MPFR_PROTO ((mpfr_srcptr, long));
+__MPFR_DECLSPEC int mpfr_cmp_ui_2exp _MPFR_PROTO ((mpfr_srcptr, unsigned long,
+ mpfr_exp_t));
+__MPFR_DECLSPEC int mpfr_cmp_si_2exp _MPFR_PROTO ((mpfr_srcptr, long,
+ mpfr_exp_t));
+__MPFR_DECLSPEC void mpfr_reldiff _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_eq _MPFR_PROTO((mpfr_srcptr, mpfr_srcptr,
+ unsigned long));
+__MPFR_DECLSPEC int mpfr_sgn _MPFR_PROTO ((mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_mul_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_mul_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ unsigned long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_mul_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ long, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_rint _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_round _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_trunc _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_ceil _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_floor _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_rint_round _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_rint_trunc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_rint_ceil _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_rint_floor _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_frac _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_modf _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_remquo _MPFR_PROTO ((mpfr_ptr, long*, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_remainder _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fmod _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_fits_ulong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_slong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_uint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_sint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_ushort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_sshort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_uintmax_p _MPFR_PROTO((mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fits_intmax_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_extract _MPFR_PROTO ((mpz_ptr, mpfr_srcptr,
+ unsigned int));
+__MPFR_DECLSPEC void mpfr_swap _MPFR_PROTO ((mpfr_ptr, mpfr_ptr));
+__MPFR_DECLSPEC void mpfr_dump _MPFR_PROTO ((mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_nan_p _MPFR_PROTO((mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_inf_p _MPFR_PROTO((mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_number_p _MPFR_PROTO((mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_integer_p _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_zero_p _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_regular_p _MPFR_PROTO ((mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_greater_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_greaterequal_p _MPFR_PROTO ((mpfr_srcptr,
+ mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_less_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_lessequal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_lessgreater_p _MPFR_PROTO((mpfr_srcptr,mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_equal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+__MPFR_DECLSPEC int mpfr_unordered_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
+
+__MPFR_DECLSPEC int mpfr_atanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_acosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_asinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_cosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_tanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sinh_cosh _MPFR_PROTO ((mpfr_ptr, mpfr_ptr,
+ mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_sech _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_csch _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_coth _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_acos _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_asin _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_atan _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sin _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sin_cos _MPFR_PROTO ((mpfr_ptr, mpfr_ptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_cos _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_tan _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_atan2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sec _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_csc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_cot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_hypot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_erf _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_erfc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_cbrt _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_root _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,unsigned long,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_gamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_lngamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_lgamma _MPFR_PROTO((mpfr_ptr,int*,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_digamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_zeta _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_zeta_ui _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fac_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_j0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_j1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_jn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_y0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_y1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_yn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_ai _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_min _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_max _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_dim _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_mul_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpz_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpz_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_add_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpz_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpz_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_z_sub _MPFR_PROTO ((mpfr_ptr, mpz_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_cmp_z _MPFR_PROTO ((mpfr_srcptr, mpz_srcptr));
+
+__MPFR_DECLSPEC int mpfr_mul_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpq_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_div_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpq_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_add_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpq_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sub_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
+ mpq_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_cmp_q _MPFR_PROTO ((mpfr_srcptr, mpq_srcptr));
+
+__MPFR_DECLSPEC int mpfr_cmp_f _MPFR_PROTO ((mpfr_srcptr, mpf_srcptr));
+
+__MPFR_DECLSPEC int mpfr_fma _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_fms _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
+ mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_sum _MPFR_PROTO ((mpfr_ptr, mpfr_ptr *__gmp_const,
+ unsigned long, mpfr_rnd_t));
+
+__MPFR_DECLSPEC void mpfr_free_cache _MPFR_PROTO ((void));
+
+__MPFR_DECLSPEC int mpfr_subnormalize _MPFR_PROTO ((mpfr_ptr, int,
+ mpfr_rnd_t));
+
+__MPFR_DECLSPEC int mpfr_strtofr _MPFR_PROTO ((mpfr_ptr, __gmp_const char *,
+ char **, int, mpfr_rnd_t));
+
+__MPFR_DECLSPEC size_t mpfr_custom_get_size _MPFR_PROTO ((mpfr_prec_t));
+__MPFR_DECLSPEC void mpfr_custom_init _MPFR_PROTO ((void *, mpfr_prec_t));
+__MPFR_DECLSPEC void * mpfr_custom_get_significand _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC mpfr_exp_t mpfr_custom_get_exp _MPFR_PROTO ((mpfr_srcptr));
+__MPFR_DECLSPEC void mpfr_custom_move _MPFR_PROTO ((mpfr_ptr, void *));
+__MPFR_DECLSPEC void mpfr_custom_init_set _MPFR_PROTO ((mpfr_ptr, int,
+ mpfr_exp_t, mpfr_prec_t, void *));
+__MPFR_DECLSPEC int mpfr_custom_get_kind _MPFR_PROTO ((mpfr_srcptr));
+
+#if defined (__cplusplus)
+}
+#endif
+
+/* Define MPFR_USE_EXTENSION to avoid "gcc -pedantic" warnings. */
+#ifndef MPFR_EXTENSION
+# if defined(MPFR_USE_EXTENSION)
+# define MPFR_EXTENSION __extension__
+# else
+# define MPFR_EXTENSION
+# endif
+#endif
+
+/* Warning! This macro doesn't work with K&R C (e.g., compare the "gcc -E"
+ output with and without -traditional) and shouldn't be used internally.
+ For public use only, but see the MPFR manual. */
+#define MPFR_DECL_INIT(_x, _p) \
+ MPFR_EXTENSION mp_limb_t __gmpfr_local_tab_##_x[((_p)-1)/GMP_NUMB_BITS+1]; \
+ MPFR_EXTENSION mpfr_t _x = {{(_p),1,__MPFR_EXP_NAN,__gmpfr_local_tab_##_x}}
+
+/* Fast access macros to replace function interface.
+ If the USER don't want to use the macro interface, let him make happy
+ even if it produces faster and smaller code. */
+#ifndef MPFR_USE_NO_MACRO
+
+/* Inlining theses functions is both faster and smaller */
+#define mpfr_nan_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_NAN)
+#define mpfr_inf_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_INF)
+#define mpfr_zero_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_ZERO)
+#define mpfr_regular_p(_x) ((_x)->_mpfr_exp > __MPFR_EXP_INF)
+#define mpfr_sgn(_x) \
+ ((_x)->_mpfr_exp < __MPFR_EXP_INF ? \
+ (mpfr_nan_p (_x) ? mpfr_set_erangeflag () : (mpfr_void) 0), 0 : \
+ MPFR_SIGN (_x))
+
+/* Prevent them from using as lvalues */
+#define MPFR_VALUE_OF(x) (0 ? (x) : (x))
+#define mpfr_get_prec(_x) MPFR_VALUE_OF((_x)->_mpfr_prec)
+#define mpfr_get_exp(_x) MPFR_VALUE_OF((_x)->_mpfr_exp)
+/* Note: if need be, the MPFR_VALUE_OF can be used for other expressions
+ (of any type). Thanks to Wojtek Lerch and Tim Rentsch for the idea. */
+
+#define mpfr_round(a,b) mpfr_rint((a), (b), MPFR_RNDNA)
+#define mpfr_trunc(a,b) mpfr_rint((a), (b), MPFR_RNDZ)
+#define mpfr_ceil(a,b) mpfr_rint((a), (b), MPFR_RNDU)
+#define mpfr_floor(a,b) mpfr_rint((a), (b), MPFR_RNDD)
+
+#define mpfr_cmp_ui(b,i) mpfr_cmp_ui_2exp((b),(i),0)
+#define mpfr_cmp_si(b,i) mpfr_cmp_si_2exp((b),(i),0)
+#define mpfr_set(a,b,r) mpfr_set4(a,b,r,MPFR_SIGN(b))
+#define mpfr_abs(a,b,r) mpfr_set4(a,b,r,1)
+#define mpfr_copysign(a,b,c,r) mpfr_set4(a,b,r,MPFR_SIGN(c))
+#define mpfr_setsign(a,b,s,r) mpfr_set4(a,b,r,(s) ? -1 : 1)
+#define mpfr_signbit(x) (MPFR_SIGN(x) < 0)
+#define mpfr_cmp(b, c) mpfr_cmp3(b, c, 1)
+#define mpfr_mul_2exp(y,x,n,r) mpfr_mul_2ui((y),(x),(n),(r))
+#define mpfr_div_2exp(y,x,n,r) mpfr_div_2ui((y),(x),(n),(r))
+
+
+/* When using GCC, optimize certain common comparisons and affectations.
+ + Remove ICC since it defines __GNUC__ but produces a
+ huge number of warnings if you use this code.
+ VL: I couldn't reproduce a single warning when enabling these macros
+ with icc 10.1 20080212 on Itanium. But with this version, __ICC isn't
+ defined (__INTEL_COMPILER is, though), so that these macros are enabled
+ anyway. Checking with other ICC versions is needed. Possibly detect
+ whether warnings are produced or not with a configure test.
+ + Remove C++ too, since it complains too much. */
+/* Added casts to improve robustness in case of undefined behavior and
+ compiler extensions based on UB (in particular -fwrapv). MPFR doesn't
+ use such extensions, but these macros will be used by 3rd-party code,
+ where such extensions may be required.
+ Moreover casts to unsigned long have been added to avoid warnings in
+ programs that use MPFR and are compiled with -Wconversion; such casts
+ are OK since if X is a constant expression, then (unsigned long) X is
+ also a constant expression, so that the optimizations still work. The
+ warnings are probably related to the following two bugs:
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38470 (possibly a variant)
+ and the casts could be removed once these bugs are fixed.
+ Casts shouldn't be used on the generic calls (to the ..._2exp functions),
+ where implicit conversions are performed. Indeed, having at least one
+ implicit conversion in the macro allows the compiler to emit diagnostics
+ when normally expected, for instance in the following call:
+ mpfr_set_ui (x, "foo", MPFR_RNDN);
+ If this is not possible (for future macros), one of the tricks described
+ on http://groups.google.com/group/comp.std.c/msg/e92abd24bf9eaf7b could
+ be used. */
+#if defined (__GNUC__) && !defined(__ICC) && !defined(__cplusplus)
+#if (__GNUC__ >= 2)
+#undef mpfr_cmp_ui
+/* We use the fact that mpfr_sgn on NaN sets the erange flag and returns 0.
+ But warning! mpfr_sgn is specified as a macro in the API, thus the macro
+ mustn't be used if side effects are possible, like here. */
+#define mpfr_cmp_ui(_f,_u) \
+ (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \
+ (mpfr_sgn) (_f) : \
+ mpfr_cmp_ui_2exp ((_f), (_u), 0))
+#undef mpfr_cmp_si
+#define mpfr_cmp_si(_f,_s) \
+ (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \
+ mpfr_cmp_ui ((_f), (mpfr_ulong) (mpfr_long) (_s)) : \
+ mpfr_cmp_si_2exp ((_f), (_s), 0))
+#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95
+#undef mpfr_set_ui
+#define mpfr_set_ui(_f,_u,_r) \
+ (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \
+ __extension__ ({ \
+ mpfr_ptr _p = (_f); \
+ _p->_mpfr_sign = 1; \
+ _p->_mpfr_exp = __MPFR_EXP_ZERO; \
+ (mpfr_void) (_r); 0; }) : \
+ mpfr_set_ui_2exp ((_f), (_u), 0, (_r)))
+#endif
+#undef mpfr_set_si
+#define mpfr_set_si(_f,_s,_r) \
+ (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \
+ mpfr_set_ui ((_f), (mpfr_ulong) (mpfr_long) (_s), (_r)) : \
+ mpfr_set_si_2exp ((_f), (_s), 0, (_r)))
+#endif
+#endif
+
+/* Macro version of mpfr_stack interface for fast access */
+#define mpfr_custom_get_size(p) ((mpfr_size_t) \
+ (((p)+GMP_NUMB_BITS-1)/GMP_NUMB_BITS*sizeof (mp_limb_t)))
+#define mpfr_custom_init(m,p) do {} while (0)
+#define mpfr_custom_get_significand(x) ((mpfr_void*)((x)->_mpfr_d))
+#define mpfr_custom_get_exp(x) ((x)->_mpfr_exp)
+#define mpfr_custom_move(x,m) do { ((x)->_mpfr_d = (mp_limb_t*)(m)); } while (0)
+#define mpfr_custom_init_set(x,k,e,p,m) do { \
+ mpfr_ptr _x = (x); \
+ mpfr_exp_t _e; \
+ mpfr_kind_t _t; \
+ mpfr_int _s, _k; \
+ _k = (k); \
+ if (_k >= 0) { \
+ _t = (mpfr_kind_t) _k; \
+ _s = 1; \
+ } else { \
+ _t = (mpfr_kind_t) - _k; \
+ _s = -1; \
+ } \
+ _e = _t == MPFR_REGULAR_KIND ? (e) : \
+ _t == MPFR_NAN_KIND ? __MPFR_EXP_NAN : \
+ _t == MPFR_INF_KIND ? __MPFR_EXP_INF : __MPFR_EXP_ZERO; \
+ _x->_mpfr_prec = (p); \
+ _x->_mpfr_sign = _s; \
+ _x->_mpfr_exp = _e; \
+ _x->_mpfr_d = (mp_limb_t*) (m); \
+ } while (0)
+#define mpfr_custom_get_kind(x) \
+ ( (x)->_mpfr_exp > __MPFR_EXP_INF ? \
+ (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (x) \
+ : (x)->_mpfr_exp == __MPFR_EXP_INF ? \
+ (mpfr_int) MPFR_INF_KIND * MPFR_SIGN (x) \
+ : (x)->_mpfr_exp == __MPFR_EXP_NAN ? (mpfr_int) MPFR_NAN_KIND \
+ : (mpfr_int) MPFR_ZERO_KIND * MPFR_SIGN (x) )
+
+
+#endif /* MPFR_USE_NO_MACRO */
+
+/* Theses are defined to be macros */
+#define mpfr_init_set_si(x, i, rnd) \
+ ( mpfr_init(x), mpfr_set_si((x), (i), (rnd)) )
+#define mpfr_init_set_ui(x, i, rnd) \
+ ( mpfr_init(x), mpfr_set_ui((x), (i), (rnd)) )
+#define mpfr_init_set_d(x, d, rnd) \
+ ( mpfr_init(x), mpfr_set_d((x), (d), (rnd)) )
+#define mpfr_init_set_ld(x, d, rnd) \
+ ( mpfr_init(x), mpfr_set_ld((x), (d), (rnd)) )
+#define mpfr_init_set_z(x, i, rnd) \
+ ( mpfr_init(x), mpfr_set_z((x), (i), (rnd)) )
+#define mpfr_init_set_q(x, i, rnd) \
+ ( mpfr_init(x), mpfr_set_q((x), (i), (rnd)) )
+#define mpfr_init_set(x, y, rnd) \
+ ( mpfr_init(x), mpfr_set((x), (y), (rnd)) )
+#define mpfr_init_set_f(x, y, rnd) \
+ ( mpfr_init(x), mpfr_set_f((x), (y), (rnd)) )
+
+/* Compatibility layer -- obsolete functions and macros */
+/* Note: it is not possible to output warnings, unless one defines
+ * a deprecated variable and uses it, e.g.
+ * MPFR_DEPRECATED extern int mpfr_deprecated_feature;
+ * #define MPFR_EMIN_MIN ((void)mpfr_deprecated_feature,mpfr_get_emin_min())
+ * (the cast to void avoids a warning because the left-hand operand
+ * has no effect).
+ */
+#define mpfr_cmp_abs mpfr_cmpabs
+#define mpfr_round_prec(x,r,p) mpfr_prec_round(x,p,r)
+#define __gmp_default_rounding_mode (mpfr_get_default_rounding_mode())
+#define __mpfr_emin (mpfr_get_emin())
+#define __mpfr_emax (mpfr_get_emax())
+#define __mpfr_default_fp_bit_precision (mpfr_get_default_fp_bit_precision())
+#define MPFR_EMIN_MIN mpfr_get_emin_min()
+#define MPFR_EMIN_MAX mpfr_get_emin_max()
+#define MPFR_EMAX_MIN mpfr_get_emax_min()
+#define MPFR_EMAX_MAX mpfr_get_emax_max()
+#define mpfr_version (mpfr_get_version())
+#ifndef mpz_set_fr
+# define mpz_set_fr mpfr_get_z
+#endif
+#define mpfr_add_one_ulp(x,r) \
+ (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
+#define mpfr_sub_one_ulp(x,r) \
+ (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))
+#define mpfr_get_z_exp mpfr_get_z_2exp
+#define mpfr_custom_get_mantissa mpfr_custom_get_significand
+
+#endif /* __MPFR_H */
+
+
+/* Check if <stdint.h> / <inttypes.h> is included or if the user
+ explicitly wants intmax_t. Automatical detection is done by
+ checking:
+ - INTMAX_C and UINTMAX_C, but not if the compiler is a C++ one
+ (as suggested by Patrick Pelissier) because the test does not
+ work well in this case. See:
+ https://sympa.inria.fr/sympa/arc/mpfr/2010-02/msg00025.html
+ We do not check INTMAX_MAX and UINTMAX_MAX because under Solaris,
+ these macros are always defined by <limits.h> (i.e. even when
+ <stdint.h> and <inttypes.h> are not included).
+ - _STDINT_H (defined by the glibc), _STDINT_H_ (defined under
+ Mac OS X) and _STDINT (defined under MS Visual Studio), but
+ this test may not work with all implementations.
+ Portable software should not rely on these tests.
+*/
+#if (defined (INTMAX_C) && defined (UINTMAX_C) && !defined(__cplusplus)) || \
+ defined (MPFR_USE_INTMAX_T) || \
+ defined (_STDINT_H) || defined (_STDINT_H_) || defined (_STDINT)
+# ifndef _MPFR_H_HAVE_INTMAX_T
+# define _MPFR_H_HAVE_INTMAX_T 1
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+#define mpfr_set_sj __gmpfr_set_sj
+#define mpfr_set_sj_2exp __gmpfr_set_sj_2exp
+#define mpfr_set_uj __gmpfr_set_uj
+#define mpfr_set_uj_2exp __gmpfr_set_uj_2exp
+#define mpfr_get_sj __gmpfr_mpfr_get_sj
+#define mpfr_get_uj __gmpfr_mpfr_get_uj
+__MPFR_DECLSPEC int mpfr_set_sj _MPFR_PROTO ((mpfr_t, intmax_t, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_sj_2exp _MPFR_PROTO ((mpfr_t, intmax_t, intmax_t, mpfr_rnd_t));
+__MPFR_DECLSPEC int mpfr_set_uj _MPFR_PROTO ((mpfr_t, uintmax_t, mpfr_rnd_t));
+__MPFR_DECLSPEC int
+ mpfr_set_uj_2exp _MPFR_PROTO ((mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t));
+__MPFR_DECLSPEC intmax_t mpfr_get_sj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
+__MPFR_DECLSPEC uintmax_t mpfr_get_uj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
+
+#if defined (__cplusplus)
+}
+#endif
+
+# endif /* _MPFR_H_HAVE_INTMAX_T */
+#endif
+
+
+/* Check if <stdio.h> has been included or if the user wants FILE */
+#if defined (_GMP_H_HAVE_FILE) || defined (MPFR_USE_FILE)
+# ifndef _MPFR_H_HAVE_FILE
+# define _MPFR_H_HAVE_FILE 1
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+#define mpfr_inp_str __gmpfr_inp_str
+#define mpfr_out_str __gmpfr_out_str
+__MPFR_DECLSPEC size_t mpfr_inp_str _MPFR_PROTO ((mpfr_ptr, FILE*, int,
+ mpfr_rnd_t));
+__MPFR_DECLSPEC size_t mpfr_out_str _MPFR_PROTO ((FILE*, int, size_t,
+ mpfr_srcptr, mpfr_rnd_t));
+#define mpfr_fprintf __gmpfr_fprintf
+__MPFR_DECLSPEC int mpfr_fprintf _MPFR_PROTO ((FILE*, __gmp_const char*,
+ ...));
+
+#if defined (__cplusplus)
+}
+#endif
+
+# endif /* _MPFR_H_HAVE_FILE */
+#endif
+
+
+/* check if <stdarg.h> has been included or if the user wants va_list */
+#if defined (_GMP_H_HAVE_VA_LIST) || defined (MPFR_USE_VA_LIST)
+# ifndef _MPFR_H_HAVE_VA_LIST
+# define _MPFR_H_HAVE_VA_LIST 1
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+#define mpfr_vprintf __gmpfr_vprintf
+#define mpfr_vasprintf __gmpfr_vasprintf
+#define mpfr_vsprintf __gmpfr_vsprintf
+#define mpfr_vsnprintf __gmpfr_vsnprintf
+__MPFR_DECLSPEC int mpfr_vprintf _MPFR_PROTO ((__gmp_const char*, va_list));
+__MPFR_DECLSPEC int mpfr_vasprintf _MPFR_PROTO ((char**, __gmp_const char*,
+ va_list));
+__MPFR_DECLSPEC int mpfr_vsprintf _MPFR_PROTO ((char*, __gmp_const char*,
+ va_list));
+__MPFR_DECLSPEC int mpfr_vsnprintf _MPFR_PROTO ((char*, size_t,
+ __gmp_const char*, va_list));
+
+#if defined (__cplusplus)
+}
+#endif
+
+# endif /* _MPFR_H_HAVE_VA_LIST */
+#endif
+
+
+/* check if <stdarg.h> has been included and if FILE is available
+ (see above) */
+#if defined (_MPFR_H_HAVE_VA_LIST) && defined (_MPFR_H_HAVE_FILE)
+# ifndef _MPFR_H_HAVE_VA_LIST_FILE
+# define _MPFR_H_HAVE_VA_LIST_FILE 1
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+#define mpfr_vfprintf __gmpfr_vfprintf
+__MPFR_DECLSPEC int mpfr_vfprintf _MPFR_PROTO ((FILE*, __gmp_const char*,
+ va_list));
+
+#if defined (__cplusplus)
+}
+#endif
+
+# endif /* _MPFR_H_HAVE_VA_LIST_FILE */
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mpn_exp.c b/Build/source/libs/mpfr/mpfr-src/src/mpn_exp.c
new file mode 100644
index 00000000000..a1d38667f5b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mpn_exp.c
@@ -0,0 +1,174 @@
+/* mpfr_mpn_exp -- auxiliary function for mpfr_get_str and mpfr_set_str
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* this function computes an approximation of b^e in {a, n}, with exponent
+ stored in exp_r. The computed value is rounded toward zero (truncated).
+ It returns an integer f such that the final error is bounded by 2^f ulps,
+ that is:
+ a*2^exp_r <= b^e <= 2^exp_r (a + 2^f),
+ where a represents {a, n}, i.e. the integer
+ a[0] + a[1]*B + ... + a[n-1]*B^(n-1) where B=2^GMP_NUMB_BITS
+
+ Return -1 is the result is exact.
+ Return -2 if an overflow occurred in the computation of exp_r.
+*/
+
+long
+mpfr_mpn_exp (mp_limb_t *a, mpfr_exp_t *exp_r, int b, mpfr_exp_t e, size_t n)
+{
+ mp_limb_t *c, B;
+ mpfr_exp_t f, h;
+ int i;
+ unsigned long t; /* number of bits in e */
+ unsigned long bits;
+ size_t n1;
+ unsigned int error; /* (number - 1) of loop a^2b inexact */
+ /* error == t means no error */
+ int err_s_a2 = 0;
+ int err_s_ab = 0; /* number of error when shift A^2, AB */
+ MPFR_TMP_DECL(marker);
+
+ MPFR_ASSERTN(e > 0);
+ MPFR_ASSERTN((2 <= b) && (b <= 62));
+
+ MPFR_TMP_MARK(marker);
+
+ /* initialization of a, b, f, h */
+
+ /* normalize the base */
+ B = (mp_limb_t) b;
+ count_leading_zeros (h, B);
+
+ bits = GMP_NUMB_BITS - h;
+
+ B = B << h;
+ h = - h;
+
+ /* allocate space for A and set it to B */
+ c = MPFR_TMP_LIMBS_ALLOC (2 * n);
+ a [n - 1] = B;
+ MPN_ZERO (a, n - 1);
+ /* initial exponent for A: invariant is A = {a, n} * 2^f */
+ f = h - (n - 1) * GMP_NUMB_BITS;
+
+ /* determine number of bits in e */
+ count_leading_zeros (t, (mp_limb_t) e);
+
+ t = GMP_NUMB_BITS - t; /* number of bits of exponent e */
+
+ error = t; /* error <= GMP_NUMB_BITS */
+
+ MPN_ZERO (c, 2 * n);
+
+ for (i = t - 2; i >= 0; i--)
+ {
+
+ /* determine precision needed */
+ bits = n * GMP_NUMB_BITS - mpn_scan1 (a, 0);
+ n1 = (n * GMP_NUMB_BITS - bits) / GMP_NUMB_BITS;
+
+ /* square of A : {c+2n1, 2(n-n1)} = {a+n1, n-n1}^2 */
+ mpn_sqr_n (c + 2 * n1, a + n1, n - n1);
+
+ /* set {c+n, 2n1-n} to 0 : {c, n} = {a, n}^2*K^n */
+
+ /* check overflow on f */
+ if (MPFR_UNLIKELY(f < MPFR_EXP_MIN/2 || f > MPFR_EXP_MAX/2))
+ {
+ overflow:
+ MPFR_TMP_FREE(marker);
+ return -2;
+ }
+ /* FIXME: Could f = 2*f + n * GMP_NUMB_BITS be used? */
+ f = 2*f;
+ MPFR_SADD_OVERFLOW (f, f, n * GMP_NUMB_BITS,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto overflow, goto overflow);
+ if ((c[2*n - 1] & MPFR_LIMB_HIGHBIT) == 0)
+ {
+ /* shift A by one bit to the left */
+ mpn_lshift (a, c + n, n, 1);
+ a[0] |= mpn_lshift (c + n - 1, c + n - 1, 1, 1);
+ f --;
+ if (error != t)
+ err_s_a2 ++;
+ }
+ else
+ MPN_COPY (a, c + n, n);
+
+ if ((error == t) && (2 * n1 <= n) &&
+ (mpn_scan1 (c + 2 * n1, 0) < (n - 2 * n1) * GMP_NUMB_BITS))
+ error = i;
+
+ if (e & ((mpfr_exp_t) 1 << i))
+ {
+ /* multiply A by B */
+ c[2 * n - 1] = mpn_mul_1 (c + n - 1, a, n, B);
+ f += h + GMP_NUMB_BITS;
+ if ((c[2 * n - 1] & MPFR_LIMB_HIGHBIT) == 0)
+ { /* shift A by one bit to the left */
+ mpn_lshift (a, c + n, n, 1);
+ a[0] |= mpn_lshift (c + n - 1, c + n - 1, 1, 1);
+ f --;
+ }
+ else
+ {
+ MPN_COPY (a, c + n, n);
+ if (error != t)
+ err_s_ab ++;
+ }
+ if ((error == t) && (c[n - 1] != 0))
+ error = i;
+ }
+ }
+
+ MPFR_TMP_FREE(marker);
+
+ *exp_r = f;
+
+ if (error == t)
+ return -1; /* result is exact */
+ else /* error <= t-2 <= GMP_NUMB_BITS-2
+ err_s_ab, err_s_a2 <= t-1 */
+ {
+ /* if there are p loops after the first inexact result, with
+ j shifts in a^2 and l shifts in a*b, then the final error is
+ at most 2^(p+ceil((j+1)/2)+l+1)*ulp(res).
+ This is bounded by 2^(5/2*t-1/2) where t is the number of bits of e.
+ */
+ error = error + err_s_ab + err_s_a2 / 2 + 3; /* <= 5t/2-1/2 */
+#if 0
+ if ((error - 1) >= ((n * GMP_NUMB_BITS - 1) / 2))
+ error = n * GMP_NUMB_BITS; /* result is completely wrong:
+ this is very unlikely since error is
+ at most 5/2*log_2(e), and
+ n * GMP_NUMB_BITS is at least
+ 3*log_2(e) */
+#endif
+ return error;
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mul.c b/Build/source/libs/mpfr/mpfr-src/src/mul.c
new file mode 100644
index 00000000000..a67f774df86
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mul.c
@@ -0,0 +1,547 @@
+/* mpfr_mul -- multiply two floating-point numbers
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+
+/********* BEGINNING CHECK *************/
+
+/* Check if we have to check the result of mpfr_mul.
+ TODO: Find a better (and faster?) check than using old implementation */
+#ifdef MPFR_WANT_ASSERT
+# if MPFR_WANT_ASSERT >= 3
+
+int mpfr_mul2 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode);
+static int
+mpfr_mul3 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ /* Old implementation */
+ int sign_product, cc, inexact;
+ mpfr_exp_t ax;
+ mp_limb_t *tmp;
+ mp_limb_t b1;
+ mpfr_prec_t bq, cq;
+ mp_size_t bn, cn, tn, k;
+ MPFR_TMP_DECL(marker);
+
+ /* deal with special cases */
+ if (MPFR_ARE_SINGULAR(b,c))
+ {
+ if (MPFR_IS_NAN(b) || MPFR_IS_NAN(c))
+ {
+ MPFR_SET_NAN(a);
+ MPFR_RET_NAN;
+ }
+ sign_product = MPFR_MULT_SIGN( MPFR_SIGN(b) , MPFR_SIGN(c) );
+ if (MPFR_IS_INF(b))
+ {
+ if (MPFR_IS_INF(c) || MPFR_NOTZERO(c))
+ {
+ MPFR_SET_SIGN(a,sign_product);
+ MPFR_SET_INF(a);
+ MPFR_RET(0); /* exact */
+ }
+ else
+ {
+ MPFR_SET_NAN(a);
+ MPFR_RET_NAN;
+ }
+ }
+ else if (MPFR_IS_INF(c))
+ {
+ if (MPFR_NOTZERO(b))
+ {
+ MPFR_SET_SIGN(a, sign_product);
+ MPFR_SET_INF(a);
+ MPFR_RET(0); /* exact */
+ }
+ else
+ {
+ MPFR_SET_NAN(a);
+ MPFR_RET_NAN;
+ }
+ }
+ else
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(b) || MPFR_IS_ZERO(c));
+ MPFR_SET_SIGN(a, sign_product);
+ MPFR_SET_ZERO(a);
+ MPFR_RET(0); /* 0 * 0 is exact */
+ }
+ }
+ sign_product = MPFR_MULT_SIGN( MPFR_SIGN(b) , MPFR_SIGN(c) );
+
+ ax = MPFR_GET_EXP (b) + MPFR_GET_EXP (c);
+
+ bq = MPFR_PREC (b);
+ cq = MPFR_PREC (c);
+
+ MPFR_ASSERTN ((mpfr_uprec_t) bq + cq <= MPFR_PREC_MAX);
+
+ bn = MPFR_PREC2LIMBS (bq); /* number of limbs of b */
+ cn = MPFR_PREC2LIMBS (cq); /* number of limbs of c */
+ k = bn + cn; /* effective nb of limbs used by b*c (= tn or tn+1) below */
+ tn = MPFR_PREC2LIMBS (bq + cq);
+ /* <= k, thus no int overflow */
+ MPFR_ASSERTD(tn <= k);
+
+ /* Check for no size_t overflow*/
+ MPFR_ASSERTD((size_t) k <= ((size_t) -1) / MPFR_BYTES_PER_MP_LIMB);
+ MPFR_TMP_MARK(marker);
+ tmp = MPFR_TMP_LIMBS_ALLOC (k);
+
+ /* multiplies two mantissa in temporary allocated space */
+ b1 = (MPFR_LIKELY(bn >= cn)) ?
+ mpn_mul (tmp, MPFR_MANT(b), bn, MPFR_MANT(c), cn)
+ : mpn_mul (tmp, MPFR_MANT(c), cn, MPFR_MANT(b), bn);
+
+ /* now tmp[0]..tmp[k-1] contains the product of both mantissa,
+ with tmp[k-1]>=2^(GMP_NUMB_BITS-2) */
+ b1 >>= GMP_NUMB_BITS - 1; /* msb from the product */
+
+ /* if the mantissas of b and c are uniformly distributed in ]1/2, 1],
+ then their product is in ]1/4, 1/2] with probability 2*ln(2)-1 ~ 0.386
+ and in [1/2, 1] with probability 2-2*ln(2) ~ 0.614 */
+ tmp += k - tn;
+ if (MPFR_UNLIKELY(b1 == 0))
+ mpn_lshift (tmp, tmp, tn, 1); /* tn <= k, so no stack corruption */
+ cc = mpfr_round_raw (MPFR_MANT (a), tmp, bq + cq,
+ MPFR_IS_NEG_SIGN(sign_product),
+ MPFR_PREC (a), rnd_mode, &inexact);
+
+ /* cc = 1 ==> result is a power of two */
+ if (MPFR_UNLIKELY(cc))
+ MPFR_MANT(a)[MPFR_LIMB_SIZE(a)-1] = MPFR_LIMB_HIGHBIT;
+
+ MPFR_TMP_FREE(marker);
+
+ {
+ mpfr_exp_t ax2 = ax + (mpfr_exp_t) (b1 - 1 + cc);
+ if (MPFR_UNLIKELY( ax2 > __gmpfr_emax))
+ return mpfr_overflow (a, rnd_mode, sign_product);
+ if (MPFR_UNLIKELY( ax2 < __gmpfr_emin))
+ {
+ /* In the rounding to the nearest mode, if the exponent of the exact
+ result (i.e. before rounding, i.e. without taking cc into account)
+ is < __gmpfr_emin - 1 or the exact result is a power of 2 (i.e. if
+ both arguments are powers of 2) in absolute value, then round to
+ zero. */
+ if (rnd_mode == MPFR_RNDN &&
+ (ax + (mpfr_exp_t) b1 < __gmpfr_emin ||
+ (mpfr_powerof2_raw (b) && mpfr_powerof2_raw (c))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (a, rnd_mode, sign_product);
+ }
+ MPFR_SET_EXP (a, ax2);
+ MPFR_SET_SIGN(a, sign_product);
+ }
+ MPFR_RET (inexact);
+}
+
+int
+mpfr_mul (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t ta, tb, tc;
+ int inexact1, inexact2;
+
+ mpfr_init2 (ta, MPFR_PREC (a));
+ mpfr_init2 (tb, MPFR_PREC (b));
+ mpfr_init2 (tc, MPFR_PREC (c));
+ MPFR_ASSERTN (mpfr_set (tb, b, MPFR_RNDN) == 0);
+ MPFR_ASSERTN (mpfr_set (tc, c, MPFR_RNDN) == 0);
+
+ inexact2 = mpfr_mul3 (ta, tb, tc, rnd_mode);
+ inexact1 = mpfr_mul2 (a, b, c, rnd_mode);
+ if (mpfr_cmp (ta, a) || inexact1*inexact2 < 0
+ || (inexact1*inexact2 == 0 && (inexact1|inexact2) != 0))
+ {
+ fprintf (stderr, "mpfr_mul return different values for %s\n"
+ "Prec_a = %lu, Prec_b = %lu, Prec_c = %lu\nB = ",
+ mpfr_print_rnd_mode (rnd_mode),
+ MPFR_PREC (a), MPFR_PREC (b), MPFR_PREC (c));
+ mpfr_out_str (stderr, 16, 0, tb, MPFR_RNDN);
+ fprintf (stderr, "\nC = ");
+ mpfr_out_str (stderr, 16, 0, tc, MPFR_RNDN);
+ fprintf (stderr, "\nOldMul: ");
+ mpfr_out_str (stderr, 16, 0, ta, MPFR_RNDN);
+ fprintf (stderr, "\nNewMul: ");
+ mpfr_out_str (stderr, 16, 0, a, MPFR_RNDN);
+ fprintf (stderr, "\nNewInexact = %d | OldInexact = %d\n",
+ inexact1, inexact2);
+ MPFR_ASSERTN(0);
+ }
+
+ mpfr_clears (ta, tb, tc, (mpfr_ptr) 0);
+ return inexact1;
+}
+
+# define mpfr_mul mpfr_mul2
+# endif
+#endif
+
+/****** END OF CHECK *******/
+
+/* Multiply 2 mpfr_t */
+
+/* Note: mpfr_sqr will call mpfr_mul if bn > MPFR_SQR_THRESHOLD,
+ in order to use Mulders' mulhigh, which is handled only here
+ to avoid partial code duplication. There is some overhead due
+ to the additional tests, but slowdown should not be noticeable
+ as this code is not executed in very small precisions. */
+
+int
+mpfr_mul (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ int sign, inexact;
+ mpfr_exp_t ax, ax2;
+ mp_limb_t *tmp;
+ mp_limb_t b1;
+ mpfr_prec_t bq, cq;
+ mp_size_t bn, cn, tn, k, threshold;
+ MPFR_TMP_DECL (marker);
+
+ MPFR_LOG_FUNC
+ (("b[%Pu]=%.*Rg c[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (b), mpfr_log_prec, b,
+ mpfr_get_prec (c), mpfr_log_prec, c, rnd_mode),
+ ("a[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (a), mpfr_log_prec, a, inexact));
+
+ /* deal with special cases */
+ if (MPFR_ARE_SINGULAR (b, c))
+ {
+ if (MPFR_IS_NAN (b) || MPFR_IS_NAN (c))
+ {
+ MPFR_SET_NAN (a);
+ MPFR_RET_NAN;
+ }
+ sign = MPFR_MULT_SIGN (MPFR_SIGN (b), MPFR_SIGN (c));
+ if (MPFR_IS_INF (b))
+ {
+ if (!MPFR_IS_ZERO (c))
+ {
+ MPFR_SET_SIGN (a, sign);
+ MPFR_SET_INF (a);
+ MPFR_RET (0);
+ }
+ else
+ {
+ MPFR_SET_NAN (a);
+ MPFR_RET_NAN;
+ }
+ }
+ else if (MPFR_IS_INF (c))
+ {
+ if (!MPFR_IS_ZERO (b))
+ {
+ MPFR_SET_SIGN (a, sign);
+ MPFR_SET_INF (a);
+ MPFR_RET(0);
+ }
+ else
+ {
+ MPFR_SET_NAN (a);
+ MPFR_RET_NAN;
+ }
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO(b) || MPFR_IS_ZERO(c));
+ MPFR_SET_SIGN (a, sign);
+ MPFR_SET_ZERO (a);
+ MPFR_RET (0);
+ }
+ }
+ sign = MPFR_MULT_SIGN (MPFR_SIGN (b), MPFR_SIGN (c));
+
+ ax = MPFR_GET_EXP (b) + MPFR_GET_EXP (c);
+ /* Note: the exponent of the exact result will be e = bx + cx + ec with
+ ec in {-1,0,1} and the following assumes that e is representable. */
+
+ /* FIXME: Useful since we do an exponent check after ?
+ * It is useful iff the precision is big, there is an overflow
+ * and we are doing further mults...*/
+#ifdef HUGE
+ if (MPFR_UNLIKELY (ax > __gmpfr_emax + 1))
+ return mpfr_overflow (a, rnd_mode, sign);
+ if (MPFR_UNLIKELY (ax < __gmpfr_emin - 2))
+ return mpfr_underflow (a, rnd_mode == MPFR_RNDN ? MPFR_RNDZ : rnd_mode,
+ sign);
+#endif
+
+ bq = MPFR_PREC (b);
+ cq = MPFR_PREC (c);
+
+ MPFR_ASSERTN ((mpfr_uprec_t) bq + cq <= MPFR_PREC_MAX);
+
+ bn = MPFR_PREC2LIMBS (bq); /* number of limbs of b */
+ cn = MPFR_PREC2LIMBS (cq); /* number of limbs of c */
+ k = bn + cn; /* effective nb of limbs used by b*c (= tn or tn+1) below */
+ tn = MPFR_PREC2LIMBS (bq + cq);
+ MPFR_ASSERTD (tn <= k); /* tn <= k, thus no int overflow */
+
+ /* Check for no size_t overflow*/
+ MPFR_ASSERTD ((size_t) k <= ((size_t) -1) / MPFR_BYTES_PER_MP_LIMB);
+ MPFR_TMP_MARK (marker);
+ tmp = MPFR_TMP_LIMBS_ALLOC (k);
+
+ /* multiplies two mantissa in temporary allocated space */
+ if (MPFR_UNLIKELY (bn < cn))
+ {
+ mpfr_srcptr z = b;
+ mp_size_t zn = bn;
+ b = c;
+ bn = cn;
+ c = z;
+ cn = zn;
+ }
+ MPFR_ASSERTD (bn >= cn);
+ if (MPFR_LIKELY (bn <= 2))
+ {
+ if (bn == 1)
+ {
+ /* 1 limb * 1 limb */
+ umul_ppmm (tmp[1], tmp[0], MPFR_MANT (b)[0], MPFR_MANT (c)[0]);
+ b1 = tmp[1];
+ }
+ else if (MPFR_UNLIKELY (cn == 1))
+ {
+ /* 2 limbs * 1 limb */
+ mp_limb_t t;
+ umul_ppmm (tmp[1], tmp[0], MPFR_MANT (b)[0], MPFR_MANT (c)[0]);
+ umul_ppmm (tmp[2], t, MPFR_MANT (b)[1], MPFR_MANT (c)[0]);
+ add_ssaaaa (tmp[2], tmp[1], tmp[2], tmp[1], 0, t);
+ b1 = tmp[2];
+ }
+ else
+ {
+ /* 2 limbs * 2 limbs */
+ mp_limb_t t1, t2, t3;
+ /* First 2 limbs * 1 limb */
+ umul_ppmm (tmp[1], tmp[0], MPFR_MANT (b)[0], MPFR_MANT (c)[0]);
+ umul_ppmm (tmp[2], t1, MPFR_MANT (b)[1], MPFR_MANT (c)[0]);
+ add_ssaaaa (tmp[2], tmp[1], tmp[2], tmp[1], 0, t1);
+ /* Second, the other 2 limbs * 1 limb product */
+ umul_ppmm (t1, t2, MPFR_MANT (b)[0], MPFR_MANT (c)[1]);
+ umul_ppmm (tmp[3], t3, MPFR_MANT (b)[1], MPFR_MANT (c)[1]);
+ add_ssaaaa (tmp[3], t1, tmp[3], t1, 0, t3);
+ /* Sum those two partial products */
+ add_ssaaaa (tmp[2], tmp[1], tmp[2], tmp[1], t1, t2);
+ tmp[3] += (tmp[2] < t1);
+ b1 = tmp[3];
+ }
+ b1 >>= (GMP_NUMB_BITS - 1);
+ tmp += k - tn;
+ if (MPFR_UNLIKELY (b1 == 0))
+ mpn_lshift (tmp, tmp, tn, 1); /* tn <= k, so no stack corruption */
+ }
+ else
+ /* Mulders' mulhigh. This code can also be used via mpfr_sqr,
+ hence the tests b != c. */
+ if (MPFR_UNLIKELY (bn > (threshold = b != c ?
+ MPFR_MUL_THRESHOLD : MPFR_SQR_THRESHOLD)))
+ {
+ mp_limb_t *bp, *cp;
+ mp_size_t n;
+ mpfr_prec_t p;
+
+ /* First check if we can reduce the precision of b or c:
+ exact values are a nightmare for the short product trick */
+ bp = MPFR_MANT (b);
+ cp = MPFR_MANT (c);
+ MPFR_ASSERTN (threshold >= 1);
+ if (MPFR_UNLIKELY ((bp[0] == 0 && bp[1] == 0) ||
+ (cp[0] == 0 && cp[1] == 0)))
+ {
+ mpfr_t b_tmp, c_tmp;
+
+ MPFR_TMP_FREE (marker);
+ /* Check for b */
+ while (*bp == 0)
+ {
+ bp++;
+ bn--;
+ MPFR_ASSERTD (bn > 0);
+ } /* This must end since the most significant limb is != 0 */
+
+ /* Check for c too: if b ==c, will do nothing */
+ while (*cp == 0)
+ {
+ cp++;
+ cn--;
+ MPFR_ASSERTD (cn > 0);
+ } /* This must end since the most significant limb is != 0 */
+
+ /* It is not the faster way, but it is safer */
+ MPFR_SET_SAME_SIGN (b_tmp, b);
+ MPFR_SET_EXP (b_tmp, MPFR_GET_EXP (b));
+ MPFR_PREC (b_tmp) = bn * GMP_NUMB_BITS;
+ MPFR_MANT (b_tmp) = bp;
+
+ if (b != c)
+ {
+ MPFR_SET_SAME_SIGN (c_tmp, c);
+ MPFR_SET_EXP (c_tmp, MPFR_GET_EXP (c));
+ MPFR_PREC (c_tmp) = cn * GMP_NUMB_BITS;
+ MPFR_MANT (c_tmp) = cp;
+
+ /* Call again mpfr_mul with the fixed arguments */
+ return mpfr_mul (a, b_tmp, c_tmp, rnd_mode);
+ }
+ else
+ /* Call mpfr_mul instead of mpfr_sqr as the precision
+ is probably still high enough. */
+ return mpfr_mul (a, b_tmp, b_tmp, rnd_mode);
+ }
+
+ /* Compute estimated precision of mulhigh.
+ We could use `+ (n < cn) + (n < bn)' instead of `+ 2',
+ but does it worth it? */
+ n = MPFR_LIMB_SIZE (a) + 1;
+ n = MIN (n, cn);
+ MPFR_ASSERTD (n >= 1 && 2*n <= k && n <= cn && n <= bn);
+ p = n * GMP_NUMB_BITS - MPFR_INT_CEIL_LOG2 (n + 2);
+ bp += bn - n;
+ cp += cn - n;
+
+ /* Check if MulHigh can produce a roundable result.
+ We may lose 1 bit due to RNDN, 1 due to final shift. */
+ if (MPFR_UNLIKELY (MPFR_PREC (a) > p - 5))
+ {
+ if (MPFR_UNLIKELY (MPFR_PREC (a) > p - 5 + GMP_NUMB_BITS
+ || bn <= threshold + 1))
+ {
+ /* MulHigh can't produce a roundable result. */
+ MPFR_LOG_MSG (("mpfr_mulhigh can't be used (%lu VS %lu)\n",
+ MPFR_PREC (a), p));
+ goto full_multiply;
+ }
+ /* Add one extra limb to mantissa of b and c. */
+ if (bn > n)
+ bp --;
+ else
+ {
+ bp = MPFR_TMP_LIMBS_ALLOC (n + 1);
+ bp[0] = 0;
+ MPN_COPY (bp + 1, MPFR_MANT (b) + bn - n, n);
+ }
+ if (b != c)
+ {
+ if (cn > n)
+ cp --; /* FIXME: Could this happen? */
+ else
+ {
+ cp = MPFR_TMP_LIMBS_ALLOC (n + 1);
+ cp[0] = 0;
+ MPN_COPY (cp + 1, MPFR_MANT (c) + cn - n, n);
+ }
+ }
+ /* We will compute with one extra limb */
+ n++;
+ /* ceil(log2(n+2)) takes into account the lost bits due to
+ Mulders' short product */
+ p = n * GMP_NUMB_BITS - MPFR_INT_CEIL_LOG2 (n + 2);
+ /* Due to some nasty reasons we can have only 4 bits */
+ MPFR_ASSERTD (MPFR_PREC (a) <= p - 4);
+
+ if (MPFR_LIKELY (k < 2*n))
+ {
+ tmp = MPFR_TMP_LIMBS_ALLOC (2 * n);
+ tmp += 2*n-k; /* `tmp' still points to an area of `k' limbs */
+ }
+ }
+ MPFR_LOG_MSG (("Use mpfr_mulhigh (%lu VS %lu)\n", MPFR_PREC (a), p));
+ /* Compute an approximation of the product of b and c */
+ if (b != c)
+ mpfr_mulhigh_n (tmp + k - 2 * n, bp, cp, n);
+ else
+ mpfr_sqrhigh_n (tmp + k - 2 * n, bp, n);
+ /* now tmp[0]..tmp[k-1] contains the product of both mantissa,
+ with tmp[k-1]>=2^(GMP_NUMB_BITS-2) */
+ /* [VL] FIXME: This cannot be true: mpfr_mulhigh_n only
+ depends on pointers and n. As k can be arbitrarily larger,
+ the result cannot depend on k. And indeed, with GMP compiled
+ with --enable-alloca=debug, valgrind was complaining, at
+ least because MPFR_RNDRAW at the end tried to compute the
+ sticky bit even when not necessary; this problem is fixed,
+ but there's at least something wrong with the comment above. */
+ b1 = tmp[k-1] >> (GMP_NUMB_BITS - 1); /* msb from the product */
+
+ /* If the mantissas of b and c are uniformly distributed in (1/2, 1],
+ then their product is in (1/4, 1/2] with probability 2*ln(2)-1
+ ~ 0.386 and in [1/2, 1] with probability 2-2*ln(2) ~ 0.614 */
+ if (MPFR_UNLIKELY (b1 == 0))
+ /* Warning: the mpfr_mulhigh_n call above only surely affects
+ tmp[k-n-1..k-1], thus we shift only those limbs */
+ mpn_lshift (tmp + k - n - 1, tmp + k - n - 1, n + 1, 1);
+ tmp += k - tn;
+ MPFR_ASSERTD (MPFR_LIMB_MSB (tmp[tn-1]) != 0);
+
+ /* if the most significant bit b1 is zero, we have only p-1 correct
+ bits */
+ if (MPFR_UNLIKELY (!mpfr_round_p (tmp, tn, p + b1 - 1, MPFR_PREC(a)
+ + (rnd_mode == MPFR_RNDN))))
+ {
+ tmp -= k - tn; /* tmp may have changed, FIX IT!!!!! */
+ goto full_multiply;
+ }
+ }
+ else
+ {
+ full_multiply:
+ MPFR_LOG_MSG (("Use mpn_mul\n", 0));
+ b1 = mpn_mul (tmp, MPFR_MANT (b), bn, MPFR_MANT (c), cn);
+
+ /* now tmp[0]..tmp[k-1] contains the product of both mantissa,
+ with tmp[k-1]>=2^(GMP_NUMB_BITS-2) */
+ b1 >>= GMP_NUMB_BITS - 1; /* msb from the product */
+
+ /* if the mantissas of b and c are uniformly distributed in (1/2, 1],
+ then their product is in (1/4, 1/2] with probability 2*ln(2)-1
+ ~ 0.386 and in [1/2, 1] with probability 2-2*ln(2) ~ 0.614 */
+ tmp += k - tn;
+ if (MPFR_UNLIKELY (b1 == 0))
+ mpn_lshift (tmp, tmp, tn, 1); /* tn <= k, so no stack corruption */
+ }
+
+ ax2 = ax + (mpfr_exp_t) (b1 - 1);
+ MPFR_RNDRAW (inexact, a, tmp, bq+cq, rnd_mode, sign, ax2++);
+ MPFR_TMP_FREE (marker);
+ MPFR_EXP (a) = ax2; /* Can't use MPFR_SET_EXP: Expo may be out of range */
+ MPFR_SET_SIGN (a, sign);
+ if (MPFR_UNLIKELY (ax2 > __gmpfr_emax))
+ return mpfr_overflow (a, rnd_mode, sign);
+ if (MPFR_UNLIKELY (ax2 < __gmpfr_emin))
+ {
+ /* In the rounding to the nearest mode, if the exponent of the exact
+ result (i.e. before rounding, i.e. without taking cc into account)
+ is < __gmpfr_emin - 1 or the exact result is a power of 2 (i.e. if
+ both arguments are powers of 2), then round to zero. */
+ if (rnd_mode == MPFR_RNDN
+ && (ax + (mpfr_exp_t) b1 < __gmpfr_emin
+ || (mpfr_powerof2_raw (b) && mpfr_powerof2_raw (c))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (a, rnd_mode, sign);
+ }
+ MPFR_RET (inexact);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mul_2exp.c b/Build/source/libs/mpfr/mpfr-src/src/mul_2exp.c
new file mode 100644
index 00000000000..0e816801c53
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mul_2exp.c
@@ -0,0 +1,33 @@
+/* mpfr_mul_2exp -- multiply a floating-point number by a power of two
+
+Copyright 1999, 2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Obsolete function, use mpfr_mul_2ui or mpfr_mul_2si instead. */
+
+#undef mpfr_mul_2exp
+
+int
+mpfr_mul_2exp (mpfr_ptr y, mpfr_srcptr x, unsigned long int n, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_mul_2ui (y, x, n, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mul_2si.c b/Build/source/libs/mpfr/mpfr-src/src/mul_2si.c
new file mode 100644
index 00000000000..b9293e2a1f3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mul_2si.c
@@ -0,0 +1,59 @@
+/* mpfr_mul_2si -- multiply a floating-point number by a power of two
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_mul_2si (mpfr_ptr y, mpfr_srcptr x, long int n, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg n=%ld rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, n, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ return mpfr_set (y, x, rnd_mode);
+ else
+ {
+ mpfr_exp_t exp = MPFR_GET_EXP (x);
+ MPFR_SETRAW (inexact, y, x, exp, rnd_mode);
+ if (MPFR_UNLIKELY( n > 0 && (__gmpfr_emax < MPFR_EMIN_MIN + n ||
+ exp > __gmpfr_emax - n)))
+ return mpfr_overflow (y, rnd_mode, MPFR_SIGN(y));
+ else if (MPFR_UNLIKELY(n < 0 && (__gmpfr_emin > MPFR_EMAX_MAX + n ||
+ exp < __gmpfr_emin - n)))
+ {
+ if (rnd_mode == MPFR_RNDN &&
+ (__gmpfr_emin > MPFR_EMAX_MAX + (n + 1) ||
+ exp < __gmpfr_emin - (n + 1) ||
+ (inexact >= 0 && mpfr_powerof2_raw (y))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y));
+ }
+ MPFR_SET_EXP (y, exp + n);
+ }
+
+ MPFR_RET (inexact);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mul_2ui.c b/Build/source/libs/mpfr/mpfr-src/src/mul_2ui.c
new file mode 100644
index 00000000000..cf7966c8238
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mul_2ui.c
@@ -0,0 +1,66 @@
+/* mpfr_mul_2ui -- multiply a floating-point number by a power of two
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_mul_2ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int n, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg n=%lu rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, n, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ inexact = MPFR_UNLIKELY(y != x) ? mpfr_set (y, x, rnd_mode) : 0;
+
+ if (MPFR_LIKELY( MPFR_IS_PURE_FP(y)) )
+ {
+ /* n will have to be casted to long to make sure that the addition
+ and subtraction below (for overflow detection) are signed */
+ while (MPFR_UNLIKELY(n > LONG_MAX))
+ {
+ int inex2;
+
+ n -= LONG_MAX;
+ inex2 = mpfr_mul_2ui(y, y, LONG_MAX, rnd_mode);
+ if (inex2)
+ return inex2; /* overflow */
+ }
+
+ /* MPFR_EMIN_MIN + (long) n is signed and doesn't lead to an overflow;
+ the first test useful so that the real test can't lead to an
+ overflow. */
+ {
+ mpfr_exp_t exp = MPFR_GET_EXP (y);
+ if (MPFR_UNLIKELY( __gmpfr_emax < MPFR_EMIN_MIN + (long) n ||
+ exp > __gmpfr_emax - (long) n))
+ return mpfr_overflow (y, rnd_mode, MPFR_SIGN(y));
+
+ MPFR_SET_EXP (y, exp + (long) n);
+ }
+ }
+
+ return inexact;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mul_d.c b/Build/source/libs/mpfr/mpfr-src/src/mul_d.c
new file mode 100644
index 00000000000..102f71f6e7d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mul_d.c
@@ -0,0 +1,52 @@
+/* mpfr_mul_d -- multiply a multiple precision floating-point number
+ by a machine double precision float
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_mul_d (mpfr_ptr a, mpfr_srcptr b, double c, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t d;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("b[%Pu]=%.*Rg c=%.20g rnd=%d",
+ mpfr_get_prec(b), mpfr_log_prec, b, c, rnd_mode),
+ ("a[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (a), mpfr_log_prec, a, inexact));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ inexact = mpfr_set_d (d, c, rnd_mode);
+ MPFR_ASSERTN (inexact == 0);
+
+ mpfr_clear_flags ();
+ inexact = mpfr_mul (a, b, d, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+
+ mpfr_clear(d);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (a, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mul_ui.c b/Build/source/libs/mpfr/mpfr-src/src/mul_ui.c
new file mode 100644
index 00000000000..9b762d4f7da
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mul_ui.c
@@ -0,0 +1,133 @@
+/* mpfr_mul_ui -- multiply a floating-point number by a machine integer
+ mpfr_mul_si -- multiply a floating-point number by a machine integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_mul_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode)
+{
+ mp_limb_t *yp;
+ mp_size_t xn;
+ int cnt, inexact;
+ MPFR_TMP_DECL (marker);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ if (u != 0)
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0); /* infinity is exact */
+ }
+ else /* 0 * infinity */
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0); /* zero is exact */
+ }
+ }
+ else if (MPFR_UNLIKELY (u <= 1))
+ {
+ if (u < 1)
+ {
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0); /* zero is exact */
+ }
+ else
+ return mpfr_set (y, x, rnd_mode);
+ }
+ else if (MPFR_UNLIKELY (IS_POW2 (u)))
+ return mpfr_mul_2si (y, x, MPFR_INT_CEIL_LOG2 (u), rnd_mode);
+
+ yp = MPFR_MANT (y);
+ xn = MPFR_LIMB_SIZE (x);
+
+ MPFR_ASSERTD (xn < MP_SIZE_T_MAX);
+ MPFR_TMP_MARK(marker);
+ yp = MPFR_TMP_LIMBS_ALLOC (xn + 1);
+
+ MPFR_ASSERTN (u == (mp_limb_t) u);
+ yp[xn] = mpn_mul_1 (yp, MPFR_MANT (x), xn, u);
+
+ /* x * u is stored in yp[xn], ..., yp[0] */
+
+ /* since the case u=1 was treated above, we have u >= 2, thus
+ yp[xn] >= 1 since x was msb-normalized */
+ MPFR_ASSERTD (yp[xn] != 0);
+ if (MPFR_LIKELY (MPFR_LIMB_MSB (yp[xn]) == 0))
+ {
+ count_leading_zeros (cnt, yp[xn]);
+ mpn_lshift (yp, yp, xn + 1, cnt);
+ }
+ else
+ {
+ cnt = 0;
+ }
+
+ /* now yp[xn], ..., yp[0] is msb-normalized too, and has at most
+ PREC(x) + (GMP_NUMB_BITS - cnt) non-zero bits */
+ MPFR_RNDRAW (inexact, y, yp, (mpfr_prec_t) (xn + 1) * GMP_NUMB_BITS,
+ rnd_mode, MPFR_SIGN (x), cnt -- );
+
+ MPFR_TMP_FREE (marker);
+
+ cnt = GMP_NUMB_BITS - cnt;
+ if (MPFR_UNLIKELY (__gmpfr_emax < MPFR_EMAX_MIN + cnt
+ || MPFR_GET_EXP (x) > __gmpfr_emax - cnt))
+ return mpfr_overflow (y, rnd_mode, MPFR_SIGN(x));
+
+ MPFR_SET_EXP (y, MPFR_GET_EXP (x) + cnt);
+ MPFR_SET_SAME_SIGN (y, x);
+
+ MPFR_RET (inexact);
+}
+
+int mpfr_mul_si (mpfr_ptr y, mpfr_srcptr x, long int u, mpfr_rnd_t rnd_mode)
+{
+ int res;
+
+ if (u >= 0)
+ res = mpfr_mul_ui (y, x, u, rnd_mode);
+ else
+ {
+ res = -mpfr_mul_ui (y, x, -u, MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (y);
+ }
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/mulders.c b/Build/source/libs/mpfr/mpfr-src/src/mulders.c
new file mode 100644
index 00000000000..8f23d21b678
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/mulders.c
@@ -0,0 +1,495 @@
+/* Mulders' MulHigh function (short product)
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* References:
+ [1] Short Division of Long Integers, David Harvey and Paul Zimmermann,
+ Proceedings of the 20th Symposium on Computer Arithmetic (ARITH-20),
+ July 25-27, 2011, pages 7-14.
+*/
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#ifndef MUL_FFT_THRESHOLD
+#define MUL_FFT_THRESHOLD 8448
+#endif
+
+/* Don't use MPFR_MULHIGH_SIZE since it is handled by tuneup */
+#ifdef MPFR_MULHIGH_TAB_SIZE
+static short mulhigh_ktab[MPFR_MULHIGH_TAB_SIZE];
+#else
+static short mulhigh_ktab[] = {MPFR_MULHIGH_TAB};
+#define MPFR_MULHIGH_TAB_SIZE \
+ ((mp_size_t) (sizeof(mulhigh_ktab) / sizeof(mulhigh_ktab[0])))
+#endif
+
+/* Put in rp[n..2n-1] an approximation of the n high limbs
+ of {up, n} * {vp, n}. The error is less than n ulps of rp[n] (and the
+ approximation is always less or equal to the truncated full product).
+ Assume 2n limbs are allocated at rp.
+
+ Implements Algorithm ShortMulNaive from [1].
+*/
+static void
+mpfr_mulhigh_n_basecase (mpfr_limb_ptr rp, mpfr_limb_srcptr up,
+ mpfr_limb_srcptr vp, mp_size_t n)
+{
+ mp_size_t i;
+
+ rp += n - 1;
+ umul_ppmm (rp[1], rp[0], up[n-1], vp[0]); /* we neglect up[0..n-2]*vp[0],
+ which is less than B^n */
+ for (i = 1 ; i < n ; i++)
+ /* here, we neglect up[0..n-i-2] * vp[i], which is less than B^n too */
+ rp[i + 1] = mpn_addmul_1 (rp, up + (n - i - 1), i + 1, vp[i]);
+ /* in total, we neglect less than n*B^n, i.e., n ulps of rp[n]. */
+}
+
+/* Put in rp[0..n] the n+1 low limbs of {up, n} * {vp, n}.
+ Assume 2n limbs are allocated at rp. */
+static void
+mpfr_mullow_n_basecase (mpfr_limb_ptr rp, mpfr_limb_srcptr up,
+ mpfr_limb_srcptr vp, mp_size_t n)
+{
+ mp_size_t i;
+
+ rp[n] = mpn_mul_1 (rp, up, n, vp[0]);
+ for (i = 1 ; i < n ; i++)
+ mpn_addmul_1 (rp + i, up, n - i + 1, vp[i]);
+}
+
+/* Put in rp[n..2n-1] an approximation of the n high limbs
+ of {np, n} * {mp, n}. The error is less than n ulps of rp[n] (and the
+ approximation is always less or equal to the truncated full product).
+
+ Implements Algorithm ShortMul from [1].
+*/
+void
+mpfr_mulhigh_n (mpfr_limb_ptr rp, mpfr_limb_srcptr np, mpfr_limb_srcptr mp,
+ mp_size_t n)
+{
+ mp_size_t k;
+
+ MPFR_ASSERTN (MPFR_MULHIGH_TAB_SIZE >= 8); /* so that 3*(n/4) > n/2 */
+ k = MPFR_LIKELY (n < MPFR_MULHIGH_TAB_SIZE) ? mulhigh_ktab[n] : 3*(n/4);
+ /* Algorithm ShortMul from [1] requires k >= (n+3)/2, which translates
+ into k >= (n+4)/2 in the C language. */
+ MPFR_ASSERTD (k == -1 || k == 0 || (k >= (n+4)/2 && k < n));
+ if (k < 0)
+ mpn_mul_basecase (rp, np, n, mp, n); /* result is exact, no error */
+ else if (k == 0)
+ mpfr_mulhigh_n_basecase (rp, np, mp, n); /* basecase error < n ulps */
+ else if (n > MUL_FFT_THRESHOLD)
+ mpn_mul_n (rp, np, mp, n); /* result is exact, no error */
+ else
+ {
+ mp_size_t l = n - k;
+ mp_limb_t cy;
+
+ mpn_mul_n (rp + 2 * l, np + l, mp + l, k); /* fills rp[2l..2n-1] */
+ mpfr_mulhigh_n (rp, np + k, mp, l); /* fills rp[l-1..2l-1] */
+ cy = mpn_add_n (rp + n - 1, rp + n - 1, rp + l - 1, l + 1);
+ mpfr_mulhigh_n (rp, np, mp + k, l); /* fills rp[l-1..2l-1] */
+ cy += mpn_add_n (rp + n - 1, rp + n - 1, rp + l - 1, l + 1);
+ mpn_add_1 (rp + n + l, rp + n + l, k, cy); /* propagate carry */
+ }
+}
+
+/* Put in rp[0..n] the n+1 low limbs of {np, n} * {mp, n}.
+ Assume 2n limbs are allocated at rp. */
+void
+mpfr_mullow_n (mpfr_limb_ptr rp, mpfr_limb_srcptr np, mpfr_limb_srcptr mp,
+ mp_size_t n)
+{
+ mp_size_t k;
+
+ MPFR_ASSERTN (MPFR_MULHIGH_TAB_SIZE >= 8); /* so that 3*(n/4) > n/2 */
+ k = MPFR_LIKELY (n < MPFR_MULHIGH_TAB_SIZE) ? mulhigh_ktab[n] : 3*(n/4);
+ MPFR_ASSERTD (k == -1 || k == 0 || (2 * k >= n && k < n));
+ if (k < 0)
+ mpn_mul_basecase (rp, np, n, mp, n);
+ else if (k == 0)
+ mpfr_mullow_n_basecase (rp, np, mp, n);
+ else if (n > MUL_FFT_THRESHOLD)
+ mpn_mul_n (rp, np, mp, n);
+ else
+ {
+ mp_size_t l = n - k;
+
+ mpn_mul_n (rp, np, mp, k); /* fills rp[0..2k] */
+ mpfr_mullow_n (rp + n, np + k, mp, l); /* fills rp[n..n+2l] */
+ mpn_add_n (rp + k, rp + k, rp + n, l + 1);
+ mpfr_mullow_n (rp + n, np, mp + k, l); /* fills rp[n..n+2l] */
+ mpn_add_n (rp + k, rp + k, rp + n, l + 1);
+ }
+}
+
+#ifdef MPFR_SQRHIGH_TAB_SIZE
+static short sqrhigh_ktab[MPFR_SQRHIGH_TAB_SIZE];
+#else
+static short sqrhigh_ktab[] = {MPFR_SQRHIGH_TAB};
+#define MPFR_SQRHIGH_TAB_SIZE (sizeof(sqrhigh_ktab) / sizeof(sqrhigh_ktab[0]))
+#endif
+
+/* Put in rp[n..2n-1] an approximation of the n high limbs
+ of {np, n}^2. The error is less than n ulps of rp[n]. */
+void
+mpfr_sqrhigh_n (mpfr_limb_ptr rp, mpfr_limb_srcptr np, mp_size_t n)
+{
+ mp_size_t k;
+
+ MPFR_ASSERTN (MPFR_SQRHIGH_TAB_SIZE > 2); /* ensures k < n */
+ k = MPFR_LIKELY (n < MPFR_SQRHIGH_TAB_SIZE) ? sqrhigh_ktab[n]
+ : (n+4)/2; /* ensures that k >= (n+3)/2 */
+ MPFR_ASSERTD (k == -1 || k == 0 || (k >= (n+4)/2 && k < n));
+ if (k < 0)
+ /* we can't use mpn_sqr_basecase here, since it requires
+ n <= SQR_KARATSUBA_THRESHOLD, where SQR_KARATSUBA_THRESHOLD
+ is not exported by GMP */
+ mpn_sqr_n (rp, np, n);
+ else if (k == 0)
+ mpfr_mulhigh_n_basecase (rp, np, np, n);
+ else
+ {
+ mp_size_t l = n - k;
+ mp_limb_t cy;
+
+ mpn_sqr_n (rp + 2 * l, np + l, k); /* fills rp[2l..2n-1] */
+ mpfr_mulhigh_n (rp, np, np + k, l); /* fills rp[l-1..2l-1] */
+ /* {rp+n-1,l+1} += 2 * {rp+l-1,l+1} */
+ cy = mpn_lshift (rp + l - 1, rp + l - 1, l + 1, 1);
+ cy += mpn_add_n (rp + n - 1, rp + n - 1, rp + l - 1, l + 1);
+ mpn_add_1 (rp + n + l, rp + n + l, k, cy); /* propagate carry */
+ }
+}
+
+#ifdef MPFR_DIVHIGH_TAB_SIZE
+static short divhigh_ktab[MPFR_DIVHIGH_TAB_SIZE];
+#else
+static short divhigh_ktab[] = {MPFR_DIVHIGH_TAB};
+#define MPFR_DIVHIGH_TAB_SIZE (sizeof(divhigh_ktab) / sizeof(divhigh_ktab[0]))
+#endif
+
+#ifndef __GMPFR_GMP_H__
+#define mpfr_pi1_t gmp_pi1_t /* with a GMP build */
+#endif
+
+#if !(defined(WANT_GMP_INTERNALS) && defined(HAVE___GMPN_SBPI1_DIVAPPR_Q))
+/* Put in Q={qp, n} an approximation of N={np, 2*n} divided by D={dp, n},
+ with the most significant limb of the quotient as return value (0 or 1).
+ Assumes the most significant bit of D is set. Clobbers N.
+
+ The approximate quotient Q satisfies - 2(n-1) < N/D - Q <= 4.
+*/
+static mp_limb_t
+mpfr_divhigh_n_basecase (mpfr_limb_ptr qp, mpfr_limb_ptr np,
+ mpfr_limb_srcptr dp, mp_size_t n)
+{
+ mp_limb_t qh, d1, d0, dinv, q2, q1, q0;
+ mpfr_pi1_t dinv2;
+
+ np += n;
+
+ if ((qh = (mpn_cmp (np, dp, n) >= 0)))
+ mpn_sub_n (np, np, dp, n);
+
+ /* now {np, n} is less than D={dp, n}, which implies np[n-1] <= dp[n-1] */
+
+ d1 = dp[n - 1];
+
+ if (n == 1)
+ {
+ invert_limb (dinv, d1);
+ umul_ppmm (q1, q0, np[0], dinv);
+ qp[0] = np[0] + q1;
+ return qh;
+ }
+
+ /* now n >= 2 */
+ d0 = dp[n - 2];
+ invert_pi1 (dinv2, d1, d0);
+ /* dinv2.inv32 = floor ((B^3 - 1) / (d0 + d1 B)) - B */
+ while (n > 1)
+ {
+ /* Invariant: it remains to reduce n limbs from N (in addition to the
+ initial low n limbs).
+ Since n >= 2 here, necessarily we had n >= 2 initially, which means
+ that in addition to the limb np[n-1] to reduce, we have at least 2
+ extra limbs, thus accessing np[n-3] is valid. */
+
+ /* warning: we can have np[n-1]=d1 and np[n-2]=d0, but since {np,n} < D,
+ the largest possible partial quotient is B-1 */
+ if (MPFR_UNLIKELY(np[n - 1] == d1 && np[n - 2] == d0))
+ q2 = ~ (mp_limb_t) 0;
+ else
+ udiv_qr_3by2 (q2, q1, q0, np[n - 1], np[n - 2], np[n - 3],
+ d1, d0, dinv2.inv32);
+ /* since q2 = floor((np[n-1]*B^2+np[n-2]*B+np[n-3])/(d1*B+d0)),
+ we have q2 <= (np[n-1]*B^2+np[n-2]*B+np[n-3])/(d1*B+d0),
+ thus np[n-1]*B^2+np[n-2]*B+np[n-3] >= q2*(d1*B+d0)
+ and {np-1, n} >= q2*D - q2*B^(n-2) >= q2*D - B^(n-1)
+ thus {np-1, n} - (q2-1)*D >= D - B^(n-1) >= 0
+ which proves that at most one correction is needed */
+ q0 = mpn_submul_1 (np - 1, dp, n, q2);
+ if (MPFR_UNLIKELY(q0 > np[n - 1]))
+ {
+ mpn_add_n (np - 1, np - 1, dp, n);
+ q2 --;
+ }
+ qp[--n] = q2;
+ dp ++;
+ }
+
+ /* we have B+dinv2 = floor((B^3-1)/(d1*B+d0)) < B^2/d1
+ q1 = floor(np[0]*(B+dinv2)/B) <= floor(np[0]*B/d1)
+ <= floor((np[0]*B+np[1])/d1)
+ thus q1 is not larger than the true quotient.
+ q1 > np[0]*(B+dinv2)/B - 1 > np[0]*(B^3-1)/(d1*B+d0)/B - 2
+ For d1*B+d0 <> B^2/2, we have B+dinv2 = floor(B^3/(d1*B+d0))
+ thus q1 > np[0]*B^2/(d1*B+d0) - 2, i.e.,
+ (d1*B+d0)*q1 > np[0]*B^2 - 2*(d1*B+d0)
+ d1*B*q1 > np[0]*B^2 - 2*d1*B - 2*d0 - d0*q1 >= np[0]*B^2 - 2*d1*B - B^2
+ thus q1 > np[0]*B/d1 - 2 - B/d1 > np[0]*B/d1 - 4.
+
+ For d1*B+d0 = B^2/2, dinv2 = B-1 thus q1 > np[0]*(2B-1)/B - 1 >
+ np[0]*B/d1 - 2.
+
+ In all cases, if q = floor((np[0]*B+np[1])/d1), we have:
+ q - 4 <= q1 <= q
+ */
+ umul_ppmm (q1, q0, np[0], dinv2.inv32);
+ qp[0] = np[0] + q1;
+
+ return qh;
+}
+#endif
+
+/* Put in {qp, n} an approximation of N={np, 2*n} divided by D={dp, n},
+ with the most significant limb of the quotient as return value (0 or 1).
+ Assumes the most significant bit of D is set. Clobbers N.
+
+ This implements the ShortDiv algorithm from reference [1].
+*/
+#if 1
+mp_limb_t
+mpfr_divhigh_n (mpfr_limb_ptr qp, mpfr_limb_ptr np, mpfr_limb_ptr dp,
+ mp_size_t n)
+{
+ mp_size_t k, l;
+ mp_limb_t qh, cy;
+ mpfr_limb_ptr tp;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_ASSERTN (MPFR_MULHIGH_TAB_SIZE >= 15); /* so that 2*(n/3) >= (n+4)/2 */
+ k = MPFR_LIKELY (n < MPFR_DIVHIGH_TAB_SIZE) ? divhigh_ktab[n] : 2*(n/3);
+
+ if (k == 0)
+#if defined(WANT_GMP_INTERNALS) && defined(HAVE___GMPN_SBPI1_DIVAPPR_Q)
+ {
+ mpfr_pi1_t dinv2;
+ invert_pi1 (dinv2, dp[n - 1], dp[n - 2]);
+ return __gmpn_sbpi1_divappr_q (qp, np, n + n, dp, n, dinv2.inv32);
+ }
+#else /* use our own code for base-case short division */
+ return mpfr_divhigh_n_basecase (qp, np, dp, n);
+#endif
+ else if (k == n)
+ /* for k=n, we use a division with remainder (mpn_divrem),
+ which computes the exact quotient */
+ return mpn_divrem (qp, 0, np, 2 * n, dp, n);
+
+ MPFR_ASSERTD ((n+4)/2 <= k && k < n); /* bounds from [1] */
+ MPFR_TMP_MARK (marker);
+ l = n - k;
+ /* first divide the most significant 2k limbs from N by the most significant
+ k limbs of D */
+ qh = mpn_divrem (qp + l, 0, np + 2 * l, 2 * k, dp + l, k); /* exact */
+
+ /* it remains {np,2l+k} = {np,n+l} as remainder */
+
+ /* now we have to subtract high(Q1)*D0 where Q1=qh*B^k+{qp+l,k} and
+ D0={dp,l} */
+ tp = MPFR_TMP_LIMBS_ALLOC (2 * l);
+ mpfr_mulhigh_n (tp, qp + k, dp, l);
+ /* we are only interested in the upper l limbs from {tp,2l} */
+ cy = mpn_sub_n (np + n, np + n, tp + l, l);
+ if (qh)
+ cy += mpn_sub_n (np + n, np + n, dp, l);
+ while (cy > 0) /* Q1 was too large: subtract 1 to Q1 and add D to np+l */
+ {
+ qh -= mpn_sub_1 (qp + l, qp + l, k, MPFR_LIMB_ONE);
+ cy -= mpn_add_n (np + l, np + l, dp, n);
+ }
+
+ /* now it remains {np,n+l} to divide by D */
+ cy = mpfr_divhigh_n (qp, np + k, dp + k, l);
+ qh += mpn_add_1 (qp + l, qp + l, k, cy);
+ MPFR_TMP_FREE(marker);
+
+ return qh;
+}
+#else /* below is the FoldDiv(K) algorithm from [1] */
+mp_limb_t
+mpfr_divhigh_n (mpfr_limb_ptr qp, mpfr_limb_ptr np, mpfr_limb_ptr dp,
+ mp_size_t n)
+{
+ mp_size_t k, r;
+ mpfr_limb_ptr ip, tp, up;
+ mp_limb_t qh = 0, cy, cc;
+ int count;
+ MPFR_TMP_DECL(marker);
+
+#define K 3
+ if (n < K)
+ return mpn_divrem (qp, 0, np, 2 * n, dp, n);
+
+ k = (n - 1) / K + 1; /* ceil(n/K) */
+
+ MPFR_TMP_MARK (marker);
+ ip = MPFR_TMP_LIMBS_ALLOC (k + 1);
+ tp = MPFR_TMP_LIMBS_ALLOC (n + k);
+ up = MPFR_TMP_LIMBS_ALLOC (2 * (k + 1));
+ mpn_invert (ip, dp + n - (k + 1), k + 1, NULL); /* takes about 13% for n=1000 */
+ /* {ip, k+1} = floor((B^(2k+2)-1)/D - B^(k+1) where D = {dp+n-(k+1),k+1} */
+ for (r = n, cc = 0UL; r > 0;)
+ {
+ /* cc is the carry at np[n+r] */
+ MPFR_ASSERTD(cc <= 1);
+ /* FIXME: why can we have cc as large as say 8? */
+ count = 0;
+ while (cc > 0)
+ {
+ count ++;
+ MPFR_ASSERTD(count <= 1);
+ /* subtract {dp+n-r,r} from {np+n,r} */
+ cc -= mpn_sub_n (np + n, np + n, dp + n - r, r);
+ /* add 1 at qp[r] */
+ qh += mpn_add_1 (qp + r, qp + r, n - r, 1UL);
+ }
+ /* it remains r limbs to reduce, i.e., the remainder is {np, n+r} */
+ if (r < k)
+ {
+ ip += k - r;
+ k = r;
+ }
+ /* now r >= k */
+ /* qp + r - 2 * k -> up */
+ mpfr_mulhigh_n (up, np + n + r - (k + 1), ip, k + 1);
+ /* take into account the term B^k in the inverse: B^k * {np+n+r-k, k} */
+ cy = mpn_add_n (qp + r - k, up + k + 2, np + n + r - k, k);
+ /* since we need only r limbs of tp (below), it suffices to consider
+ r high limbs of dp */
+ if (r > k)
+ {
+#if 0
+ mpn_mul (tp, dp + n - r, r, qp + r - k, k);
+#else /* use a short product for the low k x k limbs */
+ /* we know the upper k limbs of the r-limb product cancel with the
+ remainder, thus we only need to compute the low r-k limbs */
+ if (r - k >= k)
+ mpn_mul (tp + k, dp + n - r + k, r - k, qp + r - k, k);
+ else /* r-k < k */
+ {
+/* #define LOW */
+#ifndef LOW
+ mpn_mul (tp + k, qp + r - k, k, dp + n - r + k, r - k);
+#else
+ mpfr_mullow_n_basecase (tp + k, qp + r - k, dp + n - r + k, r - k);
+ /* take into account qp[2r-2k] * dp[n - r + k] */
+ tp[r] += qp[2*r-2*k] * dp[n - r + k];
+#endif
+ /* tp[k..r] is filled */
+ }
+#if 0
+ mpfr_mulhigh_n (up, dp + n - r, qp + r - k, k);
+#else /* compute one more limb. FIXME: we could add one limb of dp in the
+ above, to save one mpn_addmul_1 call */
+ mpfr_mulhigh_n (up, dp + n - r, qp + r - k, k - 1); /* {up,2k-2} */
+ /* add {qp + r - k, k - 1} * dp[n-r+k-1] */
+ up[2*k-2] = mpn_addmul_1 (up + k - 1, qp + r - k, k-1, dp[n-r+k-1]);
+ /* add {dp+n-r, k} * qp[r-1] */
+ up[2*k-1] = mpn_addmul_1 (up + k - 1, dp + n - r, k, qp[r-1]);
+#endif
+#ifndef LOW
+ cc = mpn_add_n (tp + k, tp + k, up + k, k);
+ mpn_add_1 (tp + 2 * k, tp + 2 * k, r - k, cc);
+#else
+ /* update tp[k..r] */
+ if (r - k + 1 <= k)
+ mpn_add_n (tp + k, tp + k, up + k, r - k + 1);
+ else /* r - k >= k */
+ {
+ cc = mpn_add_n (tp + k, tp + k, up + k, k);
+ mpn_add_1 (tp + 2 * k, tp + 2 * k, r - 2 * k + 1, cc);
+ }
+#endif
+#endif
+ }
+ else /* last step: since we only want the quotient, no need to update,
+ just propagate the carry cy */
+ {
+ MPFR_ASSERTD(r < n);
+ if (cy > 0)
+ qh += mpn_add_1 (qp + r, qp + r, n - r, cy);
+ break;
+ }
+ /* subtract {tp, n+k} from {np+r-k, n+k}; however we only want to
+ update {np+n, n} */
+ /* we should have tp[r] = np[n+r-k] up to 1 */
+ MPFR_ASSERTD(tp[r] == np[n + r - k] || tp[r] + 1 == np[n + r - k]);
+#ifndef LOW
+ cc = mpn_sub_n (np + n - 1, np + n - 1, tp + k - 1, r + 1); /* borrow at np[n+r] */
+#else
+ cc = mpn_sub_n (np + n - 1, np + n - 1, tp + k - 1, r - k + 2);
+#endif
+ /* if cy = 1, subtract {dp, n} from {np+r, n}, thus
+ {dp+n-r,r} from {np+n,r} */
+ if (cy)
+ {
+ if (r < n)
+ cc += mpn_sub_n (np + n - 1, np + n - 1, dp + n - r - 1, r + 1);
+ else
+ cc += mpn_sub_n (np + n, np + n, dp + n - r, r);
+ /* propagate cy */
+ if (r == n)
+ qh = cy;
+ else
+ qh += mpn_add_1 (qp + r, qp + r, n - r, cy);
+ }
+ /* cc is the borrow at np[n+r] */
+ count = 0;
+ while (cc > 0) /* quotient was too large */
+ {
+ count++;
+ MPFR_ASSERTD (count <= 1);
+ cy = mpn_add_n (np + n, np + n, dp + n - (r - k), r - k);
+ cc -= mpn_add_1 (np + n + r - k, np + n + r - k, k, cy);
+ qh -= mpn_sub_1 (qp + r - k, qp + r - k, n - (r - k), 1UL);
+ }
+ r -= k;
+ cc = np[n + r];
+ }
+ MPFR_TMP_FREE(marker);
+
+ return qh;
+}
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/neg.c b/Build/source/libs/mpfr/mpfr-src/src/neg.c
new file mode 100644
index 00000000000..030d4c79abc
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/neg.c
@@ -0,0 +1,39 @@
+/* mpfr_neg -- change the sign of a floating-point number
+
+Copyright 1999-2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_neg (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_UNLIKELY(a != b))
+ return mpfr_set4 (a, b, rnd_mode, -MPFR_SIGN(b));
+ else if (MPFR_UNLIKELY(MPFR_IS_NAN (b)))
+ {
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_CHANGE_SIGN(a);
+ MPFR_RET(0);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/next.c b/Build/source/libs/mpfr/mpfr-src/src/next.c
new file mode 100644
index 00000000000..f03d3885919
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/next.c
@@ -0,0 +1,150 @@
+/* mpfr_nextabove, mpfr_nextbelow, mpfr_nexttoward -- next representable
+floating-point number
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_nexttozero (mpfr_ptr x)
+{
+ if (MPFR_UNLIKELY(MPFR_IS_INF(x)))
+ {
+ mpfr_setmax (x, __gmpfr_emax);
+ return;
+ }
+ else if (MPFR_UNLIKELY( MPFR_IS_ZERO(x) ))
+ {
+ MPFR_CHANGE_SIGN(x);
+ mpfr_setmin (x, __gmpfr_emin);
+ }
+ else
+ {
+ mp_size_t xn;
+ int sh;
+ mp_limb_t *xp;
+
+ xn = MPFR_LIMB_SIZE (x);
+ MPFR_UNSIGNED_MINUS_MODULO (sh, MPFR_PREC(x));
+ xp = MPFR_MANT(x);
+ mpn_sub_1 (xp, xp, xn, MPFR_LIMB_ONE << sh);
+ if (MPFR_UNLIKELY( MPFR_LIMB_MSB(xp[xn-1]) == 0) )
+ { /* was an exact power of two: not normalized any more */
+ mpfr_exp_t exp = MPFR_EXP (x);
+ if (MPFR_UNLIKELY(exp == __gmpfr_emin))
+ MPFR_SET_ZERO(x);
+ else
+ {
+ mp_size_t i;
+ MPFR_SET_EXP (x, exp - 1);
+ xp[0] = MP_LIMB_T_MAX << sh;
+ for (i = 1; i < xn; i++)
+ xp[i] = MP_LIMB_T_MAX;
+ }
+ }
+ }
+}
+
+void
+mpfr_nexttoinf (mpfr_ptr x)
+{
+ if (MPFR_UNLIKELY(MPFR_IS_INF(x)))
+ return;
+ else if (MPFR_UNLIKELY(MPFR_IS_ZERO(x)))
+ mpfr_setmin (x, __gmpfr_emin);
+ else
+ {
+ mp_size_t xn;
+ int sh;
+ mp_limb_t *xp;
+
+ xn = MPFR_LIMB_SIZE (x);
+ MPFR_UNSIGNED_MINUS_MODULO (sh, MPFR_PREC(x));
+ xp = MPFR_MANT(x);
+ if (MPFR_UNLIKELY( mpn_add_1 (xp, xp, xn, MPFR_LIMB_ONE << sh)) )
+ /* got 1.0000... */
+ {
+ mpfr_exp_t exp = MPFR_EXP (x);
+ if (MPFR_UNLIKELY(exp == __gmpfr_emax))
+ MPFR_SET_INF(x);
+ else
+ {
+ MPFR_SET_EXP (x, exp + 1);
+ xp[xn-1] = MPFR_LIMB_HIGHBIT;
+ }
+ }
+ }
+}
+
+void
+mpfr_nextabove (mpfr_ptr x)
+{
+ if (MPFR_UNLIKELY(MPFR_IS_NAN(x)))
+ {
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+ return;
+ }
+ if (MPFR_IS_NEG(x))
+ mpfr_nexttozero (x);
+ else
+ mpfr_nexttoinf (x);
+}
+
+void
+mpfr_nextbelow (mpfr_ptr x)
+{
+ if (MPFR_UNLIKELY(MPFR_IS_NAN(x)))
+ {
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+ return;
+ }
+
+ if (MPFR_IS_NEG(x))
+ mpfr_nexttoinf (x);
+ else
+ mpfr_nexttozero (x);
+}
+
+void
+mpfr_nexttoward (mpfr_ptr x, mpfr_srcptr y)
+{
+ int s;
+
+ if (MPFR_UNLIKELY(MPFR_IS_NAN(x)))
+ {
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+ return;
+ }
+ else if (MPFR_UNLIKELY(MPFR_IS_NAN(x) || MPFR_IS_NAN(y)))
+ {
+ MPFR_SET_NAN(x);
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+ return;
+ }
+
+ s = mpfr_cmp (x, y);
+ if (s == 0)
+ return;
+ else if (s < 0)
+ mpfr_nextabove (x);
+ else
+ mpfr_nextbelow (x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/out_str.c b/Build/source/libs/mpfr/mpfr-src/src/out_str.c
new file mode 100644
index 00000000000..046eb79f21b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/out_str.c
@@ -0,0 +1,98 @@
+/* mpfr_out_str -- output a floating-point number to a stream
+
+Copyright 1999, 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Warning! S should not contain "%". */
+#define OUT_STR_RET(S) \
+ do \
+ { \
+ int r; \
+ r = fprintf (stream, (S)); \
+ return r < 0 ? 0 : r; \
+ } \
+ while (0)
+
+size_t
+mpfr_out_str (FILE *stream, int base, size_t n_digits, mpfr_srcptr op,
+ mpfr_rnd_t rnd_mode)
+{
+ char *s, *s0;
+ size_t l;
+ mpfr_exp_t e;
+ int err;
+
+ MPFR_ASSERTN (base >= 2 && base <= 62);
+
+ /* when stream=NULL, output to stdout */
+ if (stream == NULL)
+ stream = stdout;
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (op)))
+ {
+ if (MPFR_IS_NAN (op))
+ OUT_STR_RET ("@NaN@");
+ else if (MPFR_IS_INF (op))
+ OUT_STR_RET (MPFR_IS_POS (op) ? "@Inf@" : "-@Inf@");
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (op));
+ OUT_STR_RET (MPFR_IS_POS (op) ? "0" : "-0");
+ }
+ }
+
+ s = mpfr_get_str (NULL, &e, base, n_digits, op, rnd_mode);
+
+ s0 = s;
+ /* for op=3.1416 we have s = "31416" and e = 1 */
+
+ l = strlen (s) + 1; /* size of allocated block returned by mpfr_get_str
+ - may be incorrect, as only an upper bound? */
+
+ /* outputs possible sign and significand */
+ err = (*s == '-' && fputc (*s++, stream) == EOF)
+ || fputc (*s++, stream) == EOF /* leading digit */
+ || fputc ((unsigned char) MPFR_DECIMAL_POINT, stream) == EOF
+ || fputs (s, stream) == EOF; /* trailing significand */
+ (*__gmp_free_func) (s0, l);
+ if (MPFR_UNLIKELY (err))
+ return 0;
+
+ e--; /* due to the leading digit */
+
+ /* outputs exponent */
+ if (e)
+ {
+ int r;
+
+ MPFR_ASSERTN(e >= LONG_MIN);
+ MPFR_ASSERTN(e <= LONG_MAX);
+
+ r = fprintf (stream, (base <= 10 ? "e%ld" : "@%ld"), (long) e);
+ if (MPFR_UNLIKELY (r < 0))
+ return 0;
+
+ l += r;
+ }
+
+ return l;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/pow.c b/Build/source/libs/mpfr/mpfr-src/src/pow.c
new file mode 100644
index 00000000000..33bf5442ad1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/pow.c
@@ -0,0 +1,715 @@
+/* mpfr_pow -- power function x^y
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* return non zero iff x^y is exact.
+ Assumes x and y are ordinary numbers,
+ y is not an integer, x is not a power of 2 and x is positive
+
+ If x^y is exact, it computes it and sets *inexact.
+*/
+static int
+mpfr_pow_is_exact (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y,
+ mpfr_rnd_t rnd_mode, int *inexact)
+{
+ mpz_t a, c;
+ mpfr_exp_t d, b;
+ unsigned long i;
+ int res;
+
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (y));
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (x));
+ MPFR_ASSERTD (!mpfr_integer_p (y));
+ MPFR_ASSERTD (mpfr_cmp_si_2exp (x, MPFR_INT_SIGN (x),
+ MPFR_GET_EXP (x) - 1) != 0);
+ MPFR_ASSERTD (MPFR_IS_POS (x));
+
+ if (MPFR_IS_NEG (y))
+ return 0; /* x is not a power of two => x^-y is not exact */
+
+ /* compute d such that y = c*2^d with c odd integer */
+ mpz_init (c);
+ d = mpfr_get_z_2exp (c, y);
+ i = mpz_scan1 (c, 0);
+ mpz_fdiv_q_2exp (c, c, i);
+ d += i;
+ /* now y=c*2^d with c odd */
+ /* Since y is not an integer, d is necessarily < 0 */
+ MPFR_ASSERTD (d < 0);
+
+ /* Compute a,b such that x=a*2^b */
+ mpz_init (a);
+ b = mpfr_get_z_2exp (a, x);
+ i = mpz_scan1 (a, 0);
+ mpz_fdiv_q_2exp (a, a, i);
+ b += i;
+ /* now x=a*2^b with a is odd */
+
+ for (res = 1 ; d != 0 ; d++)
+ {
+ /* a*2^b is a square iff
+ (i) a is a square when b is even
+ (ii) 2*a is a square when b is odd */
+ if (b % 2 != 0)
+ {
+ mpz_mul_2exp (a, a, 1); /* 2*a */
+ b --;
+ }
+ MPFR_ASSERTD ((b % 2) == 0);
+ if (!mpz_perfect_square_p (a))
+ {
+ res = 0;
+ goto end;
+ }
+ mpz_sqrt (a, a);
+ b = b / 2;
+ }
+ /* Now x = (a'*2^b')^(2^-d) with d < 0
+ so x^y = ((a'*2^b')^(2^-d))^(c*2^d)
+ = ((a'*2^b')^c with c odd integer */
+ {
+ mpfr_t tmp;
+ mpfr_prec_t p;
+ MPFR_MPZ_SIZEINBASE2 (p, a);
+ mpfr_init2 (tmp, p); /* prec = 1 should not be possible */
+ res = mpfr_set_z (tmp, a, MPFR_RNDN);
+ MPFR_ASSERTD (res == 0);
+ res = mpfr_mul_2si (tmp, tmp, b, MPFR_RNDN);
+ MPFR_ASSERTD (res == 0);
+ *inexact = mpfr_pow_z (z, tmp, c, rnd_mode);
+ mpfr_clear (tmp);
+ res = 1;
+ }
+ end:
+ mpz_clear (a);
+ mpz_clear (c);
+ return res;
+}
+
+/* Return 1 if y is an odd integer, 0 otherwise. */
+static int
+is_odd (mpfr_srcptr y)
+{
+ mpfr_exp_t expo;
+ mpfr_prec_t prec;
+ mp_size_t yn;
+ mp_limb_t *yp;
+
+ /* NAN, INF or ZERO are not allowed */
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (y));
+
+ expo = MPFR_GET_EXP (y);
+ if (expo <= 0)
+ return 0; /* |y| < 1 and not 0 */
+
+ prec = MPFR_PREC(y);
+ if ((mpfr_prec_t) expo > prec)
+ return 0; /* y is a multiple of 2^(expo-prec), thus not odd */
+
+ /* 0 < expo <= prec:
+ y = 1xxxxxxxxxt.zzzzzzzzzzzzzzzzzz[000]
+ expo bits (prec-expo) bits
+
+ We have to check that:
+ (a) the bit 't' is set
+ (b) all the 'z' bits are zero
+ */
+
+ prec = MPFR_PREC2LIMBS (prec) * GMP_NUMB_BITS - expo;
+ /* number of z+0 bits */
+
+ yn = prec / GMP_NUMB_BITS;
+ MPFR_ASSERTN(yn >= 0);
+ /* yn is the index of limb containing the 't' bit */
+
+ yp = MPFR_MANT(y);
+ /* if expo is a multiple of GMP_NUMB_BITS, t is bit 0 */
+ if (expo % GMP_NUMB_BITS == 0 ? (yp[yn] & 1) == 0
+ : yp[yn] << ((expo % GMP_NUMB_BITS) - 1) != MPFR_LIMB_HIGHBIT)
+ return 0;
+ while (--yn >= 0)
+ if (yp[yn] != 0)
+ return 0;
+ return 1;
+}
+
+/* Assumes that the exponent range has already been extended and if y is
+ an integer, then the result is not exact in unbounded exponent range. */
+int
+mpfr_pow_general (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y,
+ mpfr_rnd_t rnd_mode, int y_is_integer, mpfr_save_expo_t *expo)
+{
+ mpfr_t t, u, k, absx;
+ int neg_result = 0;
+ int k_non_zero = 0;
+ int check_exact_case = 0;
+ int inexact;
+ /* Declaration of the size variable */
+ mpfr_prec_t Nz = MPFR_PREC(z); /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ mpfr_exp_t err; /* error */
+ MPFR_ZIV_DECL (ziv_loop);
+
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg y[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x,
+ mpfr_get_prec (y), mpfr_log_prec, y, rnd_mode),
+ ("z[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (z), mpfr_log_prec, z, inexact));
+
+ /* We put the absolute value of x in absx, pointing to the significand
+ of x to avoid allocating memory for the significand of absx. */
+ MPFR_ALIAS(absx, x, /*sign=*/ 1, /*EXP=*/ MPFR_EXP(x));
+
+ /* We will compute the absolute value of the result. So, let's
+ invert the rounding mode if the result is negative. */
+ if (MPFR_IS_NEG (x) && is_odd (y))
+ {
+ neg_result = 1;
+ rnd_mode = MPFR_INVERT_RND (rnd_mode);
+ }
+
+ /* compute the precision of intermediary variable */
+ /* the optimal number of bits : see algorithms.tex */
+ Nt = Nz + 5 + MPFR_INT_CEIL_LOG2 (Nz);
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+
+ MPFR_ZIV_INIT (ziv_loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags1);
+
+ /* compute exp(y*ln|x|), using MPFR_RNDU to get an upper bound, so
+ that we can detect underflows. */
+ mpfr_log (t, absx, MPFR_IS_NEG (y) ? MPFR_RNDD : MPFR_RNDU); /* ln|x| */
+ mpfr_mul (t, y, t, MPFR_RNDU); /* y*ln|x| */
+ if (k_non_zero)
+ {
+ MPFR_LOG_MSG (("subtract k * ln(2)\n", 0));
+ mpfr_const_log2 (u, MPFR_RNDD);
+ mpfr_mul (u, u, k, MPFR_RNDD);
+ /* Error on u = k * log(2): < k * 2^(-Nt) < 1. */
+ mpfr_sub (t, t, u, MPFR_RNDU);
+ MPFR_LOG_MSG (("t = y * ln|x| - k * ln(2)\n", 0));
+ MPFR_LOG_VAR (t);
+ }
+ /* estimate of the error -- see pow function in algorithms.tex.
+ The error on t is at most 1/2 + 3*2^(EXP(t)+1) ulps, which is
+ <= 2^(EXP(t)+3) for EXP(t) >= -1, and <= 2 ulps for EXP(t) <= -2.
+ Additional error if k_no_zero: treal = t * errk, with
+ 1 - |k| * 2^(-Nt) <= exp(-|k| * 2^(-Nt)) <= errk <= 1,
+ i.e., additional absolute error <= 2^(EXP(k)+EXP(t)-Nt).
+ Total error <= 2^err1 + 2^err2 <= 2^(max(err1,err2)+1). */
+ err = MPFR_NOTZERO (t) && MPFR_GET_EXP (t) >= -1 ?
+ MPFR_GET_EXP (t) + 3 : 1;
+ if (k_non_zero)
+ {
+ if (MPFR_GET_EXP (k) > err)
+ err = MPFR_GET_EXP (k);
+ err++;
+ }
+ MPFR_BLOCK (flags1, mpfr_exp (t, t, MPFR_RNDN)); /* exp(y*ln|x|)*/
+ /* We need to test */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (t) || MPFR_UNDERFLOW (flags1)))
+ {
+ mpfr_prec_t Ntmin;
+ MPFR_BLOCK_DECL (flags2);
+
+ MPFR_ASSERTN (!k_non_zero);
+ MPFR_ASSERTN (!MPFR_IS_NAN (t));
+
+ /* Real underflow? */
+ if (MPFR_IS_ZERO (t))
+ {
+ /* Underflow. We computed rndn(exp(t)), where t >= y*ln|x|.
+ Therefore rndn(|x|^y) = 0, and we have a real underflow on
+ |x|^y. */
+ inexact = mpfr_underflow (z, rnd_mode == MPFR_RNDN ? MPFR_RNDZ
+ : rnd_mode, MPFR_SIGN_POS);
+ if (expo != NULL)
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (*expo, MPFR_FLAGS_INEXACT
+ | MPFR_FLAGS_UNDERFLOW);
+ break;
+ }
+
+ /* Real overflow? */
+ if (MPFR_IS_INF (t))
+ {
+ /* Note: we can probably use a low precision for this test. */
+ mpfr_log (t, absx, MPFR_IS_NEG (y) ? MPFR_RNDU : MPFR_RNDD);
+ mpfr_mul (t, y, t, MPFR_RNDD); /* y * ln|x| */
+ MPFR_BLOCK (flags2, mpfr_exp (t, t, MPFR_RNDD));
+ /* t = lower bound on exp(y * ln|x|) */
+ if (MPFR_OVERFLOW (flags2))
+ {
+ /* We have computed a lower bound on |x|^y, and it
+ overflowed. Therefore we have a real overflow
+ on |x|^y. */
+ inexact = mpfr_overflow (z, rnd_mode, MPFR_SIGN_POS);
+ if (expo != NULL)
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (*expo, MPFR_FLAGS_INEXACT
+ | MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+ }
+
+ k_non_zero = 1;
+ Ntmin = sizeof(mpfr_exp_t) * CHAR_BIT;
+ if (Ntmin > Nt)
+ {
+ Nt = Ntmin;
+ mpfr_set_prec (t, Nt);
+ }
+ mpfr_init2 (u, Nt);
+ mpfr_init2 (k, Ntmin);
+ mpfr_log2 (k, absx, MPFR_RNDN);
+ mpfr_mul (k, y, k, MPFR_RNDN);
+ mpfr_round (k, k);
+ MPFR_LOG_VAR (k);
+ /* |y| < 2^Ntmin, therefore |k| < 2^Nt. */
+ continue;
+ }
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, Nt - err, Nz, rnd_mode)))
+ {
+ inexact = mpfr_set (z, t, rnd_mode);
+ break;
+ }
+
+ /* check exact power, except when y is an integer (since the
+ exact cases for y integer have already been filtered out) */
+ if (check_exact_case == 0 && ! y_is_integer)
+ {
+ if (mpfr_pow_is_exact (z, absx, y, rnd_mode, &inexact))
+ break;
+ check_exact_case = 1;
+ }
+
+ /* reactualisation of the precision */
+ MPFR_ZIV_NEXT (ziv_loop, Nt);
+ mpfr_set_prec (t, Nt);
+ if (k_non_zero)
+ mpfr_set_prec (u, Nt);
+ }
+ MPFR_ZIV_FREE (ziv_loop);
+
+ if (k_non_zero)
+ {
+ int inex2;
+ long lk;
+
+ /* The rounded result in an unbounded exponent range is z * 2^k. As
+ * MPFR chooses underflow after rounding, the mpfr_mul_2si below will
+ * correctly detect underflows and overflows. However, in rounding to
+ * nearest, if z * 2^k = 2^(emin - 2), then the double rounding may
+ * affect the result. We need to cope with that before overwriting z.
+ * This can occur only if k < 0 (this test is necessary to avoid a
+ * potential integer overflow).
+ * If inexact >= 0, then the real result is <= 2^(emin - 2), so that
+ * o(2^(emin - 2)) = +0 is correct. If inexact < 0, then the real
+ * result is > 2^(emin - 2) and we need to round to 2^(emin - 1).
+ */
+ MPFR_ASSERTN (MPFR_EXP_MAX <= LONG_MAX);
+ lk = mpfr_get_si (k, MPFR_RNDN);
+ /* Due to early overflow detection, |k| should not be much larger than
+ * MPFR_EMAX_MAX, and as MPFR_EMAX_MAX <= MPFR_EXP_MAX/2 <= LONG_MAX/2,
+ * an overflow should not be possible in mpfr_get_si (and lk is exact).
+ * And one even has the following assertion. TODO: complete proof.
+ */
+ MPFR_ASSERTD (lk > LONG_MIN && lk < LONG_MAX);
+ /* Note: even in case of overflow (lk inexact), the code is correct.
+ * Indeed, for the 3 occurrences of lk:
+ * - The test lk < 0 is correct as sign(lk) = sign(k).
+ * - In the test MPFR_GET_EXP (z) == __gmpfr_emin - 1 - lk,
+ * if lk is inexact, then lk = LONG_MIN <= MPFR_EXP_MIN
+ * (the minimum value of the mpfr_exp_t type), and
+ * __gmpfr_emin - 1 - lk >= MPFR_EMIN_MIN - 1 - 2 * MPFR_EMIN_MIN
+ * >= - MPFR_EMIN_MIN - 1 = MPFR_EMAX_MAX - 1. However, from the
+ * choice of k, z has been chosen to be around 1, so that the
+ * result of the test is false, as if lk were exact.
+ * - In the mpfr_mul_2si (z, z, lk, rnd_mode), if lk is inexact,
+ * then |lk| >= LONG_MAX >= MPFR_EXP_MAX, and as z is around 1,
+ * mpfr_mul_2si underflows or overflows in the same way as if
+ * lk were exact.
+ * TODO: give a bound on |t|, then on |EXP(z)|.
+ */
+ if (rnd_mode == MPFR_RNDN && inexact < 0 && lk < 0 &&
+ MPFR_GET_EXP (z) == __gmpfr_emin - 1 - lk && mpfr_powerof2_raw (z))
+ {
+ /* Rounding to nearest, real result > z * 2^k = 2^(emin - 2),
+ * underflow case: as the minimum precision is > 1, we will
+ * obtain the correct result and exceptions by replacing z by
+ * nextabove(z).
+ */
+ MPFR_ASSERTN (MPFR_PREC_MIN > 1);
+ mpfr_nextabove (z);
+ }
+ mpfr_clear_flags ();
+ inex2 = mpfr_mul_2si (z, z, lk, rnd_mode);
+ if (inex2) /* underflow or overflow */
+ {
+ inexact = inex2;
+ if (expo != NULL)
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (*expo, __gmpfr_flags);
+ }
+ mpfr_clears (u, k, (mpfr_ptr) 0);
+ }
+ mpfr_clear (t);
+
+ /* update the sign of the result if x was negative */
+ if (neg_result)
+ {
+ MPFR_SET_NEG(z);
+ inexact = -inexact;
+ }
+
+ return inexact;
+}
+
+/* The computation of z = pow(x,y) is done by
+ z = exp(y * log(x)) = x^y
+ For the special cases, see Section F.9.4.4 of the C standard:
+ _ pow(±0, y) = ±inf for y an odd integer < 0.
+ _ pow(±0, y) = +inf for y < 0 and not an odd integer.
+ _ pow(±0, y) = ±0 for y an odd integer > 0.
+ _ pow(±0, y) = +0 for y > 0 and not an odd integer.
+ _ pow(-1, ±inf) = 1.
+ _ pow(+1, y) = 1 for any y, even a NaN.
+ _ pow(x, ±0) = 1 for any x, even a NaN.
+ _ pow(x, y) = NaN for finite x < 0 and finite non-integer y.
+ _ pow(x, -inf) = +inf for |x| < 1.
+ _ pow(x, -inf) = +0 for |x| > 1.
+ _ pow(x, +inf) = +0 for |x| < 1.
+ _ pow(x, +inf) = +inf for |x| > 1.
+ _ pow(-inf, y) = -0 for y an odd integer < 0.
+ _ pow(-inf, y) = +0 for y < 0 and not an odd integer.
+ _ pow(-inf, y) = -inf for y an odd integer > 0.
+ _ pow(-inf, y) = +inf for y > 0 and not an odd integer.
+ _ pow(+inf, y) = +0 for y < 0.
+ _ pow(+inf, y) = +inf for y > 0. */
+int
+mpfr_pow (mpfr_ptr z, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ int cmp_x_1;
+ int y_is_integer;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg y[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x,
+ mpfr_get_prec (y), mpfr_log_prec, y, rnd_mode),
+ ("z[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (z), mpfr_log_prec, z, inexact));
+
+ if (MPFR_ARE_SINGULAR (x, y))
+ {
+ /* pow(x, 0) returns 1 for any x, even a NaN. */
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO (y)))
+ return mpfr_set_ui (z, 1, rnd_mode);
+ else if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (z);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_NAN (y))
+ {
+ /* pow(+1, NaN) returns 1. */
+ if (mpfr_cmp_ui (x, 1) == 0)
+ return mpfr_set_ui (z, 1, rnd_mode);
+ MPFR_SET_NAN (z);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (y))
+ {
+ if (MPFR_IS_INF (x))
+ {
+ if (MPFR_IS_POS (y))
+ MPFR_SET_INF (z);
+ else
+ MPFR_SET_ZERO (z);
+ MPFR_SET_POS (z);
+ MPFR_RET (0);
+ }
+ else
+ {
+ int cmp;
+ cmp = mpfr_cmpabs (x, __gmpfr_one) * MPFR_INT_SIGN (y);
+ MPFR_SET_POS (z);
+ if (cmp > 0)
+ {
+ /* Return +inf. */
+ MPFR_SET_INF (z);
+ MPFR_RET (0);
+ }
+ else if (cmp < 0)
+ {
+ /* Return +0. */
+ MPFR_SET_ZERO (z);
+ MPFR_RET (0);
+ }
+ else
+ {
+ /* Return 1. */
+ return mpfr_set_ui (z, 1, rnd_mode);
+ }
+ }
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ int negative;
+ /* Determine the sign now, in case y and z are the same object */
+ negative = MPFR_IS_NEG (x) && is_odd (y);
+ if (MPFR_IS_POS (y))
+ MPFR_SET_INF (z);
+ else
+ MPFR_SET_ZERO (z);
+ if (negative)
+ MPFR_SET_NEG (z);
+ else
+ MPFR_SET_POS (z);
+ MPFR_RET (0);
+ }
+ else
+ {
+ int negative;
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ /* Determine the sign now, in case y and z are the same object */
+ negative = MPFR_IS_NEG(x) && is_odd (y);
+ if (MPFR_IS_NEG (y))
+ {
+ MPFR_ASSERTD (! MPFR_IS_INF (y));
+ MPFR_SET_INF (z);
+ mpfr_set_divby0 ();
+ }
+ else
+ MPFR_SET_ZERO (z);
+ if (negative)
+ MPFR_SET_NEG (z);
+ else
+ MPFR_SET_POS (z);
+ MPFR_RET (0);
+ }
+ }
+
+ /* x^y for x < 0 and y not an integer is not defined */
+ y_is_integer = mpfr_integer_p (y);
+ if (MPFR_IS_NEG (x) && ! y_is_integer)
+ {
+ MPFR_SET_NAN (z);
+ MPFR_RET_NAN;
+ }
+
+ /* now the result cannot be NaN:
+ (1) either x > 0
+ (2) or x < 0 and y is an integer */
+
+ cmp_x_1 = mpfr_cmpabs (x, __gmpfr_one);
+ if (cmp_x_1 == 0)
+ return mpfr_set_si (z, MPFR_IS_NEG (x) && is_odd (y) ? -1 : 1, rnd_mode);
+
+ /* now we have:
+ (1) either x > 0
+ (2) or x < 0 and y is an integer
+ and in addition |x| <> 1.
+ */
+
+ /* detect overflow: an overflow is possible if
+ (a) |x| > 1 and y > 0
+ (b) |x| < 1 and y < 0.
+ FIXME: this assumes 1 is always representable.
+
+ FIXME2: maybe we can test overflow and underflow simultaneously.
+ The idea is the following: first compute an approximation to
+ y * log2|x|, using rounding to nearest. If |x| is not too near from 1,
+ this approximation should be accurate enough, and in most cases enable
+ one to prove that there is no underflow nor overflow.
+ Otherwise, it should enable one to check only underflow or overflow,
+ instead of both cases as in the present case.
+ */
+ if (cmp_x_1 * MPFR_SIGN (y) > 0)
+ {
+ mpfr_t t;
+ int negative, overflow;
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpfr_init2 (t, 53);
+ /* we want a lower bound on y*log2|x|:
+ (i) if x > 0, it suffices to round log2(x) toward zero, and
+ to round y*o(log2(x)) toward zero too;
+ (ii) if x < 0, we first compute t = o(-x), with rounding toward 1,
+ and then follow as in case (1). */
+ if (MPFR_SIGN (x) > 0)
+ mpfr_log2 (t, x, MPFR_RNDZ);
+ else
+ {
+ mpfr_neg (t, x, (cmp_x_1 > 0) ? MPFR_RNDZ : MPFR_RNDU);
+ mpfr_log2 (t, t, MPFR_RNDZ);
+ }
+ mpfr_mul (t, t, y, MPFR_RNDZ);
+ overflow = mpfr_cmp_si (t, __gmpfr_emax) > 0;
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ if (overflow)
+ {
+ MPFR_LOG_MSG (("early overflow detection\n", 0));
+ negative = MPFR_SIGN(x) < 0 && is_odd (y);
+ return mpfr_overflow (z, rnd_mode, negative ? -1 : 1);
+ }
+ }
+
+ /* Basic underflow checking. One has:
+ * - if y > 0, |x^y| < 2^(EXP(x) * y);
+ * - if y < 0, |x^y| <= 2^((EXP(x) - 1) * y);
+ * so that one can compute a value ebound such that |x^y| < 2^ebound.
+ * If we have ebound <= emin - 2 (emin - 1 in directed rounding modes),
+ * then there is an underflow and we can decide the return value.
+ */
+ if (MPFR_IS_NEG (y) ? (MPFR_GET_EXP (x) > 1) : (MPFR_GET_EXP (x) < 0))
+ {
+ mpfr_t tmp;
+ mpfr_eexp_t ebound;
+ int inex2;
+
+ /* We must restore the flags. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpfr_init2 (tmp, sizeof (mpfr_exp_t) * CHAR_BIT);
+ inex2 = mpfr_set_exp_t (tmp, MPFR_GET_EXP (x), MPFR_RNDN);
+ MPFR_ASSERTN (inex2 == 0);
+ if (MPFR_IS_NEG (y))
+ {
+ inex2 = mpfr_sub_ui (tmp, tmp, 1, MPFR_RNDN);
+ MPFR_ASSERTN (inex2 == 0);
+ }
+ mpfr_mul (tmp, tmp, y, MPFR_RNDU);
+ if (MPFR_IS_NEG (y))
+ mpfr_nextabove (tmp);
+ /* tmp doesn't necessarily fit in ebound, but that doesn't matter
+ since we get the minimum value in such a case. */
+ ebound = mpfr_get_exp_t (tmp, MPFR_RNDU);
+ mpfr_clear (tmp);
+ MPFR_SAVE_EXPO_FREE (expo);
+ if (MPFR_UNLIKELY (ebound <=
+ __gmpfr_emin - (rnd_mode == MPFR_RNDN ? 2 : 1)))
+ {
+ /* warning: mpfr_underflow rounds away from 0 for MPFR_RNDN */
+ MPFR_LOG_MSG (("early underflow detection\n", 0));
+ return mpfr_underflow (z,
+ rnd_mode == MPFR_RNDN ? MPFR_RNDZ : rnd_mode,
+ MPFR_SIGN (x) < 0 && is_odd (y) ? -1 : 1);
+ }
+ }
+
+ /* If y is an integer, we can use mpfr_pow_z (based on multiplications),
+ but if y is very large (I'm not sure about the best threshold -- VL),
+ we shouldn't use it, as it can be very slow and take a lot of memory
+ (and even crash or make other programs crash, as several hundred of
+ MBs may be necessary). Note that in such a case, either x = +/-2^b
+ (this case is handled below) or x^y cannot be represented exactly in
+ any precision supported by MPFR (the general case uses this property).
+ */
+ if (y_is_integer && (MPFR_GET_EXP (y) <= 256))
+ {
+ mpz_t zi;
+
+ MPFR_LOG_MSG (("special code for y not too large integer\n", 0));
+ mpz_init (zi);
+ mpfr_get_z (zi, y, MPFR_RNDN);
+ inexact = mpfr_pow_z (z, x, zi, rnd_mode);
+ mpz_clear (zi);
+ return inexact;
+ }
+
+ /* Special case (+/-2^b)^Y which could be exact. If x is negative, then
+ necessarily y is a large integer. */
+ {
+ mpfr_exp_t b = MPFR_GET_EXP (x) - 1;
+
+ MPFR_ASSERTN (b >= LONG_MIN && b <= LONG_MAX); /* FIXME... */
+ if (mpfr_cmp_si_2exp (x, MPFR_SIGN(x), b) == 0)
+ {
+ mpfr_t tmp;
+ int sgnx = MPFR_SIGN (x);
+
+ MPFR_LOG_MSG (("special case (+/-2^b)^Y\n", 0));
+ /* now x = +/-2^b, so x^y = (+/-1)^y*2^(b*y) is exact whenever b*y is
+ an integer */
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpfr_init2 (tmp, MPFR_PREC (y) + sizeof (long) * CHAR_BIT);
+ inexact = mpfr_mul_si (tmp, y, b, MPFR_RNDN); /* exact */
+ MPFR_ASSERTN (inexact == 0);
+ /* Note: as the exponent range has been extended, an overflow is not
+ possible (due to basic overflow and underflow checking above, as
+ the result is ~ 2^tmp), and an underflow is not possible either
+ because b is an integer (thus either 0 or >= 1). */
+ mpfr_clear_flags ();
+ inexact = mpfr_exp2 (z, tmp, rnd_mode);
+ mpfr_clear (tmp);
+ if (sgnx < 0 && is_odd (y))
+ {
+ mpfr_neg (z, z, rnd_mode);
+ inexact = -inexact;
+ }
+ /* Without the following, the overflows3 test in tpow.c fails. */
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (z, inexact, rnd_mode);
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Case where |y * log(x)| is very small. Warning: x can be negative, in
+ that case y is a large integer. */
+ {
+ mpfr_t t;
+ mpfr_exp_t err;
+
+ /* We need an upper bound on the exponent of y * log(x). */
+ mpfr_init2 (t, 16);
+ if (MPFR_IS_POS(x))
+ mpfr_log (t, x, cmp_x_1 < 0 ? MPFR_RNDD : MPFR_RNDU); /* away from 0 */
+ else
+ {
+ /* if x < -1, round to +Inf, else round to zero */
+ mpfr_neg (t, x, (mpfr_cmp_si (x, -1) < 0) ? MPFR_RNDU : MPFR_RNDD);
+ mpfr_log (t, t, (mpfr_cmp_ui (t, 1) < 0) ? MPFR_RNDD : MPFR_RNDU);
+ }
+ MPFR_ASSERTN (MPFR_IS_PURE_FP (t));
+ err = MPFR_GET_EXP (y) + MPFR_GET_EXP (t);
+ mpfr_clear (t);
+ mpfr_clear_flags ();
+ MPFR_SMALL_INPUT_AFTER_SAVE_EXPO (z, __gmpfr_one, - err, 0,
+ (MPFR_SIGN (y) > 0) ^ (cmp_x_1 < 0),
+ rnd_mode, expo, {});
+ }
+
+ /* General case */
+ inexact = mpfr_pow_general (z, x, y, rnd_mode, y_is_integer, &expo);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (z, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/pow_si.c b/Build/source/libs/mpfr/mpfr-src/src/pow_si.c
new file mode 100644
index 00000000000..9ab6f82f810
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/pow_si.c
@@ -0,0 +1,250 @@
+/* mpfr_pow_si -- power function x^y with y a signed int
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* The computation of y = pow_si(x,n) is done by
+ * y = pow_ui(x,n) if n >= 0
+ * y = 1 / pow_ui(x,-n) if n < 0
+ */
+
+int
+mpfr_pow_si (mpfr_ptr y, mpfr_srcptr x, long int n, mpfr_rnd_t rnd)
+{
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg n=%ld rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, n, rnd),
+ ("y[%Pu]=%.*Rg", mpfr_get_prec (y), mpfr_log_prec, y));
+
+ if (n >= 0)
+ return mpfr_pow_ui (y, x, n, rnd);
+ else
+ {
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ int positive = MPFR_IS_POS (x) || ((unsigned long) n & 1) == 0;
+ if (MPFR_IS_INF (x))
+ MPFR_SET_ZERO (y);
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_INF (y);
+ mpfr_set_divby0 ();
+ }
+ if (positive)
+ MPFR_SET_POS (y);
+ else
+ MPFR_SET_NEG (y);
+ MPFR_RET (0);
+ }
+ }
+
+ /* detect exact powers: x^(-n) is exact iff x is a power of 2 */
+ if (mpfr_cmp_si_2exp (x, MPFR_SIGN(x), MPFR_EXP(x) - 1) == 0)
+ {
+ mpfr_exp_t expx = MPFR_EXP (x) - 1, expy;
+ MPFR_ASSERTD (n < 0);
+ /* Warning: n * expx may overflow!
+ *
+ * Some systems (apparently alpha-freebsd) abort with
+ * LONG_MIN / 1, and LONG_MIN / -1 is undefined.
+ * http://www.freebsd.org/cgi/query-pr.cgi?pr=72024
+ *
+ * Proof of the overflow checking. The expressions below are
+ * assumed to be on the rational numbers, but the word "overflow"
+ * still has its own meaning in the C context. / still denotes
+ * the integer (truncated) division, and // denotes the exact
+ * division.
+ * - First, (__gmpfr_emin - 1) / n and (__gmpfr_emax - 1) / n
+ * cannot overflow due to the constraints on the exponents of
+ * MPFR numbers.
+ * - If n = -1, then n * expx = - expx, which is representable
+ * because of the constraints on the exponents of MPFR numbers.
+ * - If expx = 0, then n * expx = 0, which is representable.
+ * - If n < -1 and expx > 0:
+ * + If expx > (__gmpfr_emin - 1) / n, then
+ * expx >= (__gmpfr_emin - 1) / n + 1
+ * > (__gmpfr_emin - 1) // n,
+ * and
+ * n * expx < __gmpfr_emin - 1,
+ * i.e.
+ * n * expx <= __gmpfr_emin - 2.
+ * This corresponds to an underflow, with a null result in
+ * the rounding-to-nearest mode.
+ * + If expx <= (__gmpfr_emin - 1) / n, then n * expx cannot
+ * overflow since 0 < expx <= (__gmpfr_emin - 1) / n and
+ * 0 > n * expx >= n * ((__gmpfr_emin - 1) / n)
+ * >= __gmpfr_emin - 1.
+ * - If n < -1 and expx < 0:
+ * + If expx < (__gmpfr_emax - 1) / n, then
+ * expx <= (__gmpfr_emax - 1) / n - 1
+ * < (__gmpfr_emax - 1) // n,
+ * and
+ * n * expx > __gmpfr_emax - 1,
+ * i.e.
+ * n * expx >= __gmpfr_emax.
+ * This corresponds to an overflow (2^(n * expx) has an
+ * exponent > __gmpfr_emax).
+ * + If expx >= (__gmpfr_emax - 1) / n, then n * expx cannot
+ * overflow since 0 > expx >= (__gmpfr_emax - 1) / n and
+ * 0 < n * expx <= n * ((__gmpfr_emax - 1) / n)
+ * <= __gmpfr_emax - 1.
+ * Note: one could use expx bounds based on MPFR_EXP_MIN and
+ * MPFR_EXP_MAX instead of __gmpfr_emin and __gmpfr_emax. The
+ * current bounds do not lead to noticeably slower code and
+ * allow us to avoid a bug in Sun's compiler for Solaris/x86
+ * (when optimizations are enabled); known affected versions:
+ * cc: Sun C 5.8 2005/10/13
+ * cc: Sun C 5.8 Patch 121016-02 2006/03/31
+ * cc: Sun C 5.8 Patch 121016-04 2006/10/18
+ */
+ expy =
+ n != -1 && expx > 0 && expx > (__gmpfr_emin - 1) / n ?
+ MPFR_EMIN_MIN - 2 /* Underflow */ :
+ n != -1 && expx < 0 && expx < (__gmpfr_emax - 1) / n ?
+ MPFR_EMAX_MAX /* Overflow */ : n * expx;
+ return mpfr_set_si_2exp (y, n % 2 ? MPFR_INT_SIGN (x) : 1,
+ expy, rnd);
+ }
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t;
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny; /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ mpfr_rnd_t rnd1;
+ int size_n;
+ int inexact;
+ unsigned long abs_n;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+
+ abs_n = - (unsigned long) n;
+ count_leading_zeros (size_n, (mp_limb_t) abs_n);
+ size_n = GMP_NUMB_BITS - size_n;
+
+ /* initial working precision */
+ Ny = MPFR_PREC (y);
+ Nt = Ny + size_n + 3 + MPFR_INT_CEIL_LOG2 (Ny);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+
+ /* We will compute rnd(rnd1(1/x) ^ |n|), where rnd1 is the rounding
+ toward sign(x), to avoid spurious overflow or underflow, as in
+ mpfr_pow_z. */
+ rnd1 = MPFR_EXP (x) < 1 ? MPFR_RNDZ :
+ (MPFR_SIGN (x) > 0 ? MPFR_RNDU : MPFR_RNDD);
+
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* compute (1/x)^|n| */
+ MPFR_BLOCK (flags, mpfr_ui_div (t, 1, x, rnd1));
+ MPFR_ASSERTD (! MPFR_UNDERFLOW (flags));
+ /* t = (1/x)*(1+theta) where |theta| <= 2^(-Nt) */
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
+ goto overflow;
+ MPFR_BLOCK (flags, mpfr_pow_ui (t, t, abs_n, rnd));
+ /* t = (1/x)^|n|*(1+theta')^(|n|+1) where |theta'| <= 2^(-Nt).
+ If (|n|+1)*2^(-Nt) <= 1/2, which is satisfied as soon as
+ Nt >= bits(n)+2, then we can use Lemma \ref{lemma_graillat}
+ from algorithms.tex, which yields x^n*(1+theta) with
+ |theta| <= 2(|n|+1)*2^(-Nt), thus the error is bounded by
+ 2(|n|+1) ulps <= 2^(bits(n)+2) ulps. */
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
+ {
+ overflow:
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ MPFR_LOG_MSG (("overflow\n", 0));
+ return mpfr_overflow (y, rnd, abs_n & 1 ?
+ MPFR_SIGN (x) : MPFR_SIGN_POS);
+ }
+ if (MPFR_UNLIKELY (MPFR_UNDERFLOW (flags)))
+ {
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ MPFR_LOG_MSG (("underflow\n", 0));
+ if (rnd == MPFR_RNDN)
+ {
+ mpfr_t y2, nn;
+
+ /* We cannot decide now whether the result should be
+ rounded toward zero or away from zero. So, like
+ in mpfr_pow_pos_z, let's use the general case of
+ mpfr_pow in precision 2. */
+ MPFR_ASSERTD (mpfr_cmp_si_2exp (x, MPFR_SIGN (x),
+ MPFR_EXP (x) - 1) != 0);
+ mpfr_init2 (y2, 2);
+ mpfr_init2 (nn, sizeof (long) * CHAR_BIT);
+ inexact = mpfr_set_si (nn, n, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+ inexact = mpfr_pow_general (y2, x, nn, rnd, 1,
+ (mpfr_save_expo_t *) NULL);
+ mpfr_clear (nn);
+ mpfr_set (y, y2, MPFR_RNDN);
+ mpfr_clear (y2);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_UNDERFLOW);
+ goto end;
+ }
+ else
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (y, rnd, abs_n & 1 ?
+ MPFR_SIGN (x) : MPFR_SIGN_POS);
+ }
+ }
+ /* error estimate -- see pow function in algorithms.ps */
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, Nt - size_n - 2, Ny, rnd)))
+ break;
+
+ /* actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (y, t, rnd);
+ mpfr_clear (t);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd);
+ }
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/pow_ui.c b/Build/source/libs/mpfr/mpfr-src/src/pow_ui.c
new file mode 100644
index 00000000000..75e104ae408
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/pow_ui.c
@@ -0,0 +1,164 @@
+/* mpfr_pow_ui-- compute the power of a floating-point
+ by a machine integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* sets y to x^n, and return 0 if exact, non-zero otherwise */
+int
+mpfr_pow_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int n, mpfr_rnd_t rnd)
+{
+ unsigned long m;
+ mpfr_t res;
+ mpfr_prec_t prec, err;
+ int inexact;
+ mpfr_rnd_t rnd1;
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_ZIV_DECL (loop);
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg n=%lu rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, n, rnd),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ /* x^0 = 1 for any x, even a NaN */
+ if (MPFR_UNLIKELY (n == 0))
+ return mpfr_set_ui (y, 1, rnd);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ /* Inf^n = Inf, (-Inf)^n = Inf for n even, -Inf for n odd */
+ if (MPFR_IS_NEG (x) && (n & 1) == 1)
+ MPFR_SET_NEG (y);
+ else
+ MPFR_SET_POS (y);
+ MPFR_SET_INF (y);
+ MPFR_RET (0);
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ /* 0^n = 0 for any n */
+ MPFR_SET_ZERO (y);
+ if (MPFR_IS_POS (x) || (n & 1) == 0)
+ MPFR_SET_POS (y);
+ else
+ MPFR_SET_NEG (y);
+ MPFR_RET (0);
+ }
+ }
+ else if (MPFR_UNLIKELY (n <= 2))
+ {
+ if (n < 2)
+ /* x^1 = x */
+ return mpfr_set (y, x, rnd);
+ else
+ /* x^2 = sqr(x) */
+ return mpfr_sqr (y, x, rnd);
+ }
+
+ /* Augment exponent range */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* setup initial precision */
+ prec = MPFR_PREC (y) + 3 + GMP_NUMB_BITS
+ + MPFR_INT_CEIL_LOG2 (MPFR_PREC (y));
+ mpfr_init2 (res, prec);
+
+ rnd1 = MPFR_IS_POS (x) ? MPFR_RNDU : MPFR_RNDD; /* away */
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ int i;
+
+ for (m = n, i = 0; m; i++, m >>= 1)
+ ;
+ /* now 2^(i-1) <= n < 2^i */
+ MPFR_ASSERTD (prec > (mpfr_prec_t) i);
+ err = prec - 1 - (mpfr_prec_t) i;
+ /* First step: compute square from x */
+ MPFR_BLOCK (flags,
+ inexact = mpfr_mul (res, x, x, MPFR_RNDU);
+ MPFR_ASSERTD (i >= 2);
+ if (n & (1UL << (i-2)))
+ inexact |= mpfr_mul (res, res, x, rnd1);
+ for (i -= 3; i >= 0 && !MPFR_BLOCK_EXCEP; i--)
+ {
+ inexact |= mpfr_mul (res, res, res, MPFR_RNDU);
+ if (n & (1UL << i))
+ inexact |= mpfr_mul (res, res, x, rnd1);
+ });
+ /* let r(n) be the number of roundings: we have r(2)=1, r(3)=2,
+ and r(2n)=2r(n)+1, r(2n+1)=2r(n)+2, thus r(n)=n-1.
+ Using Higham's method, to each rounding corresponds a factor
+ (1-theta) with 0 <= theta <= 2^(1-p), thus at the end the
+ absolute error is bounded by (n-1)*2^(1-p)*res <= 2*(n-1)*ulp(res)
+ since 2^(-p)*x <= ulp(x). Since n < 2^i, this gives a maximal
+ error of 2^(1+i)*ulp(res).
+ */
+ if (MPFR_LIKELY (inexact == 0
+ || MPFR_OVERFLOW (flags) || MPFR_UNDERFLOW (flags)
+ || MPFR_CAN_ROUND (res, err, MPFR_PREC (y), rnd)))
+ break;
+ /* Actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (res, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags) || MPFR_UNDERFLOW (flags)))
+ {
+ mpz_t z;
+
+ /* Internal overflow or underflow. However the approximation error has
+ * not been taken into account. So, let's solve this problem by using
+ * mpfr_pow_z, which can handle it. This case could be improved in the
+ * future, without having to use mpfr_pow_z.
+ */
+ MPFR_LOG_MSG (("Internal overflow or underflow,"
+ " let's use mpfr_pow_z.\n", 0));
+ mpfr_clear (res);
+ MPFR_SAVE_EXPO_FREE (expo);
+ mpz_init (z);
+ mpz_set_ui (z, n);
+ inexact = mpfr_pow_z (y, x, z, rnd);
+ mpz_clear (z);
+ return inexact;
+ }
+
+ inexact = mpfr_set (y, res, rnd);
+ mpfr_clear (res);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/pow_z.c b/Build/source/libs/mpfr/mpfr-src/src/pow_z.c
new file mode 100644
index 00000000000..a8913281c87
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/pow_z.c
@@ -0,0 +1,373 @@
+/* mpfr_pow_z -- power function x^z with z a MPZ
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* y <- x^|z| with z != 0
+ if cr=1: ensures correct rounding of y
+ if cr=0: does not ensure correct rounding, but avoid spurious overflow
+ or underflow, and uses the precision of y as working precision (warning,
+ y and x might be the same variable). */
+static int
+mpfr_pow_pos_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr z, mpfr_rnd_t rnd, int cr)
+{
+ mpfr_t res;
+ mpfr_prec_t prec, err;
+ int inexact;
+ mpfr_rnd_t rnd1, rnd2;
+ mpz_t absz;
+ mp_size_t size_z;
+ MPFR_ZIV_DECL (loop);
+ MPFR_BLOCK_DECL (flags);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg z=%Zd rnd=%d cr=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, z, rnd, cr),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ MPFR_ASSERTD (mpz_sgn (z) != 0);
+
+ if (MPFR_UNLIKELY (mpz_cmpabs_ui (z, 1) == 0))
+ return mpfr_set (y, x, rnd);
+
+ absz[0] = z[0];
+ SIZ (absz) = ABS(SIZ(absz)); /* Hack to get abs(z) */
+ MPFR_MPZ_SIZEINBASE2 (size_z, z);
+
+ /* round toward 1 (or -1) to avoid spurious overflow or underflow,
+ i.e. if an overflow or underflow occurs, it is a real exception
+ and is not just due to the rounding error. */
+ rnd1 = (MPFR_EXP(x) >= 1) ? MPFR_RNDZ
+ : (MPFR_IS_POS(x) ? MPFR_RNDU : MPFR_RNDD);
+ rnd2 = (MPFR_EXP(x) >= 1) ? MPFR_RNDD : MPFR_RNDU;
+
+ if (cr != 0)
+ prec = MPFR_PREC (y) + 3 + size_z + MPFR_INT_CEIL_LOG2 (MPFR_PREC (y));
+ else
+ prec = MPFR_PREC (y);
+ mpfr_init2 (res, prec);
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ unsigned int inexmul; /* will be non-zero if res may be inexact */
+ mp_size_t i = size_z;
+
+ /* now 2^(i-1) <= z < 2^i */
+ /* see below (case z < 0) for the error analysis, which is identical,
+ except if z=n, the maximal relative error is here 2(n-1)2^(-prec)
+ instead of 2(2n-1)2^(-prec) for z<0. */
+ MPFR_ASSERTD (prec > (mpfr_prec_t) i);
+ err = prec - 1 - (mpfr_prec_t) i;
+
+ MPFR_BLOCK (flags,
+ inexmul = mpfr_mul (res, x, x, rnd2);
+ MPFR_ASSERTD (i >= 2);
+ if (mpz_tstbit (absz, i - 2))
+ inexmul |= mpfr_mul (res, res, x, rnd1);
+ for (i -= 3; i >= 0 && !MPFR_BLOCK_EXCEP; i--)
+ {
+ inexmul |= mpfr_mul (res, res, res, rnd2);
+ if (mpz_tstbit (absz, i))
+ inexmul |= mpfr_mul (res, res, x, rnd1);
+ });
+ if (MPFR_LIKELY (inexmul == 0 || cr == 0
+ || MPFR_OVERFLOW (flags) || MPFR_UNDERFLOW (flags)
+ || MPFR_CAN_ROUND (res, err, MPFR_PREC (y), rnd)))
+ break;
+ /* Can't decide correct rounding, increase the precision */
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (res, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ /* Check Overflow */
+ if (MPFR_OVERFLOW (flags))
+ {
+ MPFR_LOG_MSG (("overflow\n", 0));
+ inexact = mpfr_overflow (y, rnd, mpz_odd_p (absz) ?
+ MPFR_SIGN (x) : MPFR_SIGN_POS);
+ }
+ /* Check Underflow */
+ else if (MPFR_UNDERFLOW (flags))
+ {
+ MPFR_LOG_MSG (("underflow\n", 0));
+ if (rnd == MPFR_RNDN)
+ {
+ mpfr_t y2, zz;
+
+ /* We cannot decide now whether the result should be rounded
+ toward zero or +Inf. So, let's use the general case of
+ mpfr_pow, which can do that. But the problem is that the
+ result can be exact! However, it is sufficient to try to
+ round on 2 bits (the precision does not matter in case of
+ underflow, since MPFR does not have subnormals), in which
+ case, the result cannot be exact due to previous filtering
+ of trivial cases. */
+ MPFR_ASSERTD (mpfr_cmp_si_2exp (x, MPFR_SIGN (x),
+ MPFR_EXP (x) - 1) != 0);
+ mpfr_init2 (y2, 2);
+ mpfr_init2 (zz, ABS (SIZ (z)) * GMP_NUMB_BITS);
+ inexact = mpfr_set_z (zz, z, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+ inexact = mpfr_pow_general (y2, x, zz, rnd, 1,
+ (mpfr_save_expo_t *) NULL);
+ mpfr_clear (zz);
+ mpfr_set (y, y2, MPFR_RNDN);
+ mpfr_clear (y2);
+ __gmpfr_flags = MPFR_FLAGS_INEXACT | MPFR_FLAGS_UNDERFLOW;
+ }
+ else
+ {
+ inexact = mpfr_underflow (y, rnd, mpz_odd_p (absz) ?
+ MPFR_SIGN (x) : MPFR_SIGN_POS);
+ }
+ }
+ else
+ inexact = mpfr_set (y, res, rnd);
+
+ mpfr_clear (res);
+ return inexact;
+}
+
+/* The computation of y = pow(x,z) is done by
+ * y = set_ui(1) if z = 0
+ * y = pow_ui(x,z) if z > 0
+ * y = pow_ui(1/x,-z) if z < 0
+ *
+ * Note: in case z < 0, we could also compute 1/pow_ui(x,-z). However, in
+ * case MAX < 1/MIN, where MAX is the largest positive value, i.e.,
+ * MAX = nextbelow(+Inf), and MIN is the smallest positive value, i.e.,
+ * MIN = nextabove(+0), then x^(-z) might produce an overflow, whereas
+ * x^z is representable.
+ */
+
+int
+mpfr_pow_z (mpfr_ptr y, mpfr_srcptr x, mpz_srcptr z, mpfr_rnd_t rnd)
+{
+ int inexact;
+ mpz_t tmp;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg z=%Zd rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, z, rnd),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ /* x^0 = 1 for any x, even a NaN */
+ if (MPFR_UNLIKELY (mpz_sgn (z) == 0))
+ return mpfr_set_ui (y, 1, rnd);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x))
+ {
+ /* Inf^n = Inf, (-Inf)^n = Inf for n even, -Inf for n odd */
+ /* Inf ^(-n) = 0, sign = + if x>0 or z even */
+ if (mpz_sgn (z) > 0)
+ MPFR_SET_INF (y);
+ else
+ MPFR_SET_ZERO (y);
+ if (MPFR_UNLIKELY (MPFR_IS_NEG (x) && mpz_odd_p (z)))
+ MPFR_SET_NEG (y);
+ else
+ MPFR_SET_POS (y);
+ MPFR_RET (0);
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO(x));
+ if (mpz_sgn (z) > 0)
+ /* 0^n = +/-0 for any n */
+ MPFR_SET_ZERO (y);
+ else
+ {
+ /* 0^(-n) if +/- INF */
+ MPFR_SET_INF (y);
+ mpfr_set_divby0 ();
+ }
+ if (MPFR_LIKELY (MPFR_IS_POS (x) || mpz_even_p (z)))
+ MPFR_SET_POS (y);
+ else
+ MPFR_SET_NEG (y);
+ MPFR_RET(0);
+ }
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* detect exact powers: x^-n is exact iff x is a power of 2
+ Do it if n > 0 too as this is faster and this filtering is
+ needed in case of underflow. */
+ if (MPFR_UNLIKELY (mpfr_cmp_si_2exp (x, MPFR_SIGN (x),
+ MPFR_EXP (x) - 1) == 0))
+ {
+ mpfr_exp_t expx = MPFR_EXP (x); /* warning: x and y may be the same
+ variable */
+
+ MPFR_LOG_MSG (("x^n with x power of two\n", 0));
+ mpfr_set_si (y, mpz_odd_p (z) ? MPFR_INT_SIGN(x) : 1, rnd);
+ MPFR_ASSERTD (MPFR_IS_FP (y));
+ mpz_init (tmp);
+ mpz_mul_si (tmp, z, expx - 1);
+ MPFR_ASSERTD (MPFR_GET_EXP (y) == 1);
+ mpz_add_ui (tmp, tmp, 1);
+ inexact = 0;
+ if (MPFR_UNLIKELY (mpz_cmp_si (tmp, __gmpfr_emin) < 0))
+ {
+ MPFR_LOG_MSG (("underflow\n", 0));
+ /* |y| is a power of two, thus |y| <= 2^(emin-2), and in
+ rounding to nearest, the value must be rounded to 0. */
+ if (rnd == MPFR_RNDN)
+ rnd = MPFR_RNDZ;
+ inexact = mpfr_underflow (y, rnd, MPFR_SIGN (y));
+ }
+ else if (MPFR_UNLIKELY (mpz_cmp_si (tmp, __gmpfr_emax) > 0))
+ {
+ MPFR_LOG_MSG (("overflow\n", 0));
+ inexact = mpfr_overflow (y, rnd, MPFR_SIGN (y));
+ }
+ else
+ MPFR_SET_EXP (y, mpz_get_si (tmp));
+ mpz_clear (tmp);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ }
+ else if (mpz_sgn (z) > 0)
+ {
+ inexact = mpfr_pow_pos_z (y, x, z, rnd, 1);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ }
+ else
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t;
+ mpfr_prec_t Nt; /* Precision of the intermediary variable */
+ mpfr_rnd_t rnd1;
+ mp_size_t size_z;
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_MPZ_SIZEINBASE2 (size_z, z);
+
+ /* initial working precision */
+ Nt = MPFR_PREC (y);
+ Nt = Nt + size_z + 3 + MPFR_INT_CEIL_LOG2 (Nt);
+ /* ensures Nt >= bits(z)+2 */
+
+ /* initialise of intermediary variable */
+ mpfr_init2 (t, Nt);
+
+ /* We will compute rnd(rnd1(1/x) ^ (-z)), where rnd1 is the rounding
+ toward sign(x), to avoid spurious overflow or underflow. */
+ rnd1 = MPFR_EXP (x) < 1 ? MPFR_RNDZ :
+ (MPFR_SIGN (x) > 0 ? MPFR_RNDU : MPFR_RNDD);
+
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* compute (1/x)^(-z), -z>0 */
+ /* As emin = -emax, an underflow cannot occur in the division.
+ And if an overflow occurs, then this means that x^z overflows
+ too (since we have rounded toward 1 or -1). */
+ MPFR_BLOCK (flags, mpfr_ui_div (t, 1, x, rnd1));
+ MPFR_ASSERTD (! MPFR_UNDERFLOW (flags));
+ /* t = (1/x)*(1+theta) where |theta| <= 2^(-Nt) */
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
+ goto overflow;
+ MPFR_BLOCK (flags, mpfr_pow_pos_z (t, t, z, rnd, 0));
+ /* Now if z=-n, t = x^z*(1+theta)^(2n-1) where |theta| <= 2^(-Nt),
+ with theta maybe different from above. If (2n-1)*2^(-Nt) <= 1/2,
+ which is satisfied as soon as Nt >= bits(z)+2, then we can use
+ Lemma \ref{lemma_graillat} from algorithms.tex, which yields
+ t = x^z*(1+theta) with |theta| <= 2(2n-1)*2^(-Nt), thus the
+ error is bounded by 2(2n-1) ulps <= 2^(bits(z)+2) ulps. */
+ if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
+ {
+ overflow:
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ MPFR_LOG_MSG (("overflow\n", 0));
+ return mpfr_overflow (y, rnd,
+ mpz_odd_p (z) ? MPFR_SIGN (x) :
+ MPFR_SIGN_POS);
+ }
+ if (MPFR_UNLIKELY (MPFR_UNDERFLOW (flags)))
+ {
+ MPFR_ZIV_FREE (loop);
+ mpfr_clear (t);
+ MPFR_LOG_MSG (("underflow\n", 0));
+ if (rnd == MPFR_RNDN)
+ {
+ mpfr_t y2, zz;
+
+ /* We cannot decide now whether the result should be
+ rounded toward zero or away from zero. So, like
+ in mpfr_pow_pos_z, let's use the general case of
+ mpfr_pow in precision 2. */
+ MPFR_ASSERTD (mpfr_cmp_si_2exp (x, MPFR_SIGN (x),
+ MPFR_EXP (x) - 1) != 0);
+ mpfr_init2 (y2, 2);
+ mpfr_init2 (zz, ABS (SIZ (z)) * GMP_NUMB_BITS);
+ inexact = mpfr_set_z (zz, z, MPFR_RNDN);
+ MPFR_ASSERTN (inexact == 0);
+ inexact = mpfr_pow_general (y2, x, zz, rnd, 1,
+ (mpfr_save_expo_t *) NULL);
+ mpfr_clear (zz);
+ mpfr_set (y, y2, MPFR_RNDN);
+ mpfr_clear (y2);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_UNDERFLOW);
+ goto end;
+ }
+ else
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_underflow (y, rnd, mpz_odd_p (z) ?
+ MPFR_SIGN (x) : MPFR_SIGN_POS);
+ }
+ }
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, Nt - size_z - 2, MPFR_PREC (y),
+ rnd)))
+ break;
+ /* actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ mpfr_set_prec (t, Nt);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (y, t, rnd);
+ mpfr_clear (t);
+ }
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/powerof2.c b/Build/source/libs/mpfr/mpfr-src/src/powerof2.c
new file mode 100644
index 00000000000..bacbcdcf6e4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/powerof2.c
@@ -0,0 +1,49 @@
+/* mpfr_powerof2_raw -- test whether a floating-point number is a power of 2
+
+Copyright 2002-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* This is an internal function and one assumes that x is a non-special
+ * number (more precisely, only its significand is considered and this
+ * function can be used even if the exponent field of x has not been
+ * initialized). It returns 1 (true) if |x| is a power of 2, else 0.
+ */
+
+int
+mpfr_powerof2_raw (mpfr_srcptr x)
+{
+ mp_limb_t *xp;
+ mp_size_t xn;
+
+ /* This is an internal function, and we may call it with some
+ wrong numbers (ie good mantissa but wrong flags or exp)
+ So we don't want to test if it is a pure FP.
+ MPFR_ASSERTN(MPFR_IS_PURE_FP(x)); */
+ xp = MPFR_MANT(x);
+ xn = (MPFR_PREC(x) - 1) / GMP_NUMB_BITS;
+ if (xp[xn] != MPFR_LIMB_HIGHBIT)
+ return 0;
+ while (xn > 0)
+ if (xp[--xn] != 0)
+ return 0;
+ return 1;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/powerpc32/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/powerpc32/mparam.h
new file mode 100644
index 00000000000..687586afdb0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/powerpc32/mparam.h
@@ -0,0 +1,232 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2010-10-22, gcc 4.2.4, gmp 5.0.1 */
+/* RS/6000 7025 F50 kindly provided by David Kirkby, under AIX 5.3 */
+/* used MPFR svn revision 7238 */
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,40,40,40,40,40,40, \
+ 40,40,40,40,40,44,48,48,48,48,48,48,48,48,48,48, \
+ 48,48,48,48,52,52,52,52,52,52,52,52,52,52,52,64, \
+ 64,64,64,64,74,74,74,75,74,75,75,75,75,75,75,75, \
+ 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75, \
+ 75,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, \
+ 105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, \
+ 105,105,124,124,124,124,124,124,124,124,124,124,124,124,124,124, \
+ 124,124,124,124,124,124,140,140,140,140,140,140,140,140,156,156, \
+ 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, \
+ 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, \
+ 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, \
+ 156,156,156,156,156,156,156,156,186,186,186,186,186,186,186,186, \
+ 186,186,186,186,186,186,186,186,186,186,186,186,186,186,210,210, \
+ 210,210,234,234,234,234,234,234,234,234,234,234,234,234,234,234, \
+ 234,234,234,234,234,234,234,233,234,234,234,234,234,234,234,234, \
+ 234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234, \
+ 234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234, \
+ 234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234, \
+ 234,280,280,280,280,280,280,280,312,312,312,312,312,312,312,312, \
+ 312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, \
+ 312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, \
+ 312,312,312,312,312,312,312,312,312,344,344,344,344,344,344,312, \
+ 344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, \
+ 344,344,344,344,344,344,376,376,376,376,376,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,407,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,584,584,584,584,584,584,584,584,584,584,584, \
+ 584,584,584,584,584,584,584,584,583,584,583,584,584,584,584,584, \
+ 592,584,592,584,592,592,592,592,592,584,592,592,592,584,584,584, \
+ 584,584,584,584,584,584,584,584,584,584,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,591,592,591,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,591,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,735,736,735,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,832,832,736, \
+ 832,831,832,832,832,832,832,832,832,832,832,832,832,832,832,832, \
+ 832,832,831,832,832,832,832,832,832,832,832,832,832,832,832,832, \
+ 832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,7,8,8,9,9, \
+ 10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17, \
+ 18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25, \
+ 26,26,27,28,28,28,30,32,32,32,32,32,32,32,34,34, \
+ 36,36,36,36,36,40,40,40,40,40,40,40,42,42,42,44, \
+ 44,44,46,46,46,46,46,46,46,46,47,47,56,56,56,56, \
+ 56,56,56,56,60,64,64,64,64,64,64,64,64,64,64,64, \
+ 64,64,64,68,68,72,72,72,72,72,72,72,72,76,76,76, \
+ 76,76,76,76,68,72,72,72,72,72,76,76,76,76,76,76, \
+ 76,76,76,76,76,76,77,77,87,90,93,93,93,93,93,93, \
+ 93,96,99,99,99,99,93,96,93,93,96,99,99,102,99,99, \
+ 105,102,105,105,105,105,108,108,108,111,111,111,111,111,117,117, \
+ 117,117,117,117,117,117,123,123,123,123,123,123,123,126,126,129, \
+ 129,123,129,129,129,129,129,129,129,129,129,129,129,129,129,129, \
+ 129,123,123,123,123,123,123,123,126,129,129,129,129,129,129,129, \
+ 129,129,129,129,129,129,164,164,164,164,164,164,164,164,164,164, \
+ 172,172,172,172,172,172,156,156,156,156,156,156,156,156,156,163, \
+ 164,164,164,164,164,171,171,171,172,172,172,172,172,172,172,180, \
+ 180,179,180,180,180,180,180,180,180,180,180,180,180,180,180,180, \
+ 180,180,180,180,198,198,198,198,180,198,198,198,210,210,210,210, \
+ 210,210,210,210,210,210,210,222,222,222,222,222,222,222,222,222, \
+ 222,222,222,222,234,234,234,234,234,234,234,234,234,234,234,234, \
+ 234,234,246,246,246,246,246,246,246,246,246,246,246,246,246,246, \
+ 258,246,246,258,258,258,258,258,258,258,258,258,258,270,270,270, \
+ 270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270, \
+ 270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270, \
+ 270,270,270,270,270,270,270,270,270,270,270,270,270,270,312,270, \
+ 312,312,312,270,270,270,270,270,270,270,270,328,328,312,328,328, \
+ 328,328,328,328,328,328,328,344,344,312,328,344,328,328,328,328, \
+ 328,328,328,328,328,328,328,328,328,328,328,327,328,328,328,328, \
+ 328,344,328,328,328,328,328,328,344,344,344,344,344,344,344,344, \
+ 344,344,344,360,360,360,360,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,360,360,360,328,328,360,328,328,328, \
+ 328,328,360,328,328,328,328,328,328,328,328,344,344,344,344,344, \
+ 344,344,344,344,344,344,344,344,344,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, \
+ 408,408,408,408,408,408,408,408,408,408,440,440,440,440,440,439, \
+ 440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, \
+ 440,440,440,440,440,440,440,440,440,440,440,440,440,472,472,440, \
+ 440,471,504,472,472,472,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,472,472,472,472,472,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,504,504,504,504,536,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,536,536,536,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 504,504,504,504,568,568,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,504,600,600,600,600,600,600,600,536,536,536,535, \
+ 535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,536,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,567,568,568,568,568,568,568, \
+ 568,568,568,568,568,567,568,568,568,568,568,568,600,600,600,599, \
+ 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,568,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,599,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,7,10,9,12,13,12,9, \
+ 12,12,12,12,12,12,15,15,16,15,16,16,16,19,20,20, \
+ 20,19,19,19,20,20,21,21,22,23,23,24,25,25,25,25, \
+ 26,26,27,27,28,28,29,29,31,31,31,31,32,35,33,33, \
+ 34,36,35,35,36,36,37,37,38,38,40,39,40,40,41,41, \
+ 42,42,43,48,44,48,47,45,47,47,47,48,48,48,49,49, \
+ 50,51,51,51,52,52,53,53,54,55,56,55,56,63,57,64, \
+ 63,64,64,64,64,64,62,64,64,63,64,64,72,64,72,65, \
+ 66,72,72,71,72,71,71,70,80,71,71,71,80,72,73,80, \
+ 74,79,80,80,80,80,80,80,80,79,80,80,80,80,81,81, \
+ 82,88,85,95,84,96,96,88,96,96,95,95,96,96,96,96, \
+ 96,95,96,104,96,96,96,94,96,95,104,96,96,96,104,104, \
+ 98,104,100,104,104,104,104,104,103,104,104,103,104,104,105,105, \
+ 106,106,128,110,108,128,128,128,128,128,128,128,128,128,128,128, \
+ 128,128,128,128,127,128,128,128,127,124,128,128,126,126,128,125, \
+ 128,128,127,128,128,128,128,128,128,127,128,128,148,128,146,129, \
+ 130,148,144,147,150,148,150,148,148,150,147,150,144,148,150,148, \
+ 150,150,160,148,160,148,148,150,148,149,150,150,160,148,150,148, \
+ 148,150,147,150,150,150,149,149,160,150,151,151,152,156,156,156, \
+ 154,156,160,160,160,156,159,157,158,160,160,160,160,160,161,161, \
+ 162,168,176,192,186,192,186,186,186,192,192,184,192,186,184,192, \
+ 185,186,191,192,192,191,186,192,192,192,192,192,192,192,192,192, \
+ 192,190,192,192,190,192,192,192,186,192,192,192,192,192,192,192, \
+ 192,192,192,192,192,192,192,191,192,192,191,192,192,208,208,208, \
+ 194,208,208,208,208,207,208,208,208,208,207,208,206,208,201,208, \
+ 208,208,204,208,208,208,208,208,208,208,208,208,208,208,209,209, \
+ 210,210,211,211,212,248,256,216,216,248,254,256,256,248,255,256, \
+ 256,256,256,255,256,256,256,255,256,256,256,248,256,256,248,256, \
+ 256,255,256,256,254,256,256,256,248,255,256,256,256,256,254,256, \
+ 256,248,256,247,256,256,256,256,256,256,256,255,255,255,256,256, \
+ 256,254,256,256,253,255,256,256,256,255,256,256,256,253,256,288, \
+ 256,256,296,256,256,296,300,296,296,288,300,299,312,312,312,312, \
+ 288,312,294,311,312,312,299,300,312,296,312,300,300,296,295,299, \
+ 312,300,310,312,296,312,310,312,312,311,312,312,311,312,312,312, \
+ 312,312,311,312,312,312,310,311,312,310,312,312,310,311,311,312, \
+ 312,312,312,312,299,300,300,312,312,312,311,312,312,312,312,312, \
+ 312,312,312,312,310,300,311,310,312,312,312,312,308,300,312,312, \
+ 312,310,311,310,311,311,312,301,312,312,312,311,312,312,312,312, \
+ 311,312,312,312,312,312,312,312,312,312,311,312,312,312,313,313, \
+ 314,314,315,320,320,372,320,320,320,372,372,371,371,372,324,372, \
+ 371,371,372,370,369,371,371,372,372,372,372,372,370,370,372,370, \
+ 371,372,370,372,372,372,372,372,371,371,372,372,370,372,372,372, \
+ 370,372,372,372,370,372,372,370,372,370,370,371,372,371,384,372, \
+ 371,384,368,372,384,370,383,372,384,383,384,384,384,384,384,372, \
+ 372,384,372,372,369,370,372,370,372,368,372,372,372,372,371,370, \
+ 372,372,371,416,384,384,384,416,415,383,383,416,384,384,372,372, \
+ 416,370,371,372,372,415,373,417,415,416,384,384,384,416,416,417, \
+ 417,416,384,416,416,384,415,415,416,384,414,416,414,416,416,417, \
+ 386,408,416,416,416,408,416,416,414,416,417,417,417,416,414,416, \
+ 415,416,416,416,414,416,408,415,415,417,414,407,415,416,416,415, \
+ 416,416,417,416,416,415,416,416,416,416,415,416,416,416,419,415, \
+ 416,416,415,414,415,416,417,413,416,417,416,416,416,416,417,417, \
+ 418,418,419,419,420,420,421,421,422,444,432,430,496,443,496,496, \
+ 432,432,432,468,468,468,468,444,495,466,496,496,496,494,496,496, \
+ 496,468,512,494,496,496,496,496,468,496,493,496,492,496,496,512, \
+ 496,496,496,495,495,495,496,496,496,496,496,512,496,496,512,496, \
+ 496,493,496,496,496,509,496,512,512,496,512,496,512,512,496,495, \
+ 496,512,511,511,512,512,512,511,512,511,495,496,511,511,512,511, \
+ 512,512,493,495,495,495,512,493,495,560,496,496,496,496,496,560, \
+ 496,560,492,496,560,495,494,496,496,495,496,495,496,560,511,496, \
+ 512,509,512,495,494,496,511,496,560,496,512,512,511,496,575,512, \
+ 560,496,496,495,585,511,621,495,621,511,622,624,623,511,624,620, \
+ 624,623,511,620,620,624,591,623,624,622,623,620,624,613,624,624, \
+ 560,623,624,624,624,621,622,623,624,623,576,624,624,624,624,620 \
+
+#define MPFR_MUL_THRESHOLD 8 /* limbs */
+#define MPFR_SQR_THRESHOLD 1 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 530 /* bits */
+#define MPFR_EXP_THRESHOLD 7030 /* bits */
+#define MPFR_SINCOS_THRESHOLD 10754 /* bits */
+#define MPFR_AI_THRESHOLD1 -30447 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 3973
+#define MPFR_AI_THRESHOLD3 46501
+/* Tuneup completed successfully, took 12578 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/powerpc64/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/powerpc64/mparam.h
new file mode 100644
index 00000000000..1e852a52e2d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/powerpc64/mparam.h
@@ -0,0 +1,233 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.3.2 */
+/* generated on gcc40.fsffrance.org (IBM PowerPC 970 G5) with GMP 5.0.2 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,10,11,12,13,12,13,16,14,18,18,18,18,18,20,20, \
+ 22,22,23,24,24,26,24,24,26,26,26,28,26,32,36,36, \
+ 32,36,36,36,36,36,36,36,36,36,36,40,40,36,44,44, \
+ 44,44,44,44,48,48,48,44,44,44,48,48,48,48,48,48, \
+ 52,52,52,52,52,52,63,57,57,63,63,63,63,63,63,63, \
+ 63,69,69,69,69,69,69,75,75,69,75,72,75,74,75,75, \
+ 75,75,75,75,75,75,81,81,81,81,81,93,93,93,93,93, \
+ 93,93,105,104,105,105,105,105,105,105,105,104,105,105,105,105, \
+ 105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, \
+ 105,105,105,105,117,117,105,117,117,117,117,129,117,129,117,129, \
+ 129,129,129,129,129,129,129,129,129,129,129,129,129,129,141,129, \
+ 141,141,141,141,141,141,141,141,141,141,156,156,156,156,156,156, \
+ 156,156,156,156,156,156,156,156,156,156,156,156,156,172,172,172, \
+ 172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, \
+ 188,172,172,188,172,188,188,188,188,188,188,188,188,188,188,187, \
+ 188,188,188,210,210,210,210,210,210,210,210,210,210,210,210,210, \
+ 210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, \
+ 210,234,210,210,234,234,234,210,234,234,234,234,234,234,234,234, \
+ 234,234,234,234,234,258,234,234,258,234,258,258,258,258,258,258, \
+ 258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258, \
+ 258,258,258,258,258,257,258,258,282,282,282,282,282,281,282,282, \
+ 282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282, \
+ 312,282,282,312,282,282,282,312,312,312,312,282,312,312,312,312, \
+ 312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, \
+ 312,312,312,312,344,344,344,344,344,344,344,344,344,344,344,344, \
+ 344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,343, \
+ 344,343,344,344,344,344,344,344,344,344,344,344,376,376,376,376, \
+ 344,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,376,376,376,376,376,376,408,376, \
+ 408,408,408,408,376,376,408,408,376,408,408,408,408,376,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,448,448,408,408,407, \
+ 408,408,408,448,408,448,448,448,448,408,448,448,448,448,448,448, \
+ 448,448,448,448,448,448,448,496,496,496,496,496,496,496,448,496, \
+ 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496, \
+ 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496, \
+ 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496, \
+ 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496, \
+ 496,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544, \
+ 544,544,544,544,544,544,544,544,544,544,543,544,544,544,544,544, \
+ 544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544, \
+ 544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544, \
+ 544,544,592,592,592,592,567,544,568,568,568,592,592,592,592,592, \
+ 592,592,568,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,591,592,592,592,592,592,592, \
+ 592,592,592,592,592,592,592,592,592,592,640,592,640,592,640,640, \
+ 640,640,639,640,640,640,640,639,640,639,640,640,639,640,640,639, \
+ 640,639,640,640,640,640,640,640,640,640,640,640,640,640,640,639, \
+ 640,639,640,639,639,640,640,639,639,640,640,640,736,736,736,736, \
+ 735,736,736,736,736,735,736,736,736,735,736,736,736,735,734,735, \
+ 736,735,736,736,736,736,736,736,736,736,736,736,736,736,736,735, \
+ 736,736,736,735,736,736,736,736,736,736,736,735,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,735,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,735,736,736,736,735,736,832,832,831,831,832,832,832,831, \
+ 832,832,832,832,832,831,832,831,832,832,831,832,832,832,832,832, \
+ 832,832,832,831,832,832,832,832,832,832,832,832,832,831,832,832, \
+ 832,832,832,832,832,832,832,831,832,832,832,832,832,832,832,832, \
+ 832,832,831,832,832,832,832,831,832,830,832,832,832,832,832,832, \
+ 832,832,832,832,832,832,832,831,832,832,832,832,832,832,832,832, \
+ 832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,0,0,0,10,9, \
+ 10,10,12,12,12,12,14,13,14,14,15,15,16,16,17,17, \
+ 18,18,19,20,20,20,22,22,22,22,23,23,25,25,26,25, \
+ 26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,34, \
+ 34,34,35,35,36,36,38,38,40,38,42,40,40,42,42,44, \
+ 42,42,44,44,44,44,46,46,46,46,50,48,52,48,50,52, \
+ 50,50,52,52,52,52,53,53,54,54,56,56,56,56,58,60, \
+ 58,58,60,60,60,60,63,63,63,63,63,63,66,66,66,72, \
+ 66,66,75,75,75,75,69,69,72,72,75,75,75,75,78,75, \
+ 75,75,75,75,78,78,78,81,78,81,81,81,81,81,81,87, \
+ 84,84,87,87,87,90,90,87,87,90,93,87,96,93,90,90, \
+ 99,96,102,99,96,93,99,93,99,96,96,96,96,99,99,99, \
+ 99,99,99,99,105,102,102,102,102,102,105,105,105,105,105,105, \
+ 111,111,111,111,111,111,117,111,111,111,111,111,123,117,117,123, \
+ 129,129,129,129,123,129,129,123,129,129,129,123,129,129,135,129, \
+ 129,129,135,135,129,135,134,135,135,135,135,135,135,141,135,129, \
+ 135,141,135,135,135,135,135,135,135,135,135,135,141,141,141,138, \
+ 138,141,141,141,141,141,141,141,147,144,147,146,147,147,146,147, \
+ 153,146,153,147,152,153,153,153,153,153,153,153,153,153,153,153, \
+ 164,164,164,164,164,172,164,171,172,172,172,172,172,172,172,164, \
+ 164,164,172,180,172,180,180,172,172,180,172,171,172,172,172,180, \
+ 180,180,180,180,180,180,180,188,188,187,187,188,188,188,180,196, \
+ 196,196,180,180,196,196,203,204,204,204,204,204,204,204,210,210, \
+ 188,188,188,210,188,188,222,222,204,196,222,222,222,222,204,222, \
+ 204,204,204,204,204,234,234,222,234,234,234,234,210,222,222,234, \
+ 246,246,222,222,222,222,246,222,222,234,258,258,258,258,234,258, \
+ 258,258,258,258,234,234,234,258,246,246,270,246,258,246,246,246, \
+ 246,246,258,258,258,258,258,258,258,258,258,258,258,258,258,258, \
+ 270,270,258,270,270,258,270,270,270,270,258,258,270,270,258,270, \
+ 258,258,258,258,258,258,258,270,257,258,258,270,258,270,258,270, \
+ 270,270,270,270,258,270,270,258,270,270,270,270,258,270,282,270, \
+ 270,270,270,270,270,270,270,270,270,270,270,282,270,282,282,282, \
+ 282,270,282,282,282,282,282,306,282,306,306,294,282,306,306,306, \
+ 312,306,294,306,306,306,306,306,270,306,306,306,306,306,306,282, \
+ 306,282,282,282,282,282,282,328,282,282,344,344,328,344,282,344, \
+ 344,282,328,344,344,344,344,306,306,306,344,306,306,306,344,344, \
+ 360,344,344,344,344,344,344,344,306,360,344,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,360,328,344,344,344,344,344,344,344, \
+ 344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, \
+ 344,344,344,344,360,344,344,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,376,376,360,360,360,376,376,360,376,376,376,376,376, \
+ 376,376,376,376,376,376,376,376,392,392,392,408,408,376,408,408, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,408,424,408,408,424,408,408,424, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,407,408,408, \
+ 408,407,407,408,408,408,424,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,408,408,424,408,424,424,424,424,424,424, \
+ 424,424,424,424,424,424,408,408,408,408,408,407,440,440,408,408, \
+ 408,440,440,424,424,440,424,424,424,424,424,424,424,424,424,424, \
+ 424,424,424,440,440,408,440,440,440,472,440,440,472,440,440,440, \
+ 440,472,440,440,440,424,472,440,472,440,472,424,424,440,424,424, \
+ 424,440,440,424,440,440,440,472,472,440,440,472,440,472,472,472, \
+ 472,472,472,424,440,424,424,423,424,424,472,440,424,424,472,440, \
+ 440,440,440,440,440,472,440,472,440,440,472,440,440,440,472,440, \
+ 440,440,440,440,440,440,440,456,440,472,439,440,440,456,456,472, \
+ 472,472,472,471,471,472,472,472,472,472,472,472,471,472,472,472, \
+ 472,472,471,471,472,472,472,471,472,472,472,472,472,472,472,472, \
+ 472,472,472,471,472,472,472,472,472,471,472,472,472,472,472,472, \
+ 472,472,472,472,471,472,472,519,520,472,520,472,472,472,591,592, \
+ 520,520,520,520,520,592,592,592,592,568,592,592,520,520,520,592, \
+ 520,544,520,544,592,544,520,543,544,544,544,520,520,520,592,519, \
+ 568,568,592,592,592,592,568,592,568,568,592,568,568,592,568,592, \
+ 568,568,592,592,544,568,592,592,592,592,592,568,592,592,592,592, \
+ 592,592,591,592,592,592,592,592,592,592,592,568,592,592,592,568 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,6,9,8,9,10,8,12,13, \
+ 10,10,11,12,13,14,14,13,15,14,15,17,17,18,19,20, \
+ 21,21,19,21,20,20,23,21,22,22,23,24,25,24,26,28, \
+ 27,27,27,27,29,28,29,35,32,32,32,32,32,36,35,36, \
+ 36,36,36,36,36,36,39,40,40,40,43,40,47,40,43,42, \
+ 44,47,43,43,44,44,47,48,48,48,48,48,48,48,52,50, \
+ 52,52,52,52,52,52,56,55,64,64,55,64,64,64,64,64, \
+ 64,72,64,72,72,64,64,72,64,72,72,72,72,70,72,72, \
+ 72,72,72,72,72,72,72,72,72,72,72,72,80,72,80,80, \
+ 80,80,80,80,80,80,80,88,80,88,88,80,87,80,88,88, \
+ 88,88,88,96,88,88,88,96,88,96,96,96,88,96,96,96, \
+ 96,96,96,96,96,96,96,96,96,96,96,96,96,104,104,104, \
+ 104,104,100,104,104,104,104,103,104,102,104,104,104,104,112,120, \
+ 112,112,126,126,126,126,126,126,126,126,126,126,126,126,126,126, \
+ 144,126,126,128,144,144,128,126,144,144,144,144,144,144,144,128, \
+ 144,144,144,144,144,128,144,144,144,144,144,144,144,144,144,144, \
+ 144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, \
+ 144,144,144,144,144,144,144,144,144,144,144,144,144,144,150,160, \
+ 160,156,150,156,160,160,160,160,160,156,160,160,160,160,160,160, \
+ 160,160,160,160,160,160,160,160,160,160,160,160,160,160,174,176, \
+ 176,176,176,192,186,192,174,176,192,192,192,192,192,174,192,192, \
+ 192,192,192,192,192,192,208,186,192,192,186,192,192,192,192,192, \
+ 192,192,192,192,192,192,192,208,192,208,192,192,208,192,208,208, \
+ 208,208,208,208,192,208,208,207,208,192,204,208,208,208,208,208, \
+ 208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, \
+ 208,208,208,208,208,208,208,208,208,208,208,208,208,208,209,209, \
+ 256,220,216,216,256,252,256,240,240,252,252,256,224,252,256,256, \
+ 252,256,256,240,252,256,256,256,256,256,256,256,256,252,252,256, \
+ 256,256,252,256,252,256,256,256,288,288,254,256,256,288,288,288, \
+ 288,252,252,288,288,288,288,288,288,288,288,288,288,288,288,252, \
+ 288,288,288,288,288,288,288,288,288,288,256,288,288,288,252,257, \
+ 288,256,256,256,288,288,288,288,288,288,288,288,288,288,288,288, \
+ 288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288, \
+ 288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288, \
+ 288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288, \
+ 288,288,288,288,288,288,288,288,288,288,288,288,288,288,312,312, \
+ 312,300,312,312,312,312,312,312,312,320,312,312,312,312,312,312, \
+ 312,312,312,312,320,312,320,320,320,320,320,320,320,320,320,320, \
+ 312,344,320,312,344,320,312,312,320,344,320,336,342,344,344,344, \
+ 320,344,344,320,344,320,320,320,352,352,352,352,352,352,352,372, \
+ 372,368,368,384,344,372,368,384,369,368,384,372,370,368,376,370, \
+ 372,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, \
+ 384,384,372,372,384,372,384,344,368,368,384,384,384,408,384,372, \
+ 384,384,384,416,416,416,384,416,384,416,416,416,416,416,384,384, \
+ 384,384,384,415,384,384,416,416,416,384,384,384,384,416,384,384, \
+ 384,416,384,384,372,384,417,416,384,416,416,416,384,416,416,416, \
+ 416,416,416,384,384,416,416,384,384,384,416,416,417,416,416,416, \
+ 416,416,416,417,417,417,416,418,416,415,416,416,416,416,416,415, \
+ 416,417,417,416,417,416,415,416,416,416,416,417,416,413,416,416, \
+ 416,416,416,416,416,416,416,417,416,416,418,416,415,416,416,417, \
+ 416,416,416,416,416,416,416,416,416,416,417,416,416,416,416,415, \
+ 416,416,417,416,416,417,416,416,416,416,416,416,416,416,417,419, \
+ 419,420,420,444,420,420,432,512,468,504,456,456,456,456,514,512, \
+ 512,512,456,504,456,444,512,512,504,512,513,512,512,504,512,512, \
+ 512,512,513,513,512,512,513,504,512,512,513,512,512,504,512,512, \
+ 513,514,513,512,512,513,513,504,512,504,512,512,512,513,512,512, \
+ 510,512,512,512,512,512,512,512,513,512,515,512,513,512,504,512, \
+ 512,514,516,512,512,512,512,512,512,513,512,512,513,513,513,514, \
+ 515,512,512,504,564,512,512,512,512,512,512,576,561,512,576,564, \
+ 576,512,512,576,512,512,512,515,564,512,513,576,564,564,576,512, \
+ 512,510,512,564,576,576,512,576,576,514,576,576,512,564,576,576, \
+ 512,513,576,512,512,513,514,512,512,576,576,512,513,576,513,515, \
+ 552,552,576,512,512,512,564,513,564,576,576,576,564,576,564,576, \
+ 564,512,576,564,564,576,576,564,564,576,564,576,564,576,551,576 \
+
+#define MPFR_MUL_THRESHOLD 1 /* limbs */
+#define MPFR_SQR_THRESHOLD 5 /* limbs */
+#define MPFR_DIV_THRESHOLD 17 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 966 /* bits */
+#define MPFR_EXP_THRESHOLD 10924 /* bits */
+#define MPFR_SINCOS_THRESHOLD 36978 /* bits */
+#define MPFR_AI_THRESHOLD1 -12626 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 1377
+#define MPFR_AI_THRESHOLD3 24323
+/* Tuneup completed successfully, took 2598 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/print_raw.c b/Build/source/libs/mpfr/mpfr-src/src/print_raw.c
new file mode 100644
index 00000000000..7c91ec0727c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/print_raw.c
@@ -0,0 +1,129 @@
+/* mpfr_print_binary -- print the internal binary representation of a
+ floating-point number
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_fprint_binary (FILE *stream, mpfr_srcptr x)
+{
+ if (MPFR_IS_NAN (x))
+ {
+ fprintf (stream, "@NaN@");
+ return;
+ }
+
+ if (MPFR_SIGN (x) < 0)
+ fprintf (stream, "-");
+
+ if (MPFR_IS_INF (x))
+ fprintf (stream, "@Inf@");
+ else if (MPFR_IS_ZERO (x))
+ fprintf (stream, "0");
+ else
+ {
+ mp_limb_t *mx;
+ mpfr_prec_t px;
+ mp_size_t n;
+
+ mx = MPFR_MANT (x);
+ px = MPFR_PREC (x);
+
+ fprintf (stream, "0.");
+ for (n = (px - 1) / GMP_NUMB_BITS; ; n--)
+ {
+ mp_limb_t wd, t;
+
+ MPFR_ASSERTN (n >= 0);
+ wd = mx[n];
+ for (t = MPFR_LIMB_HIGHBIT; t != 0; t >>= 1)
+ {
+ putc ((wd & t) == 0 ? '0' : '1', stream);
+ if (--px == 0)
+ {
+ mpfr_exp_t ex;
+
+ ex = MPFR_GET_EXP (x);
+ MPFR_ASSERTN (ex >= LONG_MIN && ex <= LONG_MAX);
+ fprintf (stream, "E%ld", (long) ex);
+ return;
+ }
+ }
+ }
+ }
+}
+
+void
+mpfr_print_binary (mpfr_srcptr x)
+{
+ mpfr_fprint_binary (stdout, x);
+}
+
+void
+mpfr_print_mant_binary(const char *str, const mp_limb_t *p, mpfr_prec_t r)
+{
+ int i;
+ mpfr_prec_t count = 0;
+ char c;
+ mp_size_t n = MPFR_PREC2LIMBS (r);
+
+ printf("%s ", str);
+ for(n-- ; n>=0 ; n--)
+ {
+ for(i = GMP_NUMB_BITS-1 ; i >=0 ; i--)
+ {
+ c = (p[n] & (((mp_limb_t)1L)<<i)) ? '1' : '0';
+ putchar(c);
+ count++;
+ if (count == r)
+ putchar('[');
+ }
+ putchar('.');
+ }
+ putchar('\n');
+}
+
+void
+mpfr_dump_mant (const mp_limb_t *p, mpfr_prec_t r, mpfr_prec_t precx,
+ mpfr_prec_t error)
+{
+ int i;
+ mpfr_prec_t count = 0;
+ char c;
+ mp_size_t n = MPFR_PREC2LIMBS (r);
+
+ for(n-- ; n>=0 ; n--)
+ {
+ for(i = GMP_NUMB_BITS-1 ; i >=0 ; i--)
+ {
+ c = (p[n] & (((mp_limb_t)1L)<<i)) ? '1' : '0';
+ putchar(c);
+ count++;
+ if (count == precx)
+ putchar (',');
+ if (count == error)
+ putchar('[');
+ }
+ putchar('.');
+ }
+ putchar('\n');
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/print_rnd_mode.c b/Build/source/libs/mpfr/mpfr-src/src/print_rnd_mode.c
new file mode 100644
index 00000000000..fa90f4823f1
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/print_rnd_mode.c
@@ -0,0 +1,46 @@
+/* mpfr_print_rnd_mode -- convert a given rounding mode to a string
+
+Copyright 1999, 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+const char *
+mpfr_print_rnd_mode (mpfr_rnd_t rnd_mode)
+{
+ /* If we forget to update this function after a new rounding mode
+ is added, this will be detected by the following assertion. */
+ MPFR_ASSERTN (MPFR_RND_MAX == MPFR_RNDA + 1);
+ switch (rnd_mode)
+ {
+ case MPFR_RNDD:
+ return "MPFR_RNDD";
+ case MPFR_RNDU:
+ return "MPFR_RNDU";
+ case MPFR_RNDN:
+ return "MPFR_RNDN";
+ case MPFR_RNDZ:
+ return "MPFR_RNDZ";
+ case MPFR_RNDA:
+ return "MPFR_RNDA";
+ default:
+ return (const char*) 0;
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/printf.c b/Build/source/libs/mpfr/mpfr-src/src/printf.c
new file mode 100644
index 00000000000..adf90bbe375
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/printf.c
@@ -0,0 +1,215 @@
+/* mpfr_printf -- printf function and friends.
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* The mpfr_printf-like functions are defined only if <stdarg.h> exists */
+#ifdef HAVE_STDARG
+
+#include <stdarg.h>
+
+#ifndef HAVE_VA_COPY
+# ifdef HAVE___VA_COPY
+# define va_copy(dst,src) __va_copy(dst, src)
+# else
+/* autoconf manual advocates this fallback.
+ This is also the solution chosen by gmp */
+# define va_copy(dst,src) \
+ do { memcpy(&(dst), &(src), sizeof(va_list)); } while (0)
+# endif /* HAVE___VA_COPY */
+#endif /* HAVE_VA_COPY */
+
+#include <errno.h>
+#include "mpfr-impl.h"
+
+#ifdef _MPFR_H_HAVE_FILE
+
+/* Each printf-like function calls mpfr_vasprintf which
+ - returns the number of characters in the returned string excluding the
+ terminating null
+ - returns -1 and sets the erange flag if the number of produced characters
+ exceeds INT_MAX (in that case, also sets errno to EOVERFLOW in POSIX
+ systems) */
+
+#define GET_STR_VA(sz, str, fmt, ap) \
+ do \
+ { \
+ sz = mpfr_vasprintf (&(str), fmt, ap); \
+ if (sz < 0) \
+ { \
+ if (str) \
+ mpfr_free_str (str); \
+ return -1; \
+ } \
+ } while (0)
+
+#define GET_STR(sz, str, fmt) \
+ do \
+ { \
+ va_list ap; \
+ va_start(ap, fmt); \
+ sz = mpfr_vasprintf (&(str), fmt, ap); \
+ va_end (ap); \
+ if (sz < 0) \
+ { \
+ if (str) \
+ mpfr_free_str (str); \
+ return -1; \
+ } \
+ } while (0)
+
+int
+mpfr_printf (const char *fmt, ...)
+{
+ char *str;
+ int ret;
+
+ GET_STR (ret, str, fmt);
+ ret = printf ("%s", str);
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+int
+mpfr_vprintf (const char *fmt, va_list ap)
+{
+ char *str;
+ int ret;
+
+ GET_STR_VA (ret, str, fmt, ap);
+ ret = printf ("%s", str);
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+
+int
+mpfr_fprintf (FILE *fp, const char *fmt, ...)
+{
+ char *str;
+ int ret;
+
+ GET_STR (ret, str, fmt);
+ ret = fprintf (fp, "%s", str);
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+int
+mpfr_vfprintf (FILE *fp, const char *fmt, va_list ap)
+{
+ char *str;
+ int ret;
+
+ GET_STR_VA (ret, str, fmt, ap);
+ ret = fprintf (fp, "%s", str);
+
+ mpfr_free_str (str);
+ return ret;
+}
+#endif /* _MPFR_H_HAVE_FILE */
+
+int
+mpfr_sprintf (char *buf, const char *fmt, ...)
+{
+ char *str;
+ int ret;
+
+ GET_STR (ret, str, fmt);
+ ret = sprintf (buf, "%s", str);
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+int
+mpfr_vsprintf (char *buf, const char *fmt, va_list ap)
+{
+ char *str;
+ int ret;
+
+ GET_STR_VA (ret, str, fmt, ap);
+ ret = sprintf (buf, "%s", str);
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+int
+mpfr_snprintf (char *buf, size_t size, const char *fmt, ...)
+{
+ char *str;
+ int ret;
+ size_t min_size;
+
+ GET_STR (ret, str, fmt);
+
+ /* C99 allows SIZE to be zero */
+ if (size != 0)
+ {
+ MPFR_ASSERTN (buf != NULL);
+ min_size = (size_t)ret < size ? (size_t)ret : size - 1;
+ strncpy (buf, str, min_size);
+ buf[min_size] = '\0';
+ }
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+int
+mpfr_vsnprintf (char *buf, size_t size, const char *fmt, va_list ap)
+{
+ char *str;
+ int ret;
+ int min_size;
+
+ GET_STR_VA (ret, str, fmt, ap);
+
+ /* C99 allows SIZE to be zero */
+ if (size != 0)
+ {
+ MPFR_ASSERTN (buf != NULL);
+ min_size = (size_t)ret < size ? (size_t)ret : size - 1;
+ strncpy (buf, str, min_size);
+ buf[min_size] = '\0';
+ }
+
+ mpfr_free_str (str);
+ return ret;
+}
+
+int
+mpfr_asprintf (char **pp, const char *fmt, ...)
+{
+ int ret;
+
+ GET_STR (ret, *pp, fmt);
+
+ return ret;
+}
+#endif /* HAVE_STDARG */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/rec_sqrt.c b/Build/source/libs/mpfr/mpfr-src/src/rec_sqrt.c
new file mode 100644
index 00000000000..aa7814f02cf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/rec_sqrt.c
@@ -0,0 +1,556 @@
+/* mpfr_rec_sqrt -- inverse square root
+
+Copyright 2008-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define MPFR_NEED_LONGLONG_H /* for umul_ppmm */
+#include "mpfr-impl.h"
+
+#define LIMB_SIZE(x) ((((x)-1)>>MPFR_LOG2_GMP_NUMB_BITS) + 1)
+
+#define MPFR_COM_N(x,y,n) \
+ { \
+ mp_size_t i; \
+ for (i = 0; i < n; i++) \
+ *((x)+i) = ~*((y)+i); \
+ }
+
+/* Put in X a p-bit approximation of 1/sqrt(A),
+ where X = {x, n}/B^n, n = ceil(p/GMP_NUMB_BITS),
+ A = 2^(1+as)*{a, an}/B^an, as is 0 or 1, an = ceil(ap/GMP_NUMB_BITS),
+ where B = 2^GMP_NUMB_BITS.
+
+ We have 1 <= A < 4 and 1/2 <= X < 1.
+
+ The error in the approximate result with respect to the true
+ value 1/sqrt(A) is bounded by 1 ulp(X), i.e., 2^{-p} since 1/2 <= X < 1.
+
+ Note: x and a are left-aligned, i.e., the most significant bit of
+ a[an-1] is set, and so is the most significant bit of the output x[n-1].
+
+ If p is not a multiple of GMP_NUMB_BITS, the extra low bits of the input
+ A are taken into account to compute the approximation of 1/sqrt(A), but
+ whether or not they are zero, the error between X and 1/sqrt(A) is bounded
+ by 1 ulp(X) [in precision p].
+ The extra low bits of the output X (if p is not a multiple of GMP_NUMB_BITS)
+ are set to 0.
+
+ Assumptions:
+ (1) A should be normalized, i.e., the most significant bit of a[an-1]
+ should be 1. If as=0, we have 1 <= A < 2; if as=1, we have 2 <= A < 4.
+ (2) p >= 12
+ (3) {a, an} and {x, n} should not overlap
+ (4) GMP_NUMB_BITS >= 12 and is even
+
+ Note: this routine is much more efficient when ap is small compared to p,
+ including the case where ap <= GMP_NUMB_BITS, thus it can be used to
+ implement an efficient mpfr_rec_sqrt_ui function.
+
+ References:
+ [1] Modern Computer Algebra, Richard Brent and Paul Zimmermann,
+ http://www.loria.fr/~zimmerma/mca/pub226.html
+*/
+static void
+mpfr_mpn_rec_sqrt (mpfr_limb_ptr x, mpfr_prec_t p,
+ mpfr_limb_srcptr a, mpfr_prec_t ap, int as)
+
+{
+ /* the following T1 and T2 are bipartite tables giving initial
+ approximation for the inverse square root, with 13-bit input split in
+ 5+4+4, and 11-bit output. More precisely, if 2048 <= i < 8192,
+ with i = a*2^8 + b*2^4 + c, we use for approximation of
+ 2048/sqrt(i/2048) the value x = T1[16*(a-8)+b] + T2[16*(a-8)+c].
+ The largest error is obtained for i = 2054, where x = 2044,
+ and 2048/sqrt(i/2048) = 2045.006576...
+ */
+ static short int T1[384] = {
+2040, 2033, 2025, 2017, 2009, 2002, 1994, 1987, 1980, 1972, 1965, 1958, 1951,
+1944, 1938, 1931, /* a=8 */
+1925, 1918, 1912, 1905, 1899, 1892, 1886, 1880, 1874, 1867, 1861, 1855, 1849,
+1844, 1838, 1832, /* a=9 */
+1827, 1821, 1815, 1810, 1804, 1799, 1793, 1788, 1783, 1777, 1772, 1767, 1762,
+1757, 1752, 1747, /* a=10 */
+1742, 1737, 1733, 1728, 1723, 1718, 1713, 1709, 1704, 1699, 1695, 1690, 1686,
+1681, 1677, 1673, /* a=11 */
+1669, 1664, 1660, 1656, 1652, 1647, 1643, 1639, 1635, 1631, 1627, 1623, 1619,
+1615, 1611, 1607, /* a=12 */
+1603, 1600, 1596, 1592, 1588, 1585, 1581, 1577, 1574, 1570, 1566, 1563, 1559,
+1556, 1552, 1549, /* a=13 */
+1545, 1542, 1538, 1535, 1532, 1528, 1525, 1522, 1518, 1515, 1512, 1509, 1505,
+1502, 1499, 1496, /* a=14 */
+1493, 1490, 1487, 1484, 1481, 1478, 1475, 1472, 1469, 1466, 1463, 1460, 1457,
+1454, 1451, 1449, /* a=15 */
+1446, 1443, 1440, 1438, 1435, 1432, 1429, 1427, 1424, 1421, 1419, 1416, 1413,
+1411, 1408, 1405, /* a=16 */
+1403, 1400, 1398, 1395, 1393, 1390, 1388, 1385, 1383, 1380, 1378, 1375, 1373,
+1371, 1368, 1366, /* a=17 */
+1363, 1360, 1358, 1356, 1353, 1351, 1349, 1346, 1344, 1342, 1340, 1337, 1335,
+1333, 1331, 1329, /* a=18 */
+1327, 1325, 1323, 1321, 1319, 1316, 1314, 1312, 1310, 1308, 1306, 1304, 1302,
+1300, 1298, 1296, /* a=19 */
+1294, 1292, 1290, 1288, 1286, 1284, 1282, 1280, 1278, 1276, 1274, 1272, 1270,
+1268, 1266, 1265, /* a=20 */
+1263, 1261, 1259, 1257, 1255, 1253, 1251, 1250, 1248, 1246, 1244, 1242, 1241,
+1239, 1237, 1235, /* a=21 */
+1234, 1232, 1230, 1229, 1227, 1225, 1223, 1222, 1220, 1218, 1217, 1215, 1213,
+1212, 1210, 1208, /* a=22 */
+1206, 1204, 1203, 1201, 1199, 1198, 1196, 1195, 1193, 1191, 1190, 1188, 1187,
+1185, 1184, 1182, /* a=23 */
+1181, 1180, 1178, 1177, 1175, 1174, 1172, 1171, 1169, 1168, 1166, 1165, 1163,
+1162, 1160, 1159, /* a=24 */
+1157, 1156, 1154, 1153, 1151, 1150, 1149, 1147, 1146, 1144, 1143, 1142, 1140,
+1139, 1137, 1136, /* a=25 */
+1135, 1133, 1132, 1131, 1129, 1128, 1127, 1125, 1124, 1123, 1121, 1120, 1119,
+1117, 1116, 1115, /* a=26 */
+1114, 1113, 1111, 1110, 1109, 1108, 1106, 1105, 1104, 1103, 1101, 1100, 1099,
+1098, 1096, 1095, /* a=27 */
+1093, 1092, 1091, 1090, 1089, 1087, 1086, 1085, 1084, 1083, 1081, 1080, 1079,
+1078, 1077, 1076, /* a=28 */
+1075, 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1065, 1064, 1063, 1062, 1061,
+1060, 1059, 1058, /* a=29 */
+1057, 1056, 1055, 1054, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 1044,
+1043, 1042, 1041, /* a=30 */
+1040, 1039, 1038, 1037, 1036, 1035, 1034, 1033, 1032, 1031, 1030, 1029, 1028,
+1027, 1026, 1025 /* a=31 */
+};
+ static unsigned char T2[384] = {
+ 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, /* a=8 */
+ 6, 5, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 0, 0, /* a=9 */
+ 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, /* a=10 */
+ 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, /* a=11 */
+ 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, /* a=12 */
+ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* a=13 */
+ 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, /* a=14 */
+ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* a=15 */
+ 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* a=16 */
+ 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* a=17 */
+ 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, /* a=18 */
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* a=19 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* a=20 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* a=21 */
+ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a=22 */
+ 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, /* a=23 */
+ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a=24 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* a=25 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* a=26 */
+ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a=27 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* a=28 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* a=29 */
+ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a=30 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* a=31 */
+};
+ mp_size_t n = LIMB_SIZE(p); /* number of limbs of X */
+ mp_size_t an = LIMB_SIZE(ap); /* number of limbs of A */
+
+ /* A should be normalized */
+ MPFR_ASSERTD((a[an - 1] & MPFR_LIMB_HIGHBIT) != 0);
+ /* We should have enough bits in one limb and GMP_NUMB_BITS should be even.
+ Since that does not depend on MPFR, we always check this. */
+ MPFR_ASSERTN((GMP_NUMB_BITS >= 12) && ((GMP_NUMB_BITS & 1) == 0));
+ /* {a, an} and {x, n} should not overlap */
+ MPFR_ASSERTD((a + an <= x) || (x + n <= a));
+ MPFR_ASSERTD(p >= 11);
+
+ if (MPFR_UNLIKELY(an > n)) /* we can cut the input to n limbs */
+ {
+ a += an - n;
+ an = n;
+ }
+
+ if (p == 11) /* should happen only from recursive calls */
+ {
+ unsigned long i, ab, ac;
+ mp_limb_t t;
+
+ /* take the 12+as most significant bits of A */
+ i = a[an - 1] >> (GMP_NUMB_BITS - (12 + as));
+ /* if one wants faithful rounding for p=11, replace #if 0 by #if 1 */
+ ab = i >> 4;
+ ac = (ab & 0x3F0) | (i & 0x0F);
+ t = (mp_limb_t) T1[ab - 0x80] + (mp_limb_t) T2[ac - 0x80];
+ x[0] = t << (GMP_NUMB_BITS - p);
+ }
+ else /* p >= 12 */
+ {
+ mpfr_prec_t h, pl;
+ mpfr_limb_ptr r, s, t, u;
+ mp_size_t xn, rn, th, ln, tn, sn, ahn, un;
+ mp_limb_t neg, cy, cu;
+ MPFR_TMP_DECL(marker);
+
+ /* compared to Algorithm 3.9 of [1], we have {a, an} = A/2 if as=0,
+ and A/4 if as=1. */
+
+ /* h = max(11, ceil((p+3)/2)) is the bitsize of the recursive call */
+ h = (p < 18) ? 11 : (p >> 1) + 2;
+
+ xn = LIMB_SIZE(h); /* limb size of the recursive Xh */
+ rn = LIMB_SIZE(2 * h); /* a priori limb size of Xh^2 */
+ ln = n - xn; /* remaining limbs to be computed */
+
+ /* Since |Xh - A^{-1/2}| <= 2^{-h}, then by multiplying by Xh + A^{-1/2}
+ we get |Xh^2 - 1/A| <= 2^{-h+1}, thus |A*Xh^2 - 1| <= 2^{-h+3},
+ thus the h-3 most significant bits of t should be zero,
+ which is in fact h+1+as-3 because of the normalization of A.
+ This corresponds to th=floor((h+1+as-3)/GMP_NUMB_BITS) limbs.
+
+ More precisely we have |Xh^2 - 1/A| <= 2^{-h} * (Xh + A^{-1/2})
+ <= 2^{-h} * (2 A^{-1/2} + 2^{-h}) <= 2.001 * 2^{-h} * A^{-1/2}
+ since A < 4 and h >= 11, thus
+ |A*Xh^2 - 1| <= 2.001 * 2^{-h} * A^{1/2} <= 1.001 * 2^{2-h}.
+ This is sufficient to prove that the upper limb of {t,tn} below is
+ less that 0.501 * 2^GMP_NUMB_BITS, thus cu = 0 below.
+ */
+ th = (h + 1 + as - 3) >> MPFR_LOG2_GMP_NUMB_BITS;
+ tn = LIMB_SIZE(2 * h + 1 + as);
+
+ /* we need h+1+as bits of a */
+ ahn = LIMB_SIZE(h + 1 + as); /* number of high limbs of A
+ needed for the recursive call*/
+ if (MPFR_UNLIKELY(ahn > an))
+ ahn = an;
+ mpfr_mpn_rec_sqrt (x + ln, h, a + an - ahn, ahn * GMP_NUMB_BITS, as);
+ /* the most h significant bits of X are set, X has ceil(h/GMP_NUMB_BITS)
+ limbs, the low (-h) % GMP_NUMB_BITS bits are zero */
+
+ /* compared to Algorithm 3.9 of [1], we have {x+ln,xn} = X_h */
+
+ MPFR_TMP_MARK (marker);
+ /* first step: square X in r, result is exact */
+ un = xn + (tn - th);
+ /* We use the same temporary buffer to store r and u: r needs 2*xn
+ limbs where u needs xn+(tn-th) limbs. Since tn can store at least
+ 2h bits, and th at most h bits, then tn-th can store at least h bits,
+ thus tn - th >= xn, and reserving the space for u is enough. */
+ MPFR_ASSERTD(2 * xn <= un);
+ u = r = MPFR_TMP_LIMBS_ALLOC (un);
+ if (2 * h <= GMP_NUMB_BITS) /* xn=rn=1, and since p <= 2h-3, n=1,
+ thus ln = 0 */
+ {
+ MPFR_ASSERTD(ln == 0);
+ cy = x[0] >> (GMP_NUMB_BITS >> 1);
+ r ++;
+ r[0] = cy * cy;
+ }
+ else if (xn == 1) /* xn=1, rn=2 */
+ umul_ppmm(r[1], r[0], x[ln], x[ln]);
+ else
+ {
+ mpn_mul_n (r, x + ln, x + ln, xn);
+ /* we have {r, 2*xn} = X_h^2 */
+ if (rn < 2 * xn)
+ r ++;
+ }
+ /* now the 2h most significant bits of {r, rn} contains X^2, r has rn
+ limbs, and the low (-2h) % GMP_NUMB_BITS bits are zero */
+
+ /* Second step: s <- A * (r^2), and truncate the low ap bits,
+ i.e., at weight 2^{-2h} (s is aligned to the low significant bits)
+ */
+ sn = an + rn;
+ s = MPFR_TMP_LIMBS_ALLOC (sn);
+ if (rn == 1) /* rn=1 implies n=1, since rn*GMP_NUMB_BITS >= 2h,
+ and 2h >= p+3 */
+ {
+ /* necessarily p <= GMP_NUMB_BITS-3: we can ignore the two low
+ bits from A */
+ /* since n=1, and we ensured an <= n, we also have an=1 */
+ MPFR_ASSERTD(an == 1);
+ umul_ppmm (s[1], s[0], r[0], a[0]);
+ }
+ else
+ {
+ /* we have p <= n * GMP_NUMB_BITS
+ 2h <= rn * GMP_NUMB_BITS with p+3 <= 2h <= p+4
+ thus n <= rn <= n + 1 */
+ MPFR_ASSERTD(rn <= n + 1);
+ /* since we ensured an <= n, we have an <= rn */
+ MPFR_ASSERTD(an <= rn);
+ mpn_mul (s, r, rn, a, an);
+ /* s should be near B^sn/2^(1+as), thus s[sn-1] is either
+ 100000... or 011111... if as=0, or
+ 010000... or 001111... if as=1.
+ We ignore the bits of s after the first 2h+1+as ones.
+ We have {s, rn+an} = A*X_h^2/2 if as=0, A*X_h^2/4 if as=1. */
+ }
+
+ /* We ignore the bits of s after the first 2h+1+as ones: s has rn + an
+ limbs, where rn = LIMBS(2h), an=LIMBS(a), and tn = LIMBS(2h+1+as). */
+ t = s + sn - tn; /* pointer to low limb of the high part of t */
+ /* the upper h-3 bits of 1-t should be zero,
+ where 1 corresponds to the most significant bit of t[tn-1] if as=0,
+ and to the 2nd most significant bit of t[tn-1] if as=1 */
+
+ /* compute t <- 1 - t, which is B^tn - {t, tn+1},
+ with rounding toward -Inf, i.e., rounding the input t toward +Inf.
+ We could only modify the low tn - th limbs from t, but it gives only
+ a small speedup, and would make the code more complex.
+ */
+ neg = t[tn - 1] & (MPFR_LIMB_HIGHBIT >> as);
+ if (neg == 0) /* Ax^2 < 1: we have t = th + eps, where 0 <= eps < ulp(th)
+ is the part truncated above, thus 1 - t rounded to -Inf
+ is 1 - th - ulp(th) */
+ {
+ /* since the 1+as most significant bits of t are zero, set them
+ to 1 before the one-complement */
+ t[tn - 1] |= MPFR_LIMB_HIGHBIT | (MPFR_LIMB_HIGHBIT >> as);
+ MPFR_COM_N (t, t, tn);
+ /* we should add 1 here to get 1-th complement, and subtract 1 for
+ -ulp(th), thus we do nothing */
+ }
+ else /* negative case: we want 1 - t rounded toward -Inf, i.e.,
+ th + eps rounded toward +Inf, which is th + ulp(th):
+ we discard the bit corresponding to 1,
+ and we add 1 to the least significant bit of t */
+ {
+ t[tn - 1] ^= neg;
+ mpn_add_1 (t, t, tn, 1);
+ }
+ tn -= th; /* we know at least th = floor((h+1+as-3)/GMP_NUMB_LIMBS) of
+ the high limbs of {t, tn} are zero */
+
+ /* tn = rn - th, where rn * GMP_NUMB_BITS >= 2*h and
+ th * GMP_NUMB_BITS <= h+1+as-3, thus tn > 0 */
+ MPFR_ASSERTD(tn > 0);
+
+ /* u <- x * t, where {t, tn} contains at least h+3 bits,
+ and {x, xn} contains h bits, thus tn >= xn */
+ MPFR_ASSERTD(tn >= xn);
+ if (tn == 1) /* necessarily xn=1 */
+ umul_ppmm (u[1], u[0], t[0], x[ln]);
+ else
+ mpn_mul (u, t, tn, x + ln, xn);
+
+ /* we have {u, tn+xn} = T_l X_h/2 if as=0, T_l X_h/4 if as=1 */
+
+ /* we have already discarded the upper th high limbs of t, thus we only
+ have to consider the upper n - th limbs of u */
+ un = n - th; /* un cannot be zero, since p <= n*GMP_NUMB_BITS,
+ h = ceil((p+3)/2) <= (p+4)/2,
+ th*GMP_NUMB_BITS <= h-1 <= p/2+1,
+ thus (n-th)*GMP_NUMB_BITS >= p/2-1.
+ */
+ MPFR_ASSERTD(un > 0);
+ u += (tn + xn) - un; /* xn + tn - un = xn + (original_tn - th) - (n - th)
+ = xn + original_tn - n
+ = LIMBS(h) + LIMBS(2h+1+as) - LIMBS(p) > 0
+ since 2h >= p+3 */
+ MPFR_ASSERTD(tn + xn > un); /* will allow to access u[-1] below */
+
+ /* In case as=0, u contains |x*(1-Ax^2)/2|, which is exactly what we
+ need to add or subtract.
+ In case as=1, u contains |x*(1-Ax^2)/4|, thus we need to multiply
+ u by 2. */
+
+ if (as == 1)
+ /* shift on un+1 limbs to get most significant bit of u[-1] into
+ least significant bit of u[0] */
+ mpn_lshift (u - 1, u - 1, un + 1, 1);
+
+ /* now {u,un} represents U / 2 from Algorithm 3.9 */
+
+ pl = n * GMP_NUMB_BITS - p; /* low bits from x */
+ /* We want that the low pl bits are zero after rounding to nearest,
+ thus we round u to nearest at bit pl-1 of u[0] */
+ if (pl > 0)
+ {
+ cu = mpn_add_1 (u, u, un, u[0] & (MPFR_LIMB_ONE << (pl - 1)));
+ /* mask bits 0..pl-1 of u[0] */
+ u[0] &= ~MPFR_LIMB_MASK(pl);
+ }
+ else /* round bit is in u[-1] */
+ cu = mpn_add_1 (u, u, un, u[-1] >> (GMP_NUMB_BITS - 1));
+ MPFR_ASSERTN(cu == 0);
+
+ /* We already have filled {x + ln, xn = n - ln}, and we want to add or
+ subtract {u, un} at position x.
+ un = n - th, where th contains <= h+1+as-3<=h-1 bits
+ ln = n - xn, where xn contains >= h bits
+ thus un > ln.
+ Warning: ln might be zero.
+ */
+ MPFR_ASSERTD(un > ln);
+ /* we can have un = ln + 2, for example with GMP_NUMB_BITS=32 and
+ p=62, as=0, then h=33, n=2, th=0, xn=2, thus un=2 and ln=0. */
+ MPFR_ASSERTD(un == ln + 1 || un == ln + 2);
+ /* the high un-ln limbs of u will overlap the low part of {x+ln,xn},
+ we need to add or subtract the overlapping part {u + ln, un - ln} */
+ /* Warning! th may be 0, in which case the mpn_add_1 and mpn_sub_1
+ below (with size = th) mustn't be used. */
+ if (neg == 0)
+ {
+ if (ln > 0)
+ MPN_COPY (x, u, ln);
+ cy = mpn_add (x + ln, x + ln, xn, u + ln, un - ln);
+ /* cy is the carry at x + (ln + xn) = x + n */
+ }
+ else /* negative case */
+ {
+ /* subtract {u+ln, un-ln} from {x+ln,un} */
+ cy = mpn_sub (x + ln, x + ln, xn, u + ln, un - ln);
+ /* cy is the borrow at x + (ln + xn) = x + n */
+
+ /* cy cannot be non-zero, since the most significant bit of Xh is 1,
+ and the correction is bounded by 2^{-h+3} */
+ MPFR_ASSERTD(cy == 0);
+ if (ln > 0)
+ {
+ MPFR_COM_N (x, u, ln);
+ /* we must add one for the 2-complement ... */
+ cy = mpn_add_1 (x, x, n, MPFR_LIMB_ONE);
+ /* ... and subtract 1 at x[ln], where n = ln + xn */
+ cy -= mpn_sub_1 (x + ln, x + ln, xn, MPFR_LIMB_ONE);
+ }
+ }
+
+ /* cy can be 1 when A=1, i.e., {a, n} = B^n. In that case we should
+ have X = B^n, and setting X to 1-2^{-p} satisties the error bound
+ of 1 ulp. */
+ if (MPFR_UNLIKELY(cy != 0))
+ {
+ cy -= mpn_sub_1 (x, x, n, MPFR_LIMB_ONE << pl);
+ MPFR_ASSERTD(cy == 0);
+ }
+
+ MPFR_TMP_FREE (marker);
+ }
+}
+
+int
+mpfr_rec_sqrt (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t rp, up, wp;
+ mp_size_t rn, wn;
+ int s, cy, inex;
+ mpfr_limb_ptr x;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (u), mpfr_log_prec, u, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (r), mpfr_log_prec, r, inex));
+
+ /* special values */
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(u)))
+ {
+ if (MPFR_IS_NAN(u))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_ZERO(u)) /* 1/sqrt(+0) = 1/sqrt(-0) = +Inf */
+ {
+ /* 0+ or 0- */
+ MPFR_SET_INF(r);
+ MPFR_SET_POS(r);
+ mpfr_set_divby0 ();
+ MPFR_RET(0); /* Inf is exact */
+ }
+ else
+ {
+ MPFR_ASSERTD(MPFR_IS_INF(u));
+ /* 1/sqrt(-Inf) = NAN */
+ if (MPFR_IS_NEG(u))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ /* 1/sqrt(+Inf) = +0 */
+ MPFR_SET_POS(r);
+ MPFR_SET_ZERO(r);
+ MPFR_RET(0);
+ }
+ }
+
+ /* if u < 0, 1/sqrt(u) is NaN */
+ if (MPFR_UNLIKELY(MPFR_IS_NEG(u)))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+
+ MPFR_SET_POS(r);
+
+ rp = MPFR_PREC(r); /* output precision */
+ up = MPFR_PREC(u); /* input precision */
+ wp = rp + 11; /* initial working precision */
+
+ /* Let u = U*2^e, where e = EXP(u), and 1/2 <= U < 1.
+ If e is even, we compute an approximation of X of (4U)^{-1/2},
+ and the result is X*2^(-(e-2)/2) [case s=1].
+ If e is odd, we compute an approximation of X of (2U)^{-1/2},
+ and the result is X*2^(-(e-1)/2) [case s=0]. */
+
+ /* parity of the exponent of u */
+ s = 1 - ((mpfr_uexp_t) MPFR_GET_EXP (u) & 1);
+
+ rn = LIMB_SIZE(rp);
+
+ /* for the first iteration, if rp + 11 fits into rn limbs, we round up
+ up to a full limb to maximize the chance of rounding, while avoiding
+ to allocate extra space */
+ wp = rp + 11;
+ if (wp < rn * GMP_NUMB_BITS)
+ wp = rn * GMP_NUMB_BITS;
+ for (;;)
+ {
+ MPFR_TMP_MARK (marker);
+ wn = LIMB_SIZE(wp);
+ if (r == u || wn > rn) /* out of place, i.e., we cannot write to r */
+ x = MPFR_TMP_LIMBS_ALLOC (wn);
+ else
+ x = MPFR_MANT(r);
+ mpfr_mpn_rec_sqrt (x, wp, MPFR_MANT(u), up, s);
+ /* If the input was not truncated, the error is at most one ulp;
+ if the input was truncated, the error is at most two ulps
+ (see algorithms.tex). */
+ if (MPFR_LIKELY (mpfr_round_p (x, wn, wp - (wp < up),
+ rp + (rnd_mode == MPFR_RNDN))))
+ break;
+
+ /* We detect only now the exact case where u=2^(2e), to avoid
+ slowing down the average case. This can happen only when the
+ mantissa is exactly 1/2 and the exponent is odd. */
+ if (s == 0 && mpfr_cmp_ui_2exp (u, 1, MPFR_EXP(u) - 1) == 0)
+ {
+ mpfr_prec_t pl = wn * GMP_NUMB_BITS - wp;
+
+ /* we should have x=111...111 */
+ mpn_add_1 (x, x, wn, MPFR_LIMB_ONE << pl);
+ x[wn - 1] = MPFR_LIMB_HIGHBIT;
+ s += 2;
+ break; /* go through */
+ }
+ MPFR_TMP_FREE(marker);
+
+ wp += GMP_NUMB_BITS;
+ }
+ cy = mpfr_round_raw (MPFR_MANT(r), x, wp, 0, rp, rnd_mode, &inex);
+ MPFR_EXP(r) = - (MPFR_EXP(u) - 1 - s) / 2;
+ if (MPFR_UNLIKELY(cy != 0))
+ {
+ MPFR_EXP(r) ++;
+ MPFR_MANT(r)[rn - 1] = MPFR_LIMB_HIGHBIT;
+ }
+ MPFR_TMP_FREE(marker);
+ return mpfr_check_range (r, inex, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/reldiff.c b/Build/source/libs/mpfr/mpfr-src/src/reldiff.c
new file mode 100644
index 00000000000..058e39da604
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/reldiff.c
@@ -0,0 +1,73 @@
+/* mpfr_reldiff -- compute relative difference of two floating-point numbers.
+
+Copyright 2000-2001, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* reldiff(b, c) = abs(b-c)/b */
+void
+mpfr_reldiff (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t b_copy;
+
+ if (MPFR_ARE_SINGULAR (b, c))
+ {
+ if (MPFR_IS_NAN(b) || MPFR_IS_NAN(c))
+ {
+ MPFR_SET_NAN(a);
+ return;
+ }
+ else if (MPFR_IS_INF(b))
+ {
+ if (MPFR_IS_INF (c) && (MPFR_SIGN (c) == MPFR_SIGN (b)))
+ MPFR_SET_ZERO(a);
+ else
+ MPFR_SET_NAN(a);
+ return;
+ }
+ else if (MPFR_IS_INF(c))
+ {
+ MPFR_SET_SAME_SIGN (a, b);
+ MPFR_SET_INF (a);
+ return;
+ }
+ else if (MPFR_IS_ZERO(b)) /* reldiff = abs(c)/c = sign(c) */
+ {
+ mpfr_set_si (a, MPFR_INT_SIGN (c), rnd_mode);
+ return;
+ }
+ /* Fall through */
+ }
+
+ if (a == b)
+ {
+ mpfr_init2 (b_copy, MPFR_PREC(b));
+ mpfr_set (b_copy, b, MPFR_RNDN);
+ }
+
+ mpfr_sub (a, b, c, rnd_mode);
+ mpfr_abs (a, a, rnd_mode); /* for compatibility with MPF */
+ mpfr_div (a, a, (a == b) ? b_copy : b, rnd_mode);
+
+ if (a == b)
+ mpfr_clear (b_copy);
+
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/rem1.c b/Build/source/libs/mpfr/mpfr-src/src/rem1.c
new file mode 100644
index 00000000000..a977a0924c3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/rem1.c
@@ -0,0 +1,229 @@
+/* mpfr_rem1 -- internal function
+ mpfr_fmod -- compute the floating-point remainder of x/y
+ mpfr_remquo and mpfr_remainder -- argument reduction functions
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+# include "mpfr-impl.h"
+
+/* we return as many bits as we can, keeping just one bit for the sign */
+# define WANTED_BITS (sizeof(long) * CHAR_BIT - 1)
+
+/*
+ rem1 works as follows:
+ The first rounding mode rnd_q indicate if we are actually computing
+ a fmod (MPFR_RNDZ) or a remainder/remquo (MPFR_RNDN).
+
+ Let q = x/y rounded to an integer in the direction rnd_q.
+ Put x - q*y in rem, rounded according to rnd.
+ If quo is not null, the value stored in *quo has the sign of q,
+ and agrees with q with the 2^n low order bits.
+ In other words, *quo = q (mod 2^n) and *quo q >= 0.
+ If rem is zero, then it has the sign of x.
+ The returned 'int' is the inexact flag giving the place of rem wrt x - q*y.
+
+ If x or y is NaN: *quo is undefined, rem is NaN.
+ If x is Inf, whatever y: *quo is undefined, rem is NaN.
+ If y is Inf, x not NaN nor Inf: *quo is 0, rem is x.
+ If y is 0, whatever x: *quo is undefined, rem is NaN.
+ If x is 0, whatever y (not NaN nor 0): *quo is 0, rem is x.
+
+ Otherwise if x and y are neither NaN, Inf nor 0, q is always defined,
+ thus *quo is.
+ Since |x - q*y| <= y/2, no overflow is possible.
+ Only an underflow is possible when y is very small.
+ */
+
+static int
+mpfr_rem1 (mpfr_ptr rem, long *quo, mpfr_rnd_t rnd_q,
+ mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd)
+{
+ mpfr_exp_t ex, ey;
+ int compare, inex, q_is_odd, sign, signx = MPFR_SIGN (x);
+ mpz_t mx, my, r;
+
+ MPFR_ASSERTD (rnd_q == MPFR_RNDN || rnd_q == MPFR_RNDZ);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x) || MPFR_IS_SINGULAR (y)))
+ {
+ if (MPFR_IS_NAN (x) || MPFR_IS_NAN (y) || MPFR_IS_INF (x)
+ || MPFR_IS_ZERO (y))
+ {
+ /* for remquo, quo is undefined */
+ MPFR_SET_NAN (rem);
+ MPFR_RET_NAN;
+ }
+ else /* either y is Inf and x is 0 or non-special,
+ or x is 0 and y is non-special,
+ in both cases the quotient is zero. */
+ {
+ if (quo)
+ *quo = 0;
+ return mpfr_set (rem, x, rnd);
+ }
+ }
+
+ /* now neither x nor y is NaN, Inf or zero */
+
+ mpz_init (mx);
+ mpz_init (my);
+ mpz_init (r);
+
+ ex = mpfr_get_z_2exp (mx, x); /* x = mx*2^ex */
+ ey = mpfr_get_z_2exp (my, y); /* y = my*2^ey */
+
+ /* to get rid of sign problems, we compute it separately:
+ quo(-x,-y) = quo(x,y), rem(-x,-y) = -rem(x,y)
+ quo(-x,y) = -quo(x,y), rem(-x,y) = -rem(x,y)
+ thus quo = sign(x/y)*quo(|x|,|y|), rem = sign(x)*rem(|x|,|y|) */
+ sign = (signx == MPFR_SIGN (y)) ? 1 : -1;
+ mpz_abs (mx, mx);
+ mpz_abs (my, my);
+ q_is_odd = 0;
+
+ /* divide my by 2^k if possible to make operations mod my easier */
+ {
+ unsigned long k = mpz_scan1 (my, 0);
+ ey += k;
+ mpz_fdiv_q_2exp (my, my, k);
+ }
+
+ if (ex <= ey)
+ {
+ /* q = x/y = mx/(my*2^(ey-ex)) */
+ mpz_mul_2exp (my, my, ey - ex); /* divide mx by my*2^(ey-ex) */
+ if (rnd_q == MPFR_RNDZ)
+ /* 0 <= |r| <= |my|, r has the same sign as mx */
+ mpz_tdiv_qr (mx, r, mx, my);
+ else
+ /* 0 <= |r| <= |my|, r has the same sign as my */
+ mpz_fdiv_qr (mx, r, mx, my);
+
+ if (rnd_q == MPFR_RNDN)
+ q_is_odd = mpz_tstbit (mx, 0);
+ if (quo) /* mx is the quotient */
+ {
+ mpz_tdiv_r_2exp (mx, mx, WANTED_BITS);
+ *quo = mpz_get_si (mx);
+ }
+ }
+ else /* ex > ey */
+ {
+ if (quo) /* remquo case */
+ /* for remquo, to get the low WANTED_BITS more bits of the quotient,
+ we first compute R = X mod Y*2^WANTED_BITS, where X and Y are
+ defined below. Then the low WANTED_BITS of the quotient are
+ floor(R/Y). */
+ mpz_mul_2exp (my, my, WANTED_BITS); /* 2^WANTED_BITS*Y */
+
+ else if (rnd_q == MPFR_RNDN) /* remainder case */
+ /* Let X = mx*2^(ex-ey) and Y = my. Then both X and Y are integers.
+ Assume X = R mod Y, then x = X*2^ey = R*2^ey mod (Y*2^ey=y).
+ To be able to perform the rounding, we need the least significant
+ bit of the quotient, i.e., one more bit in the remainder,
+ which is obtained by dividing by 2Y. */
+ mpz_mul_2exp (my, my, 1); /* 2Y */
+
+ mpz_set_ui (r, 2);
+ mpz_powm_ui (r, r, ex - ey, my); /* 2^(ex-ey) mod my */
+ mpz_mul (r, r, mx);
+ mpz_mod (r, r, my);
+
+ if (quo) /* now 0 <= r < 2^WANTED_BITS*Y */
+ {
+ mpz_fdiv_q_2exp (my, my, WANTED_BITS); /* back to Y */
+ mpz_tdiv_qr (mx, r, r, my);
+ /* oldr = mx*my + newr */
+ *quo = mpz_get_si (mx);
+ q_is_odd = *quo & 1;
+ }
+ else if (rnd_q == MPFR_RNDN) /* now 0 <= r < 2Y in the remainder case */
+ {
+ mpz_fdiv_q_2exp (my, my, 1); /* back to Y */
+ /* least significant bit of q */
+ q_is_odd = mpz_cmpabs (r, my) >= 0;
+ if (q_is_odd)
+ mpz_sub (r, r, my);
+ }
+ /* now 0 <= |r| < |my|, and if needed,
+ q_is_odd is the least significant bit of q */
+ }
+
+ if (mpz_cmp_ui (r, 0) == 0)
+ {
+ inex = mpfr_set_ui (rem, 0, MPFR_RNDN);
+ /* take into account sign of x */
+ if (signx < 0)
+ mpfr_neg (rem, rem, MPFR_RNDN);
+ }
+ else
+ {
+ if (rnd_q == MPFR_RNDN)
+ {
+ /* FIXME: the comparison 2*r < my could be done more efficiently
+ at the mpn level */
+ mpz_mul_2exp (r, r, 1);
+ compare = mpz_cmpabs (r, my);
+ mpz_fdiv_q_2exp (r, r, 1);
+ compare = ((compare > 0) ||
+ ((rnd_q == MPFR_RNDN) && (compare == 0) && q_is_odd));
+ /* if compare != 0, we need to subtract my to r, and add 1 to quo */
+ if (compare)
+ {
+ mpz_sub (r, r, my);
+ if (quo && (rnd_q == MPFR_RNDN))
+ *quo += 1;
+ }
+ }
+ /* take into account sign of x */
+ if (signx < 0)
+ mpz_neg (r, r);
+ inex = mpfr_set_z_2exp (rem, r, ex > ey ? ey : ex, rnd);
+ }
+
+ if (quo)
+ *quo *= sign;
+
+ mpz_clear (mx);
+ mpz_clear (my);
+ mpz_clear (r);
+
+ return inex;
+}
+
+int
+mpfr_remainder (mpfr_ptr rem, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd)
+{
+ return mpfr_rem1 (rem, (long *) 0, MPFR_RNDN, x, y, rnd);
+}
+
+int
+mpfr_remquo (mpfr_ptr rem, long *quo,
+ mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd)
+{
+ return mpfr_rem1 (rem, quo, MPFR_RNDN, x, y, rnd);
+}
+
+int
+mpfr_fmod (mpfr_ptr rem, mpfr_srcptr x, mpfr_srcptr y, mpfr_rnd_t rnd)
+{
+ return mpfr_rem1 (rem, (long *) 0, MPFR_RNDZ, x, y, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/rint.c b/Build/source/libs/mpfr/mpfr-src/src/rint.c
new file mode 100644
index 00000000000..f2a9410a489
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/rint.c
@@ -0,0 +1,443 @@
+/* mpfr_rint -- Round to an integer.
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Merge the following mpfr_rint code with mpfr_round_raw_generic? */
+
+/* For all the round-to-integer functions, we don't need to extend the
+ * exponent range. And it is better not to do so, so that we can test
+ * the flag setting for intermediate overflow in the test suite without
+ * involving huge non-integer numbers (thus in huge precision). This
+ * should also be faster.
+ *
+ * We also need to be careful with the flags.
+ */
+
+int
+mpfr_rint (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ int sign;
+ int rnd_away;
+ mpfr_exp_t exp;
+
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(u) ))
+ {
+ if (MPFR_IS_NAN(u))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_SAME_SIGN(r, u);
+ if (MPFR_IS_INF(u))
+ {
+ MPFR_SET_INF(r);
+ MPFR_RET(0); /* infinity is exact */
+ }
+ else /* now u is zero */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(u));
+ MPFR_SET_ZERO(r);
+ MPFR_RET(0); /* zero is exact */
+ }
+ }
+ MPFR_SET_SAME_SIGN (r, u); /* Does nothing if r==u */
+
+ sign = MPFR_INT_SIGN (u);
+ exp = MPFR_GET_EXP (u);
+
+ rnd_away =
+ rnd_mode == MPFR_RNDD ? sign < 0 :
+ rnd_mode == MPFR_RNDU ? sign > 0 :
+ rnd_mode == MPFR_RNDZ ? 0 :
+ rnd_mode == MPFR_RNDA ? 1 :
+ -1; /* round to nearest-even (RNDN) or nearest-away (RNDNA) */
+
+ /* rnd_away:
+ 1 if round away from zero,
+ 0 if round to zero,
+ -1 if not decided yet.
+ */
+
+ if (MPFR_UNLIKELY (exp <= 0)) /* 0 < |u| < 1 ==> round |u| to 0 or 1 */
+ {
+ /* Note: in the MPFR_RNDN mode, 0.5 must be rounded to 0. */
+ if (rnd_away != 0 &&
+ (rnd_away > 0 ||
+ (exp == 0 && (rnd_mode == MPFR_RNDNA ||
+ !mpfr_powerof2_raw (u)))))
+ {
+ /* The flags will correctly be set and overflow will correctly
+ be handled by mpfr_set_si. */
+ mpfr_set_si (r, sign, rnd_mode);
+ MPFR_RET(sign > 0 ? 2 : -2);
+ }
+ else
+ {
+ MPFR_SET_ZERO(r); /* r = 0 */
+ MPFR_RET(sign > 0 ? -2 : 2);
+ }
+ }
+ else /* exp > 0, |u| >= 1 */
+ {
+ mp_limb_t *up, *rp;
+ mp_size_t un, rn, ui;
+ int sh, idiff;
+ int uflags;
+
+ /*
+ * uflags will contain:
+ * _ 0 if u is an integer representable in r,
+ * _ 1 if u is an integer not representable in r,
+ * _ 2 if u is not an integer.
+ */
+
+ up = MPFR_MANT(u);
+ rp = MPFR_MANT(r);
+
+ un = MPFR_LIMB_SIZE(u);
+ rn = MPFR_LIMB_SIZE(r);
+ MPFR_UNSIGNED_MINUS_MODULO (sh, MPFR_PREC (r));
+
+ /* exp is in the current exponent range: obtained from the input. */
+ MPFR_SET_EXP (r, exp); /* Does nothing if r==u */
+
+ if ((exp - 1) / GMP_NUMB_BITS >= un)
+ {
+ ui = un;
+ idiff = 0;
+ uflags = 0; /* u is an integer, representable or not in r */
+ }
+ else
+ {
+ mp_size_t uj;
+
+ ui = (exp - 1) / GMP_NUMB_BITS + 1; /* #limbs of the int part */
+ MPFR_ASSERTD (un >= ui);
+ uj = un - ui; /* lowest limb of the integer part */
+ idiff = exp % GMP_NUMB_BITS; /* #int-part bits in up[uj] or 0 */
+
+ uflags = idiff == 0 || (up[uj] << idiff) == 0 ? 0 : 2;
+ if (uflags == 0)
+ while (uj > 0)
+ if (up[--uj] != 0)
+ {
+ uflags = 2;
+ break;
+ }
+ }
+
+ if (ui > rn)
+ {
+ /* More limbs in the integer part of u than in r.
+ Just round u with the precision of r. */
+ MPFR_ASSERTD (rp != up && un > rn);
+ MPN_COPY (rp, up + (un - rn), rn); /* r != u */
+ if (rnd_away < 0)
+ {
+ /* This is a rounding to nearest mode (MPFR_RNDN or MPFR_RNDNA).
+ Decide the rounding direction here. */
+ if (rnd_mode == MPFR_RNDN &&
+ (rp[0] & (MPFR_LIMB_ONE << sh)) == 0)
+ { /* halfway cases rounded toward zero */
+ mp_limb_t a, b;
+ /* a: rounding bit and some of the following bits */
+ /* b: boundary for a (weight of the rounding bit in a) */
+ if (sh != 0)
+ {
+ a = rp[0] & ((MPFR_LIMB_ONE << sh) - 1);
+ b = MPFR_LIMB_ONE << (sh - 1);
+ }
+ else
+ {
+ a = up[un - rn - 1];
+ b = MPFR_LIMB_HIGHBIT;
+ }
+ rnd_away = a > b;
+ if (a == b)
+ {
+ mp_size_t i;
+ for (i = un - rn - 1 - (sh == 0); i >= 0; i--)
+ if (up[i] != 0)
+ {
+ rnd_away = 1;
+ break;
+ }
+ }
+ }
+ else /* halfway cases rounded away from zero */
+ rnd_away = /* rounding bit */
+ ((sh != 0 && (rp[0] & (MPFR_LIMB_ONE << (sh - 1))) != 0) ||
+ (sh == 0 && (up[un - rn - 1] & MPFR_LIMB_HIGHBIT) != 0));
+ }
+ if (uflags == 0)
+ { /* u is an integer; determine if it is representable in r */
+ if (sh != 0 && rp[0] << (GMP_NUMB_BITS - sh) != 0)
+ uflags = 1; /* u is not representable in r */
+ else
+ {
+ mp_size_t i;
+ for (i = un - rn - 1; i >= 0; i--)
+ if (up[i] != 0)
+ {
+ uflags = 1; /* u is not representable in r */
+ break;
+ }
+ }
+ }
+ }
+ else /* ui <= rn */
+ {
+ mp_size_t uj, rj;
+ int ush;
+
+ uj = un - ui; /* lowest limb of the integer part in u */
+ rj = rn - ui; /* lowest limb of the integer part in r */
+
+ if (MPFR_LIKELY (rp != up))
+ MPN_COPY(rp + rj, up + uj, ui);
+
+ /* Ignore the lowest rj limbs, all equal to zero. */
+ rp += rj;
+ rn = ui;
+
+ /* number of fractional bits in whole rp[0] */
+ ush = idiff == 0 ? 0 : GMP_NUMB_BITS - idiff;
+
+ if (rj == 0 && ush < sh)
+ {
+ /* If u is an integer (uflags == 0), we need to determine
+ if it is representable in r, i.e. if its sh - ush bits
+ in the non-significant part of r are all 0. */
+ if (uflags == 0 && (rp[0] & ((MPFR_LIMB_ONE << sh) -
+ (MPFR_LIMB_ONE << ush))) != 0)
+ uflags = 1; /* u is an integer not representable in r */
+ }
+ else /* The integer part of u fits in r, we'll round to it. */
+ sh = ush;
+
+ if (rnd_away < 0)
+ {
+ /* This is a rounding to nearest mode.
+ Decide the rounding direction here. */
+ if (uj == 0 && sh == 0)
+ rnd_away = 0; /* rounding bit = 0 (not represented in u) */
+ else if (rnd_mode == MPFR_RNDN &&
+ (rp[0] & (MPFR_LIMB_ONE << sh)) == 0)
+ { /* halfway cases rounded toward zero */
+ mp_limb_t a, b;
+ /* a: rounding bit and some of the following bits */
+ /* b: boundary for a (weight of the rounding bit in a) */
+ if (sh != 0)
+ {
+ a = rp[0] & ((MPFR_LIMB_ONE << sh) - 1);
+ b = MPFR_LIMB_ONE << (sh - 1);
+ }
+ else
+ {
+ MPFR_ASSERTD (uj >= 1); /* see above */
+ a = up[uj - 1];
+ b = MPFR_LIMB_HIGHBIT;
+ }
+ rnd_away = a > b;
+ if (a == b)
+ {
+ mp_size_t i;
+ for (i = uj - 1 - (sh == 0); i >= 0; i--)
+ if (up[i] != 0)
+ {
+ rnd_away = 1;
+ break;
+ }
+ }
+ }
+ else /* halfway cases rounded away from zero */
+ rnd_away = /* rounding bit */
+ ((sh != 0 && (rp[0] & (MPFR_LIMB_ONE << (sh - 1))) != 0) ||
+ (sh == 0 && (MPFR_ASSERTD (uj >= 1),
+ up[uj - 1] & MPFR_LIMB_HIGHBIT) != 0));
+ }
+ /* Now we can make the low rj limbs to 0 */
+ MPN_ZERO (rp-rj, rj);
+ }
+
+ if (sh != 0)
+ rp[0] &= MP_LIMB_T_MAX << sh;
+
+ /* If u is a representable integer, there is no rounding. */
+ if (uflags == 0)
+ MPFR_RET(0);
+
+ MPFR_ASSERTD (rnd_away >= 0); /* rounding direction is defined */
+ if (rnd_away && mpn_add_1(rp, rp, rn, MPFR_LIMB_ONE << sh))
+ {
+ if (exp == __gmpfr_emax)
+ return mpfr_overflow (r, rnd_mode, sign) >= 0 ?
+ uflags : -uflags;
+ else /* no overflow */
+ {
+ MPFR_SET_EXP(r, exp + 1);
+ rp[rn-1] = MPFR_LIMB_HIGHBIT;
+ }
+ }
+
+ MPFR_RET (rnd_away ^ (sign < 0) ? uflags : -uflags);
+ } /* exp > 0, |u| >= 1 */
+}
+
+#undef mpfr_round
+
+int
+mpfr_round (mpfr_ptr r, mpfr_srcptr u)
+{
+ return mpfr_rint (r, u, MPFR_RNDNA);
+}
+
+#undef mpfr_trunc
+
+int
+mpfr_trunc (mpfr_ptr r, mpfr_srcptr u)
+{
+ return mpfr_rint (r, u, MPFR_RNDZ);
+}
+
+#undef mpfr_ceil
+
+int
+mpfr_ceil (mpfr_ptr r, mpfr_srcptr u)
+{
+ return mpfr_rint (r, u, MPFR_RNDU);
+}
+
+#undef mpfr_floor
+
+int
+mpfr_floor (mpfr_ptr r, mpfr_srcptr u)
+{
+ return mpfr_rint (r, u, MPFR_RNDD);
+}
+
+/* We need to save the flags and restore them after calling the mpfr_round,
+ * mpfr_trunc, mpfr_ceil, mpfr_floor functions because these functions set
+ * the inexact flag when the argument is not an integer.
+ */
+
+#undef mpfr_rint_round
+
+int
+mpfr_rint_round (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(u) ) || mpfr_integer_p (u))
+ return mpfr_set (r, u, rnd_mode);
+ else
+ {
+ mpfr_t tmp;
+ int inex;
+ unsigned int saved_flags = __gmpfr_flags;
+ MPFR_BLOCK_DECL (flags);
+
+ mpfr_init2 (tmp, MPFR_PREC (u));
+ /* round(u) is representable in tmp unless an overflow occurs */
+ MPFR_BLOCK (flags, mpfr_round (tmp, u));
+ __gmpfr_flags = saved_flags;
+ inex = (MPFR_OVERFLOW (flags)
+ ? mpfr_overflow (r, rnd_mode, MPFR_SIGN (u))
+ : mpfr_set (r, tmp, rnd_mode));
+ mpfr_clear (tmp);
+ return inex;
+ }
+}
+
+#undef mpfr_rint_trunc
+
+int
+mpfr_rint_trunc (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(u) ) || mpfr_integer_p (u))
+ return mpfr_set (r, u, rnd_mode);
+ else
+ {
+ mpfr_t tmp;
+ int inex;
+ unsigned int saved_flags = __gmpfr_flags;
+
+ mpfr_init2 (tmp, MPFR_PREC (u));
+ /* trunc(u) is always representable in tmp */
+ mpfr_trunc (tmp, u);
+ __gmpfr_flags = saved_flags;
+ inex = mpfr_set (r, tmp, rnd_mode);
+ mpfr_clear (tmp);
+ return inex;
+ }
+}
+
+#undef mpfr_rint_ceil
+
+int
+mpfr_rint_ceil (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(u) ) || mpfr_integer_p (u))
+ return mpfr_set (r, u, rnd_mode);
+ else
+ {
+ mpfr_t tmp;
+ int inex;
+ unsigned int saved_flags = __gmpfr_flags;
+ MPFR_BLOCK_DECL (flags);
+
+ mpfr_init2 (tmp, MPFR_PREC (u));
+ /* ceil(u) is representable in tmp unless an overflow occurs */
+ MPFR_BLOCK (flags, mpfr_ceil (tmp, u));
+ __gmpfr_flags = saved_flags;
+ inex = (MPFR_OVERFLOW (flags)
+ ? mpfr_overflow (r, rnd_mode, MPFR_SIGN_POS)
+ : mpfr_set (r, tmp, rnd_mode));
+ mpfr_clear (tmp);
+ return inex;
+ }
+}
+
+#undef mpfr_rint_floor
+
+int
+mpfr_rint_floor (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(u) ) || mpfr_integer_p (u))
+ return mpfr_set (r, u, rnd_mode);
+ else
+ {
+ mpfr_t tmp;
+ int inex;
+ unsigned int saved_flags = __gmpfr_flags;
+ MPFR_BLOCK_DECL (flags);
+
+ mpfr_init2 (tmp, MPFR_PREC (u));
+ /* floor(u) is representable in tmp unless an overflow occurs */
+ MPFR_BLOCK (flags, mpfr_floor (tmp, u));
+ __gmpfr_flags = saved_flags;
+ inex = (MPFR_OVERFLOW (flags)
+ ? mpfr_overflow (r, rnd_mode, MPFR_SIGN_NEG)
+ : mpfr_set (r, tmp, rnd_mode));
+ mpfr_clear (tmp);
+ return inex;
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/root.c b/Build/source/libs/mpfr/mpfr-src/src/root.c
new file mode 100644
index 00000000000..c1a141c90bf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/root.c
@@ -0,0 +1,205 @@
+/* mpfr_root -- kth root.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of y = x^(1/k) is done as follows:
+
+ Let x = sign * m * 2^(k*e) where m is an integer
+
+ with 2^(k*(n-1)) <= m < 2^(k*n) where n = PREC(y)
+
+ and m = s^k + r where 0 <= r and m < (s+1)^k
+
+ we want that s has n bits i.e. s >= 2^(n-1), or m >= 2^(k*(n-1))
+ i.e. m must have at least k*(n-1)+1 bits
+
+ then, not taking into account the sign, the result will be
+ x^(1/k) = s * 2^e or (s+1) * 2^e according to the rounding mode.
+ */
+
+int
+mpfr_root (mpfr_ptr y, mpfr_srcptr x, unsigned long k, mpfr_rnd_t rnd_mode)
+{
+ mpz_t m;
+ mpfr_exp_t e, r, sh;
+ mpfr_prec_t n, size_m, tmp;
+ int inexact, negative;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg k=%lu rnd=%d",
+ mpfr_get_prec (x), mpfr_log_prec, x, k, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (k <= 1))
+ {
+ if (k < 1) /* k==0 => y=x^(1/0)=x^(+Inf) */
+#if 0
+ /* For 0 <= x < 1 => +0.
+ For x = 1 => 1.
+ For x > 1, => +Inf.
+ For x < 0 => NaN.
+ */
+ {
+ if (MPFR_IS_NEG (x) && !MPFR_IS_ZERO (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ inexact = mpfr_cmp (x, __gmpfr_one);
+ if (inexact == 0)
+ return mpfr_set_ui (y, 1, rnd_mode); /* 1 may be Out of Range */
+ else if (inexact < 0)
+ return mpfr_set_ui (y, 0, rnd_mode); /* 0+ */
+ else
+ {
+ mpfr_set_inf (y, 1);
+ return 0;
+ }
+ }
+#endif
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else /* y =x^(1/1)=x */
+ return mpfr_set (y, x, rnd_mode);
+ }
+
+ /* Singular values */
+ else if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x))
+ {
+ MPFR_SET_NAN (y); /* NaN^(1/k) = NaN */
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (x)) /* +Inf^(1/k) = +Inf
+ -Inf^(1/k) = -Inf if k odd
+ -Inf^(1/k) = NaN if k even */
+ {
+ if (MPFR_IS_NEG(x) && (k % 2 == 0))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ else /* x is necessarily 0: (+0)^(1/k) = +0
+ (-0)^(1/k) = -0 */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ }
+
+ /* Returns NAN for x < 0 and k even */
+ else if (MPFR_IS_NEG (x) && (k % 2 == 0))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+
+ /* General case */
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpz_init (m);
+
+ e = mpfr_get_z_2exp (m, x); /* x = m * 2^e */
+ if ((negative = MPFR_IS_NEG(x)))
+ mpz_neg (m, m);
+ r = e % (mpfr_exp_t) k;
+ if (r < 0)
+ r += k; /* now r = e (mod k) with 0 <= e < r */
+ /* x = (m*2^r) * 2^(e-r) where e-r is a multiple of k */
+
+ MPFR_MPZ_SIZEINBASE2 (size_m, m);
+ /* for rounding to nearest, we want the round bit to be in the root */
+ n = MPFR_PREC (y) + (rnd_mode == MPFR_RNDN);
+
+ /* we now multiply m by 2^(r+k*sh) so that root(m,k) will give
+ exactly n bits: we want k*(n-1)+1 <= size_m + k*sh + r <= k*n
+ i.e. sh = floor ((kn-size_m-r)/k) */
+ if ((mpfr_exp_t) size_m + r > k * (mpfr_exp_t) n)
+ sh = 0; /* we already have too many bits */
+ else
+ sh = (k * (mpfr_exp_t) n - (mpfr_exp_t) size_m - r) / k;
+ sh = k * sh + r;
+ if (sh >= 0)
+ {
+ mpz_mul_2exp (m, m, sh);
+ e = e - sh;
+ }
+ else if (r > 0)
+ {
+ mpz_mul_2exp (m, m, r);
+ e = e - r;
+ }
+
+ /* invariant: x = m*2^e, with e divisible by k */
+
+ /* we reuse the variable m to store the kth root, since it is not needed
+ any more: we just need to know if the root is exact */
+ inexact = mpz_root (m, m, k) == 0;
+
+ MPFR_MPZ_SIZEINBASE2 (tmp, m);
+ sh = tmp - n;
+ if (sh > 0) /* we have to flush to 0 the last sh bits from m */
+ {
+ inexact = inexact || ((mpfr_exp_t) mpz_scan1 (m, 0) < sh);
+ mpz_fdiv_q_2exp (m, m, sh);
+ e += k * sh;
+ }
+
+ if (inexact)
+ {
+ if (negative)
+ rnd_mode = MPFR_INVERT_RND (rnd_mode);
+ if (rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDA
+ || (rnd_mode == MPFR_RNDN && mpz_tstbit (m, 0)))
+ inexact = 1, mpz_add_ui (m, m, 1);
+ else
+ inexact = -1;
+ }
+
+ /* either inexact is not zero, and the conversion is exact, i.e. inexact
+ is not changed; or inexact=0, and inexact is set only when
+ rnd_mode=MPFR_RNDN and bit (n+1) from m is 1 */
+ inexact += mpfr_set_z (y, m, MPFR_RNDN);
+ MPFR_SET_EXP (y, MPFR_GET_EXP (y) + e / (mpfr_exp_t) k);
+
+ if (negative)
+ {
+ MPFR_CHANGE_SIGN (y);
+ inexact = -inexact;
+ }
+
+ mpz_clear (m);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/round_near_x.c b/Build/source/libs/mpfr/mpfr-src/src/round_near_x.c
new file mode 100644
index 00000000000..02a9a1b56b5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/round_near_x.c
@@ -0,0 +1,233 @@
+/* mpfr_round_near_x -- Round a floating point number nears another one.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Use MPFR_FAST_COMPUTE_IF_SMALL_INPUT instead (a simple wrapper) */
+
+/* int mpfr_round_near_x (mpfr_ptr y, mpfr_srcptr v, mpfr_uexp_t err, int dir,
+ mpfr_rnd_t rnd)
+
+ TODO: fix this description.
+ Assuming y = o(f(x)) = o(x + g(x)) with |g(x)| < 2^(EXP(v)-error)
+ If x is small enough, y ~= v. This function checks and does this.
+
+ It assumes that f(x) is not representable exactly as a FP number.
+ v must not be a singular value (NAN, INF or ZERO), usual values are
+ v=1 or v=x.
+
+ y is the destination (a mpfr_t), v the value to set (a mpfr_t),
+ err the error term (a mpfr_uexp_t) such that |g(x)| < 2^(EXP(x)-err),
+ dir (an int) is the direction of the error (if dir = 0,
+ it rounds toward 0, if dir=1, it rounds away from 0),
+ rnd the rounding mode.
+
+ It returns 0 if it can't round.
+ Otherwise it returns the ternary flag (It can't return an exact value).
+*/
+
+/* What "small enough" means?
+
+ We work with the positive values.
+ Assuming err > Prec (y)+1
+
+ i = [ y = o(x)] // i = inexact flag
+ If i == 0
+ Setting x in y is exact. We have:
+ y = [XXXXXXXXX[...]]0[...] + error where [..] are optional zeros
+ if dirError = ToInf,
+ x < f(x) < x + 2^(EXP(x)-err)
+ since x=y, and ulp (y)/2 > 2^(EXP(x)-err), we have:
+ y < f(x) < y+ulp(y) and |y-f(x)| < ulp(y)/2
+ if rnd = RNDN, nothing
+ if rnd = RNDZ, nothing
+ if rnd = RNDA, addoneulp
+ elif dirError = ToZero
+ x -2^(EXP(x)-err) < f(x) < x
+ since x=y, and ulp (y)/2 > 2^(EXP(x)-err), we have:
+ y-ulp(y) < f(x) < y and |y-f(x)| < ulp(y)/2
+ if rnd = RNDN, nothing
+ if rnd = RNDZ, nexttozero
+ if rnd = RNDA, nothing
+ NOTE: err > prec (y)+1 is needed only for RNDN.
+ elif i > 0 and i = EVEN_ROUNDING
+ So rnd = RNDN and we have y = x + ulp(y)/2
+ if dirError = ToZero,
+ we have x -2^(EXP(x)-err) < f(x) < x
+ so y - ulp(y)/2 - 2^(EXP(x)-err) < f(x) < y-ulp(y)/2
+ so y -ulp(y) < f(x) < y-ulp(y)/2
+ => nexttozero(y)
+ elif dirError = ToInf
+ we have x < f(x) < x + 2^(EXP(x)-err)
+ so y - ulp(y)/2 < f(x) < y+ulp(y)/2-ulp(y)/2
+ so y - ulp(y)/2 < f(x) < y
+ => do nothing
+ elif i < 0 and i = -EVEN_ROUNDING
+ So rnd = RNDN and we have y = x - ulp(y)/2
+ if dirError = ToZero,
+ y < f(x) < y + ulp(y)/2 => do nothing
+ if dirError = ToInf
+ y + ulp(y)/2 < f(x) < y + ulp(y) => AddOneUlp
+ elif i > 0
+ we can't have rnd = RNDZ, and prec(x) > prec(y), so ulp(x) < ulp(y)
+ we have y - ulp (y) < x < y
+ or more exactly y - ulp(y) + ulp(x)/2 <= x <= y - ulp(x)/2
+ if rnd = RNDA,
+ if dirError = ToInf,
+ we have x < f(x) < x + 2^(EXP(x)-err)
+ if err > prec (x),
+ we have 2^(EXP(x)-err) < ulp(x), so 2^(EXP(x)-err) <= ulp(x)/2
+ so f(x) <= y - ulp(x)/2+ulp(x)/2 <= y
+ and y - ulp(y) < x < f(x)
+ so we have y - ulp(y) < f(x) < y
+ so do nothing.
+ elif we can round, ie y - ulp(y) < x + 2^(EXP(x)-err) < y
+ we have y - ulp(y) < x < f(x) < x + 2^(EXP(x)-err) < y
+ so do nothing
+ otherwise
+ Wrong. Example X=[0.11101]111111110000
+ + 1111111111111111111....
+ elif dirError = ToZero
+ we have x - 2^(EXP(x)-err) < f(x) < x
+ so f(x) < x < y
+ if err > prec (x)
+ x-2^(EXP(x)-err) >= x-ulp(x)/2 >= y - ulp(y) + ulp(x)/2-ulp(x)/2
+ so y - ulp(y) < f(x) < y
+ so do nothing
+ elif we can round, ie y - ulp(y) < x - 2^(EXP(x)-err) < y
+ y - ulp(y) < x - 2^(EXP(x)-err) < f(x) < y
+ so do nothing
+ otherwise
+ Wrong. Example: X=[1.111010]00000010
+ - 10000001000000000000100....
+ elif rnd = RNDN,
+ y - ulp(y)/2 < x < y and we can't have x = y-ulp(y)/2:
+ so we have:
+ y - ulp(y)/2 + ulp(x)/2 <= x <= y - ulp(x)/2
+ if dirError = ToInf
+ we have x < f(x) < x+2^(EXP(x)-err) and ulp(y) > 2^(EXP(x)-err)
+ so y - ulp(y)/2 + ulp (x)/2 < f(x) < y + ulp (y)/2 - ulp (x)/2
+ we can round but we can't compute inexact flag.
+ if err > prec (x)
+ y - ulp(y)/2 + ulp (x)/2 < f(x) < y + ulp(x)/2 - ulp(x)/2
+ so y - ulp(y)/2 + ulp (x)/2 < f(x) < y
+ we can round and compute inexact flag. do nothing
+ elif we can round, ie y - ulp(y)/2 < x + 2^(EXP(x)-err) < y
+ we have y - ulp(y)/2 + ulp (x)/2 < f(x) < y
+ so do nothing
+ otherwise
+ Wrong
+ elif dirError = ToZero
+ we have x -2^(EXP(x)-err) < f(x) < x and ulp(y)/2 > 2^(EXP(x)-err)
+ so y-ulp(y)+ulp(x)/2 < f(x) < y - ulp(x)/2
+ if err > prec (x)
+ x- ulp(x)/2 < f(x) < x
+ so y - ulp(y)/2+ulp(x)/2 - ulp(x)/2 < f(x) < x <= y - ulp(x)/2 < y
+ do nothing
+ elif we can round, ie y-ulp(y)/2 < x-2^(EXP(x)-err) < y
+ we have y-ulp(y)/2 < x-2^(EXP(x)-err) < f(x) < x < y
+ do nothing
+ otherwise
+ Wrong
+ elif i < 0
+ same thing?
+ */
+
+int
+mpfr_round_near_x (mpfr_ptr y, mpfr_srcptr v, mpfr_uexp_t err, int dir,
+ mpfr_rnd_t rnd)
+{
+ int inexact, sign;
+ unsigned int old_flags = __gmpfr_flags;
+
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (v));
+ MPFR_ASSERTD (dir == 0 || dir == 1);
+
+ /* First check if we can round. The test is more restrictive than
+ necessary. Note that if err is not representable in an mpfr_exp_t,
+ then err > MPFR_PREC (v) and the conversion to mpfr_exp_t will not
+ occur. */
+ if (!(err > MPFR_PREC (y) + 1
+ && (err > MPFR_PREC (v)
+ || mpfr_round_p (MPFR_MANT (v), MPFR_LIMB_SIZE (v),
+ (mpfr_exp_t) err,
+ MPFR_PREC (y) + (rnd == MPFR_RNDN)))))
+ /* If we assume we can not round, return 0, and y is not modified */
+ return 0;
+
+ /* First round v in y */
+ sign = MPFR_SIGN (v);
+ MPFR_SET_EXP (y, MPFR_GET_EXP (v));
+ MPFR_SET_SIGN (y, sign);
+ MPFR_RNDRAW_GEN (inexact, y, MPFR_MANT (v), MPFR_PREC (v), rnd, sign,
+ if (dir == 0)
+ {
+ inexact = -sign;
+ goto trunc_doit;
+ }
+ else
+ goto addoneulp;
+ , if (MPFR_UNLIKELY (++MPFR_EXP (y) > __gmpfr_emax))
+ mpfr_overflow (y, rnd, sign)
+ );
+
+ /* Fix it in some cases */
+ MPFR_ASSERTD (!MPFR_IS_NAN (y) && !MPFR_IS_ZERO (y));
+ /* If inexact == 0, setting y from v is exact but we haven't
+ take into account yet the error term */
+ if (inexact == 0)
+ {
+ if (dir == 0) /* The error term is negative for v positive */
+ {
+ inexact = sign;
+ if (MPFR_IS_LIKE_RNDZ (rnd, MPFR_IS_NEG_SIGN (sign)))
+ {
+ /* case nexttozero */
+ /* The underflow flag should be set if the result is zero */
+ __gmpfr_flags = old_flags;
+ inexact = -sign;
+ mpfr_nexttozero (y);
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO (y)))
+ mpfr_set_underflow ();
+ }
+ }
+ else /* The error term is positive for v positive */
+ {
+ inexact = -sign;
+ /* Round Away */
+ if (rnd != MPFR_RNDN && !MPFR_IS_LIKE_RNDZ (rnd, MPFR_IS_NEG_SIGN(sign)))
+ {
+ /* case nexttoinf */
+ /* The overflow flag should be set if the result is infinity */
+ inexact = sign;
+ mpfr_nexttoinf (y);
+ if (MPFR_UNLIKELY (MPFR_IS_INF (y)))
+ mpfr_set_overflow ();
+ }
+ }
+ }
+
+ /* the inexact flag cannot be 0, since this would mean an exact value,
+ and in this case we cannot round correctly */
+ MPFR_ASSERTD(inexact != 0);
+ MPFR_RET (inexact);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/round_p.c b/Build/source/libs/mpfr/mpfr-src/src/round_p.c
new file mode 100644
index 00000000000..bf12defd7ee
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/round_p.c
@@ -0,0 +1,123 @@
+/* mpfr_round_p -- check if an approximation is roundable.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Check against mpfr_can_round? */
+#ifdef MPFR_WANT_ASSERT
+# if MPFR_WANT_ASSERT >= 2
+int mpfr_round_p_2 (mp_limb_t *, mp_size_t, mpfr_exp_t, mpfr_prec_t);
+int
+mpfr_round_p (mp_limb_t *bp, mp_size_t bn, mpfr_exp_t err0, mpfr_prec_t prec)
+{
+ int i1, i2;
+
+ i1 = mpfr_round_p_2 (bp, bn, err0, prec);
+ i2 = mpfr_can_round_raw (bp, bn, MPFR_SIGN_POS, err0,
+ MPFR_RNDN, MPFR_RNDZ, prec);
+ if (i1 != i2)
+ {
+ fprintf (stderr, "mpfr_round_p(%d) != mpfr_can_round(%d)!\n"
+ "bn = %lu, err0 = %ld, prec = %lu\nbp = ", i1, i2,
+ (unsigned long) bn, (long) err0, (unsigned long) prec);
+ gmp_fprintf (stderr, "%NX\n", bp, bn);
+ MPFR_ASSERTN (0);
+ }
+ return i1;
+}
+# define mpfr_round_p mpfr_round_p_2
+# endif
+#endif
+
+/*
+ * Assuming {bp, bn} is an approximation of a non-singular number
+ * with error at most equal to 2^(EXP(b)-err0) (`err0' bits of b are known)
+ * of direction unknown, check if we can round b toward zero with
+ * precision prec.
+ */
+int
+mpfr_round_p (mp_limb_t *bp, mp_size_t bn, mpfr_exp_t err0, mpfr_prec_t prec)
+{
+ mpfr_prec_t err;
+ mp_size_t k, n;
+ mp_limb_t tmp, mask;
+ int s;
+
+ err = (mpfr_prec_t) bn * GMP_NUMB_BITS;
+ if (MPFR_UNLIKELY (err0 <= 0 || (mpfr_uexp_t) err0 <= prec || prec >= err))
+ return 0; /* can't round */
+ err = MIN (err, (mpfr_uexp_t) err0);
+
+ k = prec / GMP_NUMB_BITS;
+ s = GMP_NUMB_BITS - prec%GMP_NUMB_BITS;
+ n = err / GMP_NUMB_BITS - k;
+
+ MPFR_ASSERTD (n >= 0);
+ MPFR_ASSERTD (bn > k);
+
+ /* Check first limb */
+ bp += bn-1-k;
+ tmp = *bp--;
+ mask = s == GMP_NUMB_BITS ? MP_LIMB_T_MAX : MPFR_LIMB_MASK (s);
+ tmp &= mask;
+
+ if (MPFR_LIKELY (n == 0))
+ {
+ /* prec and error are in the same limb */
+ s = GMP_NUMB_BITS - err % GMP_NUMB_BITS;
+ MPFR_ASSERTD (s < GMP_NUMB_BITS);
+ tmp >>= s;
+ mask >>= s;
+ return tmp != 0 && tmp != mask;
+ }
+ else if (MPFR_UNLIKELY (tmp == 0))
+ {
+ /* Check if all (n-1) limbs are 0 */
+ while (--n)
+ if (*bp-- != 0)
+ return 1;
+ /* Check if final error limb is 0 */
+ s = GMP_NUMB_BITS - err % GMP_NUMB_BITS;
+ if (s == GMP_NUMB_BITS)
+ return 0;
+ tmp = *bp >> s;
+ return tmp != 0;
+ }
+ else if (MPFR_UNLIKELY (tmp == mask))
+ {
+ /* Check if all (n-1) limbs are 11111111111111111 */
+ while (--n)
+ if (*bp-- != MP_LIMB_T_MAX)
+ return 1;
+ /* Check if final error limb is 0 */
+ s = GMP_NUMB_BITS - err % GMP_NUMB_BITS;
+ if (s == GMP_NUMB_BITS)
+ return 0;
+ tmp = *bp >> s;
+ return tmp != (MP_LIMB_T_MAX >> s);
+ }
+ else
+ {
+ /* First limb is different from 000000 or 1111111 */
+ return 1;
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/round_prec.c b/Build/source/libs/mpfr/mpfr-src/src/round_prec.c
new file mode 100644
index 00000000000..9dce103520f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/round_prec.c
@@ -0,0 +1,240 @@
+/* mpfr_round_raw_generic, mpfr_round_raw2, mpfr_round_raw, mpfr_prec_round,
+ mpfr_can_round, mpfr_can_round_raw -- various rounding functions
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#define mpfr_round_raw_generic mpfr_round_raw
+#define flag 0
+#define use_inexp 1
+#include "round_raw_generic.c"
+
+#define mpfr_round_raw_generic mpfr_round_raw_2
+#define flag 1
+#define use_inexp 0
+#include "round_raw_generic.c"
+
+/* Seems to be unused. Remove comment to implement it.
+#define mpfr_round_raw_generic mpfr_round_raw_3
+#define flag 1
+#define use_inexp 1
+#include "round_raw_generic.c"
+*/
+
+#define mpfr_round_raw_generic mpfr_round_raw_4
+#define flag 0
+#define use_inexp 0
+#include "round_raw_generic.c"
+
+int
+mpfr_prec_round (mpfr_ptr x, mpfr_prec_t prec, mpfr_rnd_t rnd_mode)
+{
+ mp_limb_t *tmp, *xp;
+ int carry, inexact;
+ mpfr_prec_t nw, ow;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_ASSERTN(prec >= MPFR_PREC_MIN && prec <= MPFR_PREC_MAX);
+
+ nw = MPFR_PREC2LIMBS (prec); /* needed allocated limbs */
+
+ /* check if x has enough allocated space for the significand */
+ /* Get the number of limbs from the precision.
+ (Compatible with all allocation methods) */
+ ow = MPFR_LIMB_SIZE (x);
+ if (nw > ow)
+ {
+ /* FIXME: Variable can't be created using custom allocation,
+ MPFR_DECL_INIT or GROUP_ALLOC: How to detect? */
+ ow = MPFR_GET_ALLOC_SIZE(x);
+ if (nw > ow)
+ {
+ /* Realloc significand */
+ mpfr_limb_ptr tmpx = (mpfr_limb_ptr) (*__gmp_reallocate_func)
+ (MPFR_GET_REAL_PTR(x), MPFR_MALLOC_SIZE(ow), MPFR_MALLOC_SIZE(nw));
+ MPFR_SET_MANT_PTR(x, tmpx); /* mant ptr must be set
+ before alloc size */
+ MPFR_SET_ALLOC_SIZE(x, nw); /* new number of allocated limbs */
+ }
+ }
+
+ if (MPFR_UNLIKELY( MPFR_IS_SINGULAR(x) ))
+ {
+ MPFR_PREC(x) = prec; /* Special value: need to set prec */
+ if (MPFR_IS_NAN(x))
+ MPFR_RET_NAN;
+ MPFR_ASSERTD(MPFR_IS_INF(x) || MPFR_IS_ZERO(x));
+ return 0; /* infinity and zero are exact */
+ }
+
+ /* x is a non-zero real number */
+
+ MPFR_TMP_MARK(marker);
+ tmp = MPFR_TMP_LIMBS_ALLOC (nw);
+ xp = MPFR_MANT(x);
+ carry = mpfr_round_raw (tmp, xp, MPFR_PREC(x), MPFR_IS_NEG(x),
+ prec, rnd_mode, &inexact);
+ MPFR_PREC(x) = prec;
+
+ if (MPFR_UNLIKELY(carry))
+ {
+ mpfr_exp_t exp = MPFR_EXP (x);
+
+ if (MPFR_UNLIKELY(exp == __gmpfr_emax))
+ (void) mpfr_overflow(x, rnd_mode, MPFR_SIGN(x));
+ else
+ {
+ MPFR_ASSERTD (exp < __gmpfr_emax);
+ MPFR_SET_EXP (x, exp + 1);
+ xp[nw - 1] = MPFR_LIMB_HIGHBIT;
+ if (nw - 1 > 0)
+ MPN_ZERO(xp, nw - 1);
+ }
+ }
+ else
+ MPN_COPY(xp, tmp, nw);
+
+ MPFR_TMP_FREE(marker);
+ return inexact;
+}
+
+/* assumption: GMP_NUMB_BITS is a power of 2 */
+
+/* assuming b is an approximation to x in direction rnd1 with error at
+ most 2^(MPFR_EXP(b)-err), returns 1 if one is able to round exactly
+ x to precision prec with direction rnd2, and 0 otherwise.
+
+ Side effects: none.
+*/
+
+int
+mpfr_can_round (mpfr_srcptr b, mpfr_exp_t err, mpfr_rnd_t rnd1,
+ mpfr_rnd_t rnd2, mpfr_prec_t prec)
+{
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(b)))
+ return 0; /* We cannot round if Zero, Nan or Inf */
+ else
+ return mpfr_can_round_raw (MPFR_MANT(b), MPFR_LIMB_SIZE(b),
+ MPFR_SIGN(b), err, rnd1, rnd2, prec);
+}
+
+int
+mpfr_can_round_raw (const mp_limb_t *bp, mp_size_t bn, int neg, mpfr_exp_t err0,
+ mpfr_rnd_t rnd1, mpfr_rnd_t rnd2, mpfr_prec_t prec)
+{
+ mpfr_prec_t err;
+ mp_size_t k, k1, tn;
+ int s, s1;
+ mp_limb_t cc, cc2;
+ mp_limb_t *tmp;
+ MPFR_TMP_DECL(marker);
+
+ if (MPFR_UNLIKELY(err0 < 0 || (mpfr_uexp_t) err0 <= prec))
+ return 0; /* can't round */
+ else if (MPFR_UNLIKELY (prec > (mpfr_prec_t) bn * GMP_NUMB_BITS))
+ { /* then ulp(b) < precision < error */
+ return rnd2 == MPFR_RNDN && (mpfr_uexp_t) err0 - 2 >= prec;
+ /* can round only in rounding to the nearest and err0 >= prec + 2 */
+ }
+
+ MPFR_ASSERT_SIGN(neg);
+ neg = MPFR_IS_NEG_SIGN(neg);
+
+ /* if the error is smaller than ulp(b), then anyway it will propagate
+ up to ulp(b) */
+ err = ((mpfr_uexp_t) err0 > (mpfr_prec_t) bn * GMP_NUMB_BITS) ?
+ (mpfr_prec_t) bn * GMP_NUMB_BITS : (mpfr_prec_t) err0;
+
+ /* warning: if k = m*GMP_NUMB_BITS, consider limb m-1 and not m */
+ k = (err - 1) / GMP_NUMB_BITS;
+ MPFR_UNSIGNED_MINUS_MODULO(s, err);
+ /* the error corresponds to bit s in limb k, the most significant limb
+ being limb 0 */
+
+ k1 = (prec - 1) / GMP_NUMB_BITS;
+ MPFR_UNSIGNED_MINUS_MODULO(s1, prec);
+ /* the last significant bit is bit s1 in limb k1 */
+
+ /* don't need to consider the k1 most significant limbs */
+ k -= k1;
+ bn -= k1;
+ prec -= (mpfr_prec_t) k1 * GMP_NUMB_BITS;
+
+ /* if when adding or subtracting (1 << s) in bp[bn-1-k], it does not
+ change bp[bn-1] >> s1, then we can round */
+ MPFR_TMP_MARK(marker);
+ tn = bn;
+ k++; /* since we work with k+1 everywhere */
+ tmp = MPFR_TMP_LIMBS_ALLOC (tn);
+ if (bn > k)
+ MPN_COPY (tmp, bp, bn - k);
+
+ MPFR_ASSERTD (k > 0);
+
+ /* Transform RNDD and RNDU to Zero / Away */
+ MPFR_ASSERTD((neg == 0) || (neg ==1));
+ if (MPFR_IS_RNDUTEST_OR_RNDDNOTTEST(rnd1, neg))
+ rnd1 = MPFR_RNDZ;
+
+ switch (rnd1)
+ {
+ case MPFR_RNDZ:
+ /* Round to Zero */
+ cc = (bp[bn - 1] >> s1) & 1;
+ /* mpfr_round_raw2 returns 1 if one should add 1 at ulp(b,prec),
+ and 0 otherwise */
+ cc ^= mpfr_round_raw2 (bp, bn, neg, rnd2, prec);
+ /* cc is the new value of bit s1 in bp[bn-1] */
+ /* now round b + 2^(MPFR_EXP(b)-err) */
+ cc2 = mpn_add_1 (tmp + bn - k, bp + bn - k, k, MPFR_LIMB_ONE << s);
+ break;
+ case MPFR_RNDN:
+ /* Round to nearest */
+ /* first round b+2^(MPFR_EXP(b)-err) */
+ cc = mpn_add_1 (tmp + bn - k, bp + bn - k, k, MPFR_LIMB_ONE << s);
+ cc = (tmp[bn - 1] >> s1) & 1; /* gives 0 when cc=1 */
+ cc ^= mpfr_round_raw2 (tmp, bn, neg, rnd2, prec);
+ /* now round b-2^(MPFR_EXP(b)-err) */
+ cc2 = mpn_sub_1 (tmp + bn - k, bp + bn - k, k, MPFR_LIMB_ONE << s);
+ break;
+ default:
+ /* Round away */
+ cc = (bp[bn - 1] >> s1) & 1;
+ cc ^= mpfr_round_raw2 (bp, bn, neg, rnd2, prec);
+ /* now round b +/- 2^(MPFR_EXP(b)-err) */
+ cc2 = mpn_sub_1 (tmp + bn - k, bp + bn - k, k, MPFR_LIMB_ONE << s);
+ break;
+ }
+
+ /* if cc2 is 1, then a carry or borrow propagates to the next limb */
+ if (cc2 && cc)
+ {
+ MPFR_TMP_FREE(marker);
+ return 0;
+ }
+
+ cc2 = (tmp[bn - 1] >> s1) & 1;
+ cc2 ^= mpfr_round_raw2 (tmp, bn, neg, rnd2, prec);
+
+ MPFR_TMP_FREE(marker);
+ return cc == cc2;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/round_raw_generic.c b/Build/source/libs/mpfr/mpfr-src/src/round_raw_generic.c
new file mode 100644
index 00000000000..d4e0e8ed347
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/round_raw_generic.c
@@ -0,0 +1,259 @@
+/* mpfr_round_raw_generic -- Generic rounding function
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef flag
+# error "ERROR: flag must be defined (0 / 1)"
+#endif
+#ifndef use_inexp
+# error "ERROR: use_enexp must be defined (0 / 1)"
+#endif
+#ifndef mpfr_round_raw_generic
+# error "ERROR: mpfr_round_raw_generic must be defined"
+#endif
+
+/*
+ * If flag = 0, puts in y the value of xp (with precision xprec and
+ * sign 1 if negative=0, -1 otherwise) rounded to precision yprec and
+ * direction rnd_mode. Supposes x is not zero nor NaN nor +/- Infinity
+ * (i.e. *xp != 0). In that case, the return value is a possible carry
+ * (0 or 1) that may happen during the rounding, in which case the result
+ * is a power of two.
+ *
+ * If inexp != NULL, put in *inexp the inexact flag of the rounding (0, 1, -1).
+ * In case of even rounding when rnd = MPFR_RNDN, put MPFR_EVEN_INEX (2) or
+ * -MPFR_EVEN_INEX (-2) in *inexp.
+ *
+ * If flag = 1, just returns whether one should add 1 or not for rounding.
+ *
+ * Note: yprec may be < MPFR_PREC_MIN; in particular, it may be equal
+ * to 1. In this case, the even rounding is done away from 0, which is
+ * a natural generalization. Indeed, a number with 1-bit precision can
+ * be seen as a subnormal number with more precision.
+ */
+
+int
+mpfr_round_raw_generic(
+#if flag == 0
+ mp_limb_t *yp,
+#endif
+ const mp_limb_t *xp, mpfr_prec_t xprec,
+ int neg, mpfr_prec_t yprec, mpfr_rnd_t rnd_mode
+#if use_inexp != 0
+ , int *inexp
+#endif
+ )
+{
+ mp_size_t xsize, nw;
+ mp_limb_t himask, lomask, sb;
+ int rw;
+#if flag == 0
+ int carry;
+#endif
+#if use_inexp == 0
+ int *inexp;
+#endif
+
+ if (use_inexp)
+ MPFR_ASSERTD(inexp != ((int*) 0));
+ MPFR_ASSERTD(neg == 0 || neg == 1);
+
+ if (flag && !use_inexp &&
+ (xprec <= yprec || MPFR_IS_LIKE_RNDZ (rnd_mode, neg)))
+ return 0;
+
+ xsize = MPFR_PREC2LIMBS (xprec);
+ nw = yprec / GMP_NUMB_BITS;
+ rw = yprec & (GMP_NUMB_BITS - 1);
+
+ if (MPFR_UNLIKELY(xprec <= yprec))
+ { /* No rounding is necessary. */
+ /* if yp=xp, maybe an overlap: MPN_COPY_DECR is ok when src <= dst */
+ if (MPFR_LIKELY(rw))
+ nw++;
+ MPFR_ASSERTD(nw >= 1);
+ MPFR_ASSERTD(nw >= xsize);
+ if (use_inexp)
+ *inexp = 0;
+#if flag == 0
+ MPN_COPY_DECR(yp + (nw - xsize), xp, xsize);
+ MPN_ZERO(yp, nw - xsize);
+#endif
+ return 0;
+ }
+
+ if (use_inexp || !MPFR_IS_LIKE_RNDZ(rnd_mode, neg))
+ {
+ mp_size_t k = xsize - nw - 1;
+
+ if (MPFR_LIKELY(rw))
+ {
+ nw++;
+ lomask = MPFR_LIMB_MASK (GMP_NUMB_BITS - rw);
+ himask = ~lomask;
+ }
+ else
+ {
+ lomask = ~(mp_limb_t) 0;
+ himask = ~(mp_limb_t) 0;
+ }
+ MPFR_ASSERTD(k >= 0);
+ sb = xp[k] & lomask; /* First non-significant bits */
+ /* Rounding to nearest ? */
+ if (MPFR_LIKELY( rnd_mode == MPFR_RNDN) )
+ {
+ /* Rounding to nearest */
+ mp_limb_t rbmask = MPFR_LIMB_ONE << (GMP_NUMB_BITS - 1 - rw);
+ if (sb & rbmask) /* rounding bit */
+ sb &= ~rbmask; /* it is 1, clear it */
+ else
+ {
+ /* Rounding bit is 0, behave like rounding to 0 */
+ goto rnd_RNDZ;
+ }
+ while (MPFR_UNLIKELY(sb == 0) && k > 0)
+ sb = xp[--k];
+ /* rounding to nearest, with rounding bit = 1 */
+ if (MPFR_UNLIKELY(sb == 0)) /* Even rounding. */
+ {
+ /* sb == 0 && rnd_mode == MPFR_RNDN */
+ sb = xp[xsize - nw] & (himask ^ (himask << 1));
+ if (sb == 0)
+ {
+ if (use_inexp)
+ *inexp = 2*MPFR_EVEN_INEX*neg-MPFR_EVEN_INEX;
+ /* ((neg!=0)^(sb!=0)) ? MPFR_EVEN_INEX : -MPFR_EVEN_INEX;*/
+ /* Since neg = 0 or 1 and sb=0*/
+#if flag == 1
+ return 0 /*sb != 0 && rnd_mode != MPFR_RNDZ */;
+#else
+ MPN_COPY_INCR(yp, xp + xsize - nw, nw);
+ yp[0] &= himask;
+ return 0;
+#endif
+ }
+ else
+ {
+ /* sb != 0 && rnd_mode == MPFR_RNDN */
+ if (use_inexp)
+ *inexp = MPFR_EVEN_INEX-2*MPFR_EVEN_INEX*neg;
+ /*((neg!=0)^(sb!=0))? MPFR_EVEN_INEX : -MPFR_EVEN_INEX; */
+ /*Since neg= 0 or 1 and sb != 0 */
+ goto rnd_RNDN_add_one_ulp;
+ }
+ }
+ else /* sb != 0 && rnd_mode == MPFR_RNDN*/
+ {
+ if (use_inexp)
+ /* *inexp = (neg == 0) ? 1 : -1; but since neg = 0 or 1 */
+ *inexp = 1-2*neg;
+ rnd_RNDN_add_one_ulp:
+#if flag == 1
+ return 1; /*sb != 0 && rnd_mode != MPFR_RNDZ;*/
+#else
+ carry = mpn_add_1 (yp, xp + xsize - nw, nw,
+ rw ?
+ MPFR_LIMB_ONE << (GMP_NUMB_BITS - rw)
+ : MPFR_LIMB_ONE);
+ yp[0] &= himask;
+ return carry;
+#endif
+ }
+ }
+ /* Rounding to Zero ? */
+ else if (MPFR_IS_LIKE_RNDZ(rnd_mode, neg))
+ {
+ /* rnd_mode == MPFR_RNDZ */
+ rnd_RNDZ:
+ while (MPFR_UNLIKELY(sb == 0) && k > 0)
+ sb = xp[--k];
+ if (use_inexp)
+ /* rnd_mode == MPFR_RNDZ and neg = 0 or 1 */
+ /* (neg != 0) ^ (rnd_mode != MPFR_RNDZ)) ? 1 : -1);*/
+ *inexp = MPFR_UNLIKELY(sb == 0) ? 0 : (2*neg-1);
+#if flag == 1
+ return 0; /*sb != 0 && rnd_mode != MPFR_RNDZ;*/
+#else
+ MPN_COPY_INCR(yp, xp + xsize - nw, nw);
+ yp[0] &= himask;
+ return 0;
+#endif
+ }
+ else
+ {
+ /* rnd_mode = Away */
+ while (MPFR_UNLIKELY(sb == 0) && k > 0)
+ sb = xp[--k];
+ if (MPFR_UNLIKELY(sb == 0))
+ {
+ /* sb = 0 && rnd_mode != MPFR_RNDZ */
+ if (use_inexp)
+ /* (neg != 0) ^ (rnd_mode != MPFR_RNDZ)) ? 1 : -1);*/
+ *inexp = 0;
+#if flag == 1
+ return 0;
+#else
+ MPN_COPY_INCR(yp, xp + xsize - nw, nw);
+ yp[0] &= himask;
+ return 0;
+#endif
+ }
+ else
+ {
+ /* sb != 0 && rnd_mode != MPFR_RNDZ */
+ if (use_inexp)
+ /* (neg != 0) ^ (rnd_mode != MPFR_RNDZ)) ? 1 : -1);*/
+ *inexp = 1-2*neg;
+#if flag == 1
+ return 1;
+#else
+ carry = mpn_add_1(yp, xp + xsize - nw, nw,
+ rw ? MPFR_LIMB_ONE << (GMP_NUMB_BITS - rw)
+ : 1);
+ yp[0] &= himask;
+ return carry;
+#endif
+ }
+ }
+ }
+ else
+ {
+ /* Roundind mode = Zero / No inexact flag */
+#if flag == 1
+ return 0 /*sb != 0 && rnd_mode != MPFR_RNDZ*/;
+#else
+ if (MPFR_LIKELY(rw))
+ {
+ nw++;
+ himask = ~MPFR_LIMB_MASK (GMP_NUMB_BITS - rw);
+ }
+ else
+ himask = ~(mp_limb_t) 0;
+ MPN_COPY_INCR(yp, xp + xsize - nw, nw);
+ yp[0] &= himask;
+ return 0;
+#endif
+ }
+}
+
+#undef flag
+#undef use_inexp
+#undef mpfr_round_raw_generic
diff --git a/Build/source/libs/mpfr/mpfr-src/src/scale2.c b/Build/source/libs/mpfr/mpfr-src/src/scale2.c
new file mode 100644
index 00000000000..8711cd4ab78
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/scale2.c
@@ -0,0 +1,91 @@
+/* mpfr_scale2 -- multiply a double float by 2^exp
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <float.h> /* for DBL_EPSILON */
+#include "mpfr-impl.h"
+
+/* Note: we could use the ldexp function, but since we want not to depend on
+ math.h, we write our own implementation. */
+
+/* multiplies 1/2 <= d <= 1 by 2^exp */
+double
+mpfr_scale2 (double d, int exp)
+{
+#if _GMP_IEEE_FLOATS
+ {
+ union ieee_double_extract x;
+
+ if (MPFR_UNLIKELY (d == 1.0))
+ {
+ d = 0.5;
+ exp ++;
+ }
+
+ /* now 1/2 <= d < 1 */
+
+ /* infinities and zeroes have already been checked */
+ MPFR_ASSERTD (-1073 <= exp && exp <= 1025);
+
+ x.d = d;
+ if (MPFR_UNLIKELY (exp < -1021)) /* subnormal case */
+ {
+ x.s.exp += exp + 52;
+ x.d *= DBL_EPSILON;
+ }
+ else /* normalized case */
+ {
+ x.s.exp += exp;
+ }
+ return x.d;
+ }
+#else /* _GMP_IEEE_FLOATS */
+ {
+ double factor;
+
+ /* An overflow may occurs (example: 0.5*2^1024) */
+ if (d < 1.0)
+ {
+ d += d;
+ exp--;
+ }
+ /* Now 1.0 <= d < 2.0 */
+
+ if (exp < 0)
+ {
+ factor = 0.5;
+ exp = -exp;
+ }
+ else
+ {
+ factor = 2.0;
+ }
+ while (exp != 0)
+ {
+ if ((exp & 1) != 0)
+ d *= factor;
+ exp >>= 1;
+ factor *= factor;
+ }
+ return d;
+ }
+#endif
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sec.c b/Build/source/libs/mpfr/mpfr-src/src/sec.c
new file mode 100644
index 00000000000..5088cfa49a9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sec.c
@@ -0,0 +1,34 @@
+/* mpfr_sec - secant function = 1/cos.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FUNCTION mpfr_sec
+#define INVERSE mpfr_cos
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_ZERO(y,x) return mpfr_set_ui (y, 1, rnd_mode)
+/* for x near 0, sec(x) = 1 + x^2/2 + ..., more precisely |sec(x)-1| < x^2
+ for |x| <= 1. */
+#define ACTION_TINY(y,x,r) \
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT(y, __gmpfr_one, -2 * MPFR_GET_EXP (x), 0, \
+ 1, r, inexact = _inexact; goto end)
+
+#include "gen_inverse.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sech.c b/Build/source/libs/mpfr/mpfr-src/src/sech.c
new file mode 100644
index 00000000000..ff8999605f3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sech.c
@@ -0,0 +1,40 @@
+/* mpfr_sech - Hyperbolic secant function = 1/cosh.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* The hyperbolic secant function is defined by sech(x)=1/cosh(x):
+ csc (NaN) = NaN.
+ csc (+Inf) = csc (-Inf) = 0+.
+ csc (+0) = csc (-0) = 1.
+ */
+
+#define FUNCTION mpfr_sech
+#define INVERSE mpfr_cosh
+#define ACTION_NAN(y) do { MPFR_SET_NAN(y); MPFR_RET_NAN; } while (1)
+#define ACTION_INF(y) return mpfr_set_ui (y, 0, MPFR_RNDN)
+#define ACTION_ZERO(y,x) return mpfr_set_ui (y, 1, rnd_mode)
+/* for x near 0, sech(x) = 1 - x^2/2 + ..., more precisely |sech(x)-1| <= x^2/2
+ for |x| <= 1. The tiny action is the same as for cos(x). */
+#define ACTION_TINY(y,x,r) \
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT(y, __gmpfr_one, -2 * MPFR_GET_EXP (x), 1, \
+ 0, r, inexact = _inexact; goto end)
+
+#include "gen_inverse.h"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set.c b/Build/source/libs/mpfr/mpfr-src/src/set.c
new file mode 100644
index 00000000000..be8d9012039
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set.c
@@ -0,0 +1,80 @@
+/* mpfr_set -- copy of a floating-point number
+
+Copyright 1999, 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* set a to abs(b) * signb: a=b when signb = SIGN(b), a=abs(b) when signb=1 */
+int
+mpfr_set4 (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode, int signb)
+{
+ /* Sign is ALWAYS copied */
+ MPFR_SET_SIGN (a, signb);
+
+ /* Exponent is also always copied since if the number is singular,
+ the exponent field determined the number.
+ Can't use MPFR_SET_EXP since the exponent may be singular */
+ MPFR_EXP (a) = MPFR_EXP (b);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (b)))
+ {
+ /* MPFR_SET_NAN, MPFR_SET_ZERO and MPFR_SET_INF are useless
+ since MPFR_EXP (a) = MPFR_EXP (b) does the job */
+ if (MPFR_IS_NAN (b))
+ MPFR_RET_NAN;
+ else
+ MPFR_RET (0);
+ }
+ else if (MPFR_LIKELY (MPFR_PREC (b) == MPFR_PREC (a)))
+ {
+ /* Same precision and b is not singular:
+ * just copy the mantissa, and set the exponent and the sign
+ * The result is exact. */
+ MPN_COPY (MPFR_MANT (a), MPFR_MANT (b), MPFR_LIMB_SIZE (b));
+ MPFR_RET (0);
+ }
+ else
+ {
+ int inex;
+
+ /* Else Round B inside a */
+ MPFR_RNDRAW (inex, a, MPFR_MANT (b), MPFR_PREC (b), rnd_mode, signb,
+ if (MPFR_UNLIKELY ( ++MPFR_EXP (a) > __gmpfr_emax))
+ return mpfr_overflow (a, rnd_mode, signb) );
+ MPFR_RET (inex);
+ }
+}
+
+/* Set a to b */
+#undef mpfr_set
+int
+mpfr_set (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set4 (a, b, rnd_mode, MPFR_SIGN (b));
+}
+
+/* Set a to |b| */
+#undef mpfr_abs
+int
+mpfr_abs (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set4 (a, b, rnd_mode, MPFR_SIGN_POS);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_d.c b/Build/source/libs/mpfr/mpfr-src/src/set_d.c
new file mode 100644
index 00000000000..e57b399f77c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_d.c
@@ -0,0 +1,255 @@
+/* mpfr_set_d -- convert a machine double precision float to
+ a multiple precision floating-point number
+
+Copyright 1999-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <float.h> /* For DOUBLE_ISINF and DOUBLE_ISNAN */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* extracts the bits of d in rp[0..n-1] where n=ceil(53/GMP_NUMB_BITS).
+ Assumes d is neither 0 nor NaN nor Inf. */
+static long
+__gmpfr_extract_double (mpfr_limb_ptr rp, double d)
+ /* e=0 iff GMP_NUMB_BITS=32 and rp has only one limb */
+{
+ long exp;
+ mp_limb_t manl;
+#if GMP_NUMB_BITS == 32
+ mp_limb_t manh;
+#endif
+
+ /* BUGS
+ 1. Should handle Inf and NaN in IEEE specific code.
+ 2. Handle Inf and NaN also in default code, to avoid hangs.
+ 3. Generalize to handle all GMP_NUMB_BITS.
+ 4. This lits is incomplete and misspelled.
+ */
+
+ MPFR_ASSERTD(!DOUBLE_ISNAN(d));
+ MPFR_ASSERTD(!DOUBLE_ISINF(d));
+ MPFR_ASSERTD(d != 0.0);
+
+#if _GMP_IEEE_FLOATS
+
+ {
+ union ieee_double_extract x;
+ x.d = d;
+
+ exp = x.s.exp;
+ if (exp)
+ {
+#if GMP_NUMB_BITS >= 64
+ manl = ((MPFR_LIMB_ONE << 63)
+ | ((mp_limb_t) x.s.manh << 43) | ((mp_limb_t) x.s.manl << 11));
+#else
+ manh = (MPFR_LIMB_ONE << 31) | (x.s.manh << 11) | (x.s.manl >> 21);
+ manl = x.s.manl << 11;
+#endif
+ }
+ else /* subnormal number */
+ {
+#if GMP_NUMB_BITS >= 64
+ manl = ((mp_limb_t) x.s.manh << 43) | ((mp_limb_t) x.s.manl << 11);
+#else
+ manh = (x.s.manh << 11) /* high 21 bits */
+ | (x.s.manl >> 21); /* middle 11 bits */
+ manl = x.s.manl << 11; /* low 21 bits */
+#endif
+ }
+
+ if (exp)
+ exp -= 1022;
+ else
+ exp = -1021;
+ }
+
+#else /* _GMP_IEEE_FLOATS */
+
+ {
+ /* Unknown (or known to be non-IEEE) double format. */
+ exp = 0;
+ if (d >= 1.0)
+ {
+ MPFR_ASSERTN (d * 0.5 != d);
+ while (d >= 32768.0)
+ {
+ d *= (1.0 / 65536.0);
+ exp += 16;
+ }
+ while (d >= 1.0)
+ {
+ d *= 0.5;
+ exp += 1;
+ }
+ }
+ else if (d < 0.5)
+ {
+ while (d < (1.0 / 65536.0))
+ {
+ d *= 65536.0;
+ exp -= 16;
+ }
+ while (d < 0.5)
+ {
+ d *= 2.0;
+ exp -= 1;
+ }
+ }
+
+ d *= MP_BASE_AS_DOUBLE;
+#if GMP_NUMB_BITS >= 64
+ manl = d;
+#else
+ manh = (mp_limb_t) d;
+ manl = (mp_limb_t) ((d - manh) * MP_BASE_AS_DOUBLE);
+#endif
+ }
+
+#endif /* _GMP_IEEE_FLOATS */
+
+#if GMP_NUMB_BITS >= 64
+ rp[0] = manl;
+#else
+ rp[1] = manh;
+ rp[0] = manl;
+#endif
+
+ return exp;
+}
+
+/* End of part included from gmp-2.0.2 */
+
+int
+mpfr_set_d (mpfr_ptr r, double d, mpfr_rnd_t rnd_mode)
+{
+ int signd, inexact;
+ unsigned int cnt;
+ mp_size_t i, k;
+ mpfr_t tmp;
+ mp_limb_t tmpmant[MPFR_LIMBS_PER_DOUBLE];
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ if (MPFR_UNLIKELY(DOUBLE_ISNAN(d)))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_UNLIKELY(d == 0))
+ {
+#if _GMP_IEEE_FLOATS
+ union ieee_double_extract x;
+
+ MPFR_SET_ZERO(r);
+ /* set correct sign */
+ x.d = d;
+ if (x.s.sig == 1)
+ MPFR_SET_NEG(r);
+ else
+ MPFR_SET_POS(r);
+#else /* _GMP_IEEE_FLOATS */
+ MPFR_SET_ZERO(r);
+ {
+ /* This is to get the sign of zero on non-IEEE hardware
+ Some systems support +0.0, -0.0 and unsigned zero.
+ We can't use d==+0.0 since it should be always true,
+ so we check that the memory representation of d is the
+ same than +0.0. etc */
+ /* FIXME: consider the case where +0.0 or -0.0 may have several
+ representations. */
+ double poszero = +0.0, negzero = DBL_NEG_ZERO;
+ if (memcmp(&d, &poszero, sizeof(double)) == 0)
+ MPFR_SET_POS(r);
+ else if (memcmp(&d, &negzero, sizeof(double)) == 0)
+ MPFR_SET_NEG(r);
+ else
+ MPFR_SET_POS(r);
+ }
+#endif
+ return 0; /* 0 is exact */
+ }
+ else if (MPFR_UNLIKELY(DOUBLE_ISINF(d)))
+ {
+ MPFR_SET_INF(r);
+ if (d > 0)
+ MPFR_SET_POS(r);
+ else
+ MPFR_SET_NEG(r);
+ return 0; /* infinity is exact */
+ }
+
+ /* now d is neither 0, nor NaN nor Inf */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* warning: don't use tmp=r here, even if SIZE(r) >= MPFR_LIMBS_PER_DOUBLE,
+ since PREC(r) may be different from PREC(tmp), and then both variables
+ would have same precision in the mpfr_set4 call below. */
+ MPFR_MANT(tmp) = tmpmant;
+ MPFR_PREC(tmp) = IEEE_DBL_MANT_DIG;
+
+ signd = (d < 0) ? MPFR_SIGN_NEG : MPFR_SIGN_POS;
+ d = ABS (d);
+
+ /* don't use MPFR_SET_EXP here since the exponent may be out of range */
+ MPFR_EXP(tmp) = __gmpfr_extract_double (tmpmant, d);
+
+#ifdef MPFR_WANT_ASSERT
+ /* Failed assertion if the stored value is 0 (e.g., if the exponent range
+ has been reduced at the wrong moment and an underflow to 0 occurred).
+ Probably a bug in the C implementation if this happens. */
+ i = 0;
+ while (tmpmant[i] == 0)
+ {
+ i++;
+ MPFR_ASSERTN(i < MPFR_LIMBS_PER_DOUBLE);
+ }
+#endif
+
+ /* determine the index i-1 of the most significant non-zero limb
+ and the number k of zero high limbs */
+ i = MPFR_LIMBS_PER_DOUBLE;
+ MPN_NORMALIZE_NOT_ZERO(tmpmant, i);
+ k = MPFR_LIMBS_PER_DOUBLE - i;
+
+ count_leading_zeros (cnt, tmpmant[i - 1]);
+
+ if (MPFR_LIKELY(cnt != 0))
+ mpn_lshift (tmpmant + k, tmpmant, i, cnt);
+ else if (k != 0)
+ MPN_COPY (tmpmant + k, tmpmant, i);
+
+ if (MPFR_UNLIKELY(k != 0))
+ MPN_ZERO (tmpmant, k);
+
+ /* don't use MPFR_SET_EXP here since the exponent may be out of range */
+ MPFR_EXP(tmp) -= (mpfr_exp_t) (cnt + k * GMP_NUMB_BITS);
+
+ /* tmp is exact since PREC(tmp)=53 */
+ inexact = mpfr_set4 (r, tmp, rnd_mode, signd);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inexact, rnd_mode);
+}
+
+
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_d64.c b/Build/source/libs/mpfr/mpfr-src/src/set_d64.c
new file mode 100644
index 00000000000..2ce71d6e663
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_d64.c
@@ -0,0 +1,224 @@
+/* mpfr_set_decimal64 -- convert a IEEE 754r decimal64 float to
+ a multiple precision floating-point number
+
+See http://gcc.gnu.org/ml/gcc/2006-06/msg00691.html,
+http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html,
+and TR 24732 <http://www.open-std.org/jtc1/sc22/wg14/www/projects#24732>.
+
+Copyright 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#ifdef MPFR_WANT_DECIMAL_FLOATS
+
+#ifdef DPD_FORMAT
+ /* conversion 10-bits to 3 digits */
+static unsigned int T[1024] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80, 81, 800, 801, 880, 881, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 90, 91, 810, 811, 890, 891, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 82, 83, 820, 821, 808, 809, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 92, 93, 830, 831, 818, 819, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 84, 85, 840, 841, 88, 89, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 94, 95,
+ 850, 851, 98, 99, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 86, 87, 860, 861,
+ 888, 889, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 96, 97, 870, 871, 898,
+ 899, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 180, 181, 900, 901,
+ 980, 981, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 190, 191, 910,
+ 911, 990, 991, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 182, 183,
+ 920, 921, 908, 909, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 192,
+ 193, 930, 931, 918, 919, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 184, 185, 940, 941, 188, 189, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 194, 195, 950, 951, 198, 199, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 186, 187, 960, 961, 988, 989, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 196, 197, 970, 971, 998, 999, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 280, 281, 802, 803, 882, 883, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 290, 291, 812, 813, 892, 893, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 282, 283, 822, 823, 828, 829, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 292, 293, 832, 833, 838, 839, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 284, 285, 842, 843, 288, 289, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 294, 295, 852, 853, 298, 299,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 286, 287, 862, 863, 888,
+ 889, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 296, 297, 872, 873,
+ 898, 899, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 380, 381, 902,
+ 903, 982, 983, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 390, 391,
+ 912, 913, 992, 993, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 382,
+ 383, 922, 923, 928, 929, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 392, 393, 932, 933, 938, 939, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 384, 385, 942, 943, 388, 389, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 394, 395, 952, 953, 398, 399, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 386, 387, 962, 963, 988, 989, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 396, 397, 972, 973, 998, 999, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 480, 481, 804, 805, 884, 885, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 490, 491, 814, 815, 894, 895, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 482, 483, 824, 825, 848, 849, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 492, 493, 834, 835, 858, 859, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 484, 485, 844, 845, 488, 489,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 494, 495, 854, 855, 498,
+ 499, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 486, 487, 864, 865,
+ 888, 889, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 496, 497, 874,
+ 875, 898, 899, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 580, 581,
+ 904, 905, 984, 985, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 590,
+ 591, 914, 915, 994, 995, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 582, 583, 924, 925, 948, 949, 530, 531, 532, 533, 534, 535, 536, 537, 538,
+ 539, 592, 593, 934, 935, 958, 959, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 584, 585, 944, 945, 588, 589, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 594, 595, 954, 955, 598, 599, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 586, 587, 964, 965, 988, 989, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 596, 597, 974, 975, 998, 999, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 680, 681, 806, 807, 886, 887, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 690, 691, 816, 817, 896, 897, 620, 621,
+ 622, 623, 624, 625, 626, 627, 628, 629, 682, 683, 826, 827, 868, 869, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 692, 693, 836, 837, 878, 879,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 684, 685, 846, 847, 688,
+ 689, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 694, 695, 856, 857,
+ 698, 699, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 686, 687, 866,
+ 867, 888, 889, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 696, 697,
+ 876, 877, 898, 899, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 780,
+ 781, 906, 907, 986, 987, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 790, 791, 916, 917, 996, 997, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 782, 783, 926, 927, 968, 969, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 792, 793, 936, 937, 978, 979, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 784, 785, 946, 947, 788, 789, 750, 751, 752, 753, 754, 755,
+ 756, 757, 758, 759, 794, 795, 956, 957, 798, 799, 760, 761, 762, 763, 764,
+ 765, 766, 767, 768, 769, 786, 787, 966, 967, 988, 989, 770, 771, 772, 773,
+ 774, 775, 776, 777, 778, 779, 796, 797, 976, 977, 998, 999 };
+#endif
+
+/* Convert d to a decimal string (one-to-one correspondence, no rounding).
+ The string s needs to have at least 23 characters.
+ */
+static void
+decimal64_to_string (char *s, _Decimal64 d)
+{
+ union ieee_double_extract x;
+ union ieee_double_decimal64 y;
+ char *t;
+ unsigned int Gh; /* most 5 significant bits from combination field */
+ int exp; /* exponent */
+ mp_limb_t rp[2];
+ mp_size_t rn = 2;
+ unsigned int i;
+#ifdef DPD_FORMAT
+ unsigned int d0, d1, d2, d3, d4, d5;
+#endif
+
+ /* now convert BID or DPD to string */
+ y.d64 = d;
+ x.d = y.d;
+ Gh = x.s.exp >> 6;
+ if (Gh == 31)
+ {
+ sprintf (s, "NaN");
+ return;
+ }
+ else if (Gh == 30)
+ {
+ if (x.s.sig == 0)
+ sprintf (s, "Inf");
+ else
+ sprintf (s, "-Inf");
+ return;
+ }
+ t = s;
+ if (x.s.sig)
+ *t++ = '-';
+
+#ifdef DPD_FORMAT
+ if (Gh < 24)
+ {
+ exp = (x.s.exp >> 1) & 768;
+ d0 = Gh & 7;
+ }
+ else
+ {
+ exp = (x.s.exp & 384) << 1;
+ d0 = 8 | (Gh & 1);
+ }
+ exp |= (x.s.exp & 63) << 2;
+ exp |= x.s.manh >> 18;
+ d1 = (x.s.manh >> 8) & 1023;
+ d2 = ((x.s.manh << 2) | (x.s.manl >> 30)) & 1023;
+ d3 = (x.s.manl >> 20) & 1023;
+ d4 = (x.s.manl >> 10) & 1023;
+ d5 = x.s.manl & 1023;
+ sprintf (t, "%1u%3u%3u%3u%3u%3u", d0, T[d1], T[d2], T[d3], T[d4], T[d5]);
+ /* Warning: some characters may be blank */
+ for (i = 0; i < 16; i++)
+ if (t[i] == ' ')
+ t[i] = '0';
+ t += 16;
+#else /* BID */
+ if (Gh < 24)
+ {
+ /* the biased exponent E is formed from G[0] to G[9] and the
+ significand from bits G[10] through the end of the decoding */
+ exp = x.s.exp >> 1;
+ /* manh has 20 bits, manl has 32 bits */
+ rp[1] = ((x.s.exp & 1) << 20) | x.s.manh;
+ rp[0] = x.s.manl;
+ }
+ else
+ {
+ /* the biased exponent is formed from G[2] to G[11] */
+ exp = (x.s.exp & 511) << 1;
+ rp[1] = x.s.manh;
+ rp[0] = x.s.manl;
+ exp |= rp[1] >> 19;
+ rp[1] &= 524287; /* 2^19-1: cancel G[11] */
+ rp[1] |= 2097152; /* add 2^21 */
+ }
+#if GMP_NUMB_BITS >= 54
+ rp[0] |= rp[1] << 32;
+ rn = 1;
+#endif
+ while (rn > 0 && rp[rn - 1] == 0)
+ rn --;
+ if (rn == 0)
+ {
+ *t = 0;
+ i = 1;
+ }
+ else
+ {
+ i = mpn_get_str ((unsigned char*)t, 10, rp, rn);
+ }
+ while (i-- > 0)
+ *t++ += '0';
+#endif /* DPD or BID */
+
+ exp -= 398; /* unbiased exponent */
+ t += sprintf (t, "E%d", exp);
+}
+
+int
+mpfr_set_decimal64 (mpfr_ptr r, _Decimal64 d, mpfr_rnd_t rnd_mode)
+{
+ char s[23]; /* need 1 character for sign,
+ 16 characters for mantissa,
+ 1 character for exponent,
+ 4 characters for exponent (including sign),
+ 1 character for terminating \0. */
+
+ decimal64_to_string (s, d);
+ return mpfr_set_str (r, s, 10, rnd_mode);
+}
+
+#endif /* MPFR_WANT_DECIMAL_FLOATS */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_dfl_prec.c b/Build/source/libs/mpfr/mpfr-src/src/set_dfl_prec.c
new file mode 100644
index 00000000000..158d167ab45
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_dfl_prec.c
@@ -0,0 +1,41 @@
+/* mpfr_set_default_prec, mpfr_get_default_prec -- set/get default precision
+
+Copyright 1999-2001, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* default is IEEE double precision, i.e. 53 bits */
+mpfr_prec_t MPFR_THREAD_ATTR __gmpfr_default_fp_bit_precision \
+ = IEEE_DBL_MANT_DIG;
+
+void
+mpfr_set_default_prec (mpfr_prec_t prec)
+{
+ MPFR_ASSERTN (prec >= MPFR_PREC_MIN && prec <= MPFR_PREC_MAX);
+ __gmpfr_default_fp_bit_precision = prec;
+}
+
+#undef mpfr_get_default_prec
+mpfr_prec_t
+mpfr_get_default_prec (void)
+{
+ return __gmpfr_default_fp_bit_precision;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_exp.c b/Build/source/libs/mpfr/mpfr-src/src/set_exp.c
new file mode 100644
index 00000000000..7e98dfd7aa5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_exp.c
@@ -0,0 +1,37 @@
+/* mpfr_set_exp - set the exponent of a floating-point number
+
+Copyright 2002-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_set_exp (mpfr_ptr x, mpfr_exp_t exponent)
+{
+ if (exponent >= __gmpfr_emin && exponent <= __gmpfr_emax)
+ {
+ MPFR_EXP(x) = exponent; /* do not use MPFR_SET_EXP of course... */
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_f.c b/Build/source/libs/mpfr/mpfr-src/src/set_f.c
new file mode 100644
index 00000000000..b6c9f5f12d2
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_f.c
@@ -0,0 +1,99 @@
+/* mpfr_set_f -- set a MPFR number from a GNU MPF number
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_set_f (mpfr_ptr y, mpf_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mp_limb_t *my, *mx, *tmp;
+ unsigned long cnt, sx, sy;
+ int inexact, carry = 0;
+ MPFR_TMP_DECL(marker);
+
+ sx = ABS(SIZ(x)); /* number of limbs of the mantissa of x */
+
+ if (sx == 0) /* x is zero */
+ {
+ MPFR_SET_ZERO(y);
+ MPFR_SET_POS(y);
+ return 0; /* 0 is exact */
+ }
+
+ if (SIZ(x) * MPFR_FROM_SIGN_TO_INT(MPFR_SIGN(y)) < 0)
+ MPFR_CHANGE_SIGN (y);
+
+ sy = MPFR_LIMB_SIZE (y);
+ my = MPFR_MANT(y);
+ mx = PTR(x);
+
+ count_leading_zeros(cnt, mx[sx - 1]);
+
+ if (sy <= sx) /* we may have to round even when sy = sx */
+ {
+ unsigned long xprec = sx * GMP_NUMB_BITS;
+
+ MPFR_TMP_MARK(marker);
+ tmp = MPFR_TMP_LIMBS_ALLOC (sx);
+ if (cnt)
+ mpn_lshift (tmp, mx, sx, cnt);
+ else
+ /* FIXME: we may avoid the copy here, and directly call mpfr_round_raw
+ on mx instead of tmp */
+ MPN_COPY (tmp, mx, sx);
+ carry = mpfr_round_raw (my, tmp, xprec, (SIZ(x) < 0), MPFR_PREC(y),
+ rnd_mode, &inexact);
+ if (MPFR_UNLIKELY(carry)) /* result is a power of two */
+ my[sy - 1] = MPFR_LIMB_HIGHBIT;
+ MPFR_TMP_FREE(marker);
+ }
+ else
+ {
+ if (cnt)
+ mpn_lshift (my + sy - sx, mx, sx, cnt);
+ else
+ MPN_COPY (my + sy - sx, mx, sx);
+ MPN_ZERO(my, sy - sx);
+ /* no rounding necessary, since y has a larger mantissa */
+ inexact = 0;
+ }
+
+ /* warning: EXP(x) * GMP_NUMB_BITS may exceed the maximal exponent */
+ if (EXP(x) > 1 + (__gmpfr_emax - 1) / GMP_NUMB_BITS)
+ {
+ /* EXP(x) >= 2 + floor((__gmpfr_emax-1)/GMP_NUMB_BITS)
+ EXP(x) >= 2 + (__gmpfr_emax - GMP_NUMB_BITS) / GMP_NUMB_BITS
+ >= 1 + __gmpfr_emax / GMP_NUMB_BITS
+ EXP(x) * GMP_NUMB_BITS >= __gmpfr_emax + GMP_NUMB_BITS
+ Since 0 <= cnt <= GMP_NUMB_BITS-1, and 0 <= carry <= 1,
+ we have then EXP(x) * GMP_NUMB_BITS - cnt + carry > __gmpfr_emax */
+ return mpfr_overflow (y, rnd_mode, MPFR_SIGN (y));
+ }
+ else
+ {
+ /* Do not use MPFR_SET_EXP as the exponent may be out of range. */
+ MPFR_EXP (y) = EXP (x) * GMP_NUMB_BITS - (mpfr_exp_t) cnt + carry;
+ }
+
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_flt.c b/Build/source/libs/mpfr/mpfr-src/src/set_flt.c
new file mode 100644
index 00000000000..3c26e148b92
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_flt.c
@@ -0,0 +1,34 @@
+/* mpfr_set_flt -- convert a machine single precision float to mpfr_t
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_set_flt (mpfr_ptr r, float f, mpfr_rnd_t rnd_mode)
+{
+ /* we convert f to double precision and use mpfr_set_d;
+ NaN and infinities should be preserved, and all single precision
+ numbers are exactly representable in the double format, thus the
+ conversion is always exact */
+ return mpfr_set_d (r, (double) f, rnd_mode);
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_inf.c b/Build/source/libs/mpfr/mpfr-src/src/set_inf.c
new file mode 100644
index 00000000000..d5345ccf855
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_inf.c
@@ -0,0 +1,33 @@
+/* mpfr_set_inf -- set a number to plus or minus infinity.
+
+Copyright 2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_set_inf (mpfr_ptr x, int sign)
+{
+ MPFR_SET_INF(x);
+ if (sign >= 0)
+ MPFR_SET_POS(x);
+ else
+ MPFR_SET_NEG(x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_ld.c b/Build/source/libs/mpfr/mpfr-src/src/set_ld.c
new file mode 100644
index 00000000000..628807c44be
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_ld.c
@@ -0,0 +1,331 @@
+/* mpfr_set_ld -- convert a machine long double to
+ a multiple precision floating-point number
+
+Copyright 2002-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <float.h>
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Various i386 systems have been seen with <float.h> LDBL constants equal
+ to the DBL ones, whereas they ought to be bigger, reflecting the 10-byte
+ IEEE extended format on that processor. gcc 3.2.1 on FreeBSD and Solaris
+ has been seen with the problem, and gcc 2.95.4 on FreeBSD 4.7. */
+
+#if HAVE_LDOUBLE_IEEE_EXT_LITTLE
+static const union {
+ char bytes[10];
+ long double d;
+} ldbl_max_struct = {
+ { '\377','\377','\377','\377',
+ '\377','\377','\377','\377',
+ '\376','\177' }
+};
+#define MPFR_LDBL_MAX (ldbl_max_struct.d)
+#else
+#define MPFR_LDBL_MAX LDBL_MAX
+#endif
+
+#ifndef HAVE_LDOUBLE_IEEE_EXT_LITTLE
+
+/* Generic code */
+int
+mpfr_set_ld (mpfr_ptr r, long double d, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t t, u;
+ int inexact, shift_exp;
+ long double x;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ /* Check for NAN */
+ LONGDOUBLE_NAN_ACTION (d, goto nan);
+
+ /* Check for INF */
+ if (d > MPFR_LDBL_MAX)
+ {
+ mpfr_set_inf (r, 1);
+ return 0;
+ }
+ else if (d < -MPFR_LDBL_MAX)
+ {
+ mpfr_set_inf (r, -1);
+ return 0;
+ }
+ /* Check for ZERO */
+ else if (d == 0.0)
+ return mpfr_set_d (r, (double) d, rnd_mode);
+
+ mpfr_init2 (t, MPFR_LDBL_MANT_DIG);
+ mpfr_init2 (u, IEEE_DBL_MANT_DIG);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ convert:
+ x = d;
+ MPFR_SET_ZERO (t); /* The sign doesn't matter. */
+ shift_exp = 0; /* invariant: remainder to deal with is d*2^shift_exp */
+ while (x != (long double) 0.0)
+ {
+ /* Check overflow of double */
+ if (x > (long double) DBL_MAX || (-x) > (long double) DBL_MAX)
+ {
+ long double div9, div10, div11, div12, div13;
+
+#define TWO_64 18446744073709551616.0 /* 2^64 */
+#define TWO_128 (TWO_64 * TWO_64)
+#define TWO_256 (TWO_128 * TWO_128)
+ div9 = (long double) (double) (TWO_256 * TWO_256); /* 2^(2^9) */
+ div10 = div9 * div9;
+ div11 = div10 * div10; /* 2^(2^11) */
+ div12 = div11 * div11; /* 2^(2^12) */
+ div13 = div12 * div12; /* 2^(2^13) */
+ if (ABS (x) >= div13)
+ {
+ x /= div13; /* exact */
+ shift_exp += 8192;
+ mpfr_div_2si (t, t, 8192, MPFR_RNDZ);
+ }
+ if (ABS (x) >= div12)
+ {
+ x /= div12; /* exact */
+ shift_exp += 4096;
+ mpfr_div_2si (t, t, 4096, MPFR_RNDZ);
+ }
+ if (ABS (x) >= div11)
+ {
+ x /= div11; /* exact */
+ shift_exp += 2048;
+ mpfr_div_2si (t, t, 2048, MPFR_RNDZ);
+ }
+ if (ABS (x) >= div10)
+ {
+ x /= div10; /* exact */
+ shift_exp += 1024;
+ mpfr_div_2si (t, t, 1024, MPFR_RNDZ);
+ }
+ /* warning: we may have DBL_MAX=2^1024*(1-2^(-53)) < x < 2^1024,
+ therefore we have one extra exponent reduction step */
+ if (ABS (x) >= div9)
+ {
+ x /= div9; /* exact */
+ shift_exp += 512;
+ mpfr_div_2si (t, t, 512, MPFR_RNDZ);
+ }
+ } /* Check overflow of double */
+ else /* no overflow on double */
+ {
+ long double div9, div10, div11;
+
+ div9 = (long double) (double) 7.4583407312002067432909653e-155;
+ /* div9 = 2^(-2^9) */
+ div10 = div9 * div9; /* 2^(-2^10) */
+ div11 = div10 * div10; /* 2^(-2^11) if extended precision */
+ /* since -DBL_MAX <= x <= DBL_MAX, the cast to double should not
+ overflow here */
+ if (ABS(x) < div10 &&
+ div11 != (long double) 0.0 &&
+ div11 / div10 == div10) /* possible underflow */
+ {
+ long double div12, div13;
+ /* After the divisions, any bit of x must be >= div10,
+ hence the possible division by div9. */
+ div12 = div11 * div11; /* 2^(-2^12) */
+ div13 = div12 * div12; /* 2^(-2^13) */
+ if (ABS (x) <= div13)
+ {
+ x /= div13; /* exact */
+ shift_exp -= 8192;
+ mpfr_mul_2si (t, t, 8192, MPFR_RNDZ);
+ }
+ if (ABS (x) <= div12)
+ {
+ x /= div12; /* exact */
+ shift_exp -= 4096;
+ mpfr_mul_2si (t, t, 4096, MPFR_RNDZ);
+ }
+ if (ABS (x) <= div11)
+ {
+ x /= div11; /* exact */
+ shift_exp -= 2048;
+ mpfr_mul_2si (t, t, 2048, MPFR_RNDZ);
+ }
+ if (ABS (x) <= div10)
+ {
+ x /= div10; /* exact */
+ shift_exp -= 1024;
+ mpfr_mul_2si (t, t, 1024, MPFR_RNDZ);
+ }
+ if (ABS(x) <= div9)
+ {
+ x /= div9; /* exact */
+ shift_exp -= 512;
+ mpfr_mul_2si (t, t, 512, MPFR_RNDZ);
+ }
+ }
+ else /* no underflow */
+ {
+ inexact = mpfr_set_d (u, (double) x, MPFR_RNDZ);
+ MPFR_ASSERTD (inexact == 0);
+ if (mpfr_add (t, t, u, MPFR_RNDZ) != 0)
+ {
+ if (!mpfr_number_p (t))
+ break;
+ /* Inexact. This cannot happen unless the C implementation
+ "lies" on the precision or when long doubles are
+ implemented with FP expansions like under Mac OS X. */
+ if (MPFR_PREC (t) != MPFR_PREC (r) + 1)
+ {
+ /* We assume that MPFR_PREC (r) < MPFR_PREC_MAX.
+ The precision MPFR_PREC (r) + 1 allows us to
+ deduce the rounding bit and the sticky bit. */
+ mpfr_set_prec (t, MPFR_PREC (r) + 1);
+ goto convert;
+ }
+ else
+ {
+ mp_limb_t *tp;
+ int rb_mask;
+
+ /* Since mpfr_add was inexact, the sticky bit is 1. */
+ tp = MPFR_MANT (t);
+ rb_mask = MPFR_LIMB_ONE <<
+ (GMP_NUMB_BITS - 1 -
+ (MPFR_PREC (r) & (GMP_NUMB_BITS - 1)));
+ if (rnd_mode == MPFR_RNDN)
+ rnd_mode = (*tp & rb_mask) ^ MPFR_IS_NEG (t) ?
+ MPFR_RNDU : MPFR_RNDD;
+ *tp |= rb_mask;
+ break;
+ }
+ }
+ x -= (long double) mpfr_get_d1 (u); /* exact */
+ }
+ }
+ }
+ inexact = mpfr_mul_2si (r, t, shift_exp, rnd_mode);
+ mpfr_clear (t);
+ mpfr_clear (u);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inexact, rnd_mode);
+
+ nan:
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+}
+
+#else /* IEEE Extended Little Endian Code */
+
+int
+mpfr_set_ld (mpfr_ptr r, long double d, mpfr_rnd_t rnd_mode)
+{
+ int inexact, i, k, cnt;
+ mpfr_t tmp;
+ mp_limb_t tmpmant[MPFR_LIMBS_PER_LONG_DOUBLE];
+ mpfr_long_double_t x;
+ mpfr_exp_t exp;
+ int signd;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ /* Check for NAN */
+ if (MPFR_UNLIKELY (d != d))
+ {
+ MPFR_SET_NAN (r);
+ MPFR_RET_NAN;
+ }
+ /* Check for INF */
+ else if (MPFR_UNLIKELY (d > MPFR_LDBL_MAX))
+ {
+ MPFR_SET_INF (r);
+ MPFR_SET_POS (r);
+ return 0;
+ }
+ else if (MPFR_UNLIKELY (d < -MPFR_LDBL_MAX))
+ {
+ MPFR_SET_INF (r);
+ MPFR_SET_NEG (r);
+ return 0;
+ }
+ /* Check for ZERO */
+ else if (MPFR_UNLIKELY (d == 0.0))
+ {
+ x.ld = d;
+ MPFR_SET_ZERO (r);
+ if (x.s.sign == 1)
+ MPFR_SET_NEG(r);
+ else
+ MPFR_SET_POS(r);
+ return 0;
+ }
+
+ /* now d is neither 0, nor NaN nor Inf */
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ MPFR_MANT (tmp) = tmpmant;
+ MPFR_PREC (tmp) = 64;
+
+ /* Extract sign */
+ x.ld = d;
+ signd = MPFR_SIGN_POS;
+ if (x.ld < 0.0)
+ {
+ signd = MPFR_SIGN_NEG;
+ x.ld = -x.ld;
+ }
+
+ /* Extract mantissa */
+#if GMP_NUMB_BITS >= 64
+ tmpmant[0] = ((mp_limb_t) x.s.manh << 32) | ((mp_limb_t) x.s.manl);
+#else
+ tmpmant[0] = (mp_limb_t) x.s.manl;
+ tmpmant[1] = (mp_limb_t) x.s.manh;
+#endif
+
+ /* Normalize mantissa */
+ i = MPFR_LIMBS_PER_LONG_DOUBLE;
+ MPN_NORMALIZE_NOT_ZERO (tmpmant, i);
+ k = MPFR_LIMBS_PER_LONG_DOUBLE - i;
+ count_leading_zeros (cnt, tmpmant[i - 1]);
+ if (MPFR_LIKELY (cnt != 0))
+ mpn_lshift (tmpmant + k, tmpmant, i, cnt);
+ else if (k != 0)
+ MPN_COPY (tmpmant + k, tmpmant, i);
+ if (MPFR_UNLIKELY (k != 0))
+ MPN_ZERO (tmpmant, k);
+
+ /* Set exponent */
+ exp = (mpfr_exp_t) ((x.s.exph << 8) + x.s.expl); /* 15-bit unsigned int */
+ if (MPFR_UNLIKELY (exp == 0))
+ exp -= 0x3FFD;
+ else
+ exp -= 0x3FFE;
+
+ MPFR_SET_EXP (tmp, exp - cnt - k * GMP_NUMB_BITS);
+
+ /* tmp is exact */
+ inexact = mpfr_set4 (r, tmp, rnd_mode, signd);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (r, inexact, rnd_mode);
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_nan.c b/Build/source/libs/mpfr/mpfr-src/src/set_nan.c
new file mode 100644
index 00000000000..a9ae517f35a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_nan.c
@@ -0,0 +1,31 @@
+/* mpfr_set_nan -- set a number to NaN.
+
+Copyright 2002, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#include "mpfr-impl.h"
+
+void
+mpfr_set_nan (mpfr_ptr x)
+{
+ MPFR_SET_NAN (x);
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_prc_raw.c b/Build/source/libs/mpfr/mpfr-src/src/set_prc_raw.c
new file mode 100644
index 00000000000..78cc5c3e3db
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_prc_raw.c
@@ -0,0 +1,31 @@
+/* mpfr_set_prec_raw -- reset the precision of a floating-point number
+
+Copyright 2000-2001, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_set_prec_raw (mpfr_ptr x, mpfr_prec_t p)
+{
+ MPFR_ASSERTN (p >= MPFR_PREC_MIN && p <= MPFR_PREC_MAX);
+ MPFR_ASSERTN (p <= (mpfr_prec_t) MPFR_GET_ALLOC_SIZE(x) * GMP_NUMB_BITS);
+ MPFR_PREC(x) = p;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_prec.c b/Build/source/libs/mpfr/mpfr-src/src/set_prec.c
new file mode 100644
index 00000000000..e9ea33dcc5f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_prec.c
@@ -0,0 +1,55 @@
+/* mpfr_set_prec -- reset the precision of a floating-point number
+
+Copyright 1999, 2001-2002, 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_set_prec (mpfr_ptr x, mpfr_prec_t p)
+{
+ mp_size_t xsize, xoldsize;
+ mpfr_limb_ptr tmp;
+
+ /* first, check if p is correct */
+ MPFR_ASSERTN (p >= MPFR_PREC_MIN && p <= MPFR_PREC_MAX);
+
+ /* Calculate the new number of limbs */
+ xsize = MPFR_PREC2LIMBS (p);
+
+ /* Realloc only if the new size is greater than the old */
+ xoldsize = MPFR_GET_ALLOC_SIZE (x);
+ if (xsize > xoldsize)
+ {
+ tmp = (mpfr_limb_ptr) (*__gmp_reallocate_func)
+ (MPFR_GET_REAL_PTR(x), MPFR_MALLOC_SIZE(xoldsize), MPFR_MALLOC_SIZE(xsize));
+ MPFR_SET_MANT_PTR(x, tmp);
+ MPFR_SET_ALLOC_SIZE(x, xsize);
+ }
+ MPFR_PREC (x) = p;
+ MPFR_SET_NAN (x); /* initializes to NaN */
+}
+
+#undef mpfr_get_prec
+mpfr_prec_t
+mpfr_get_prec (mpfr_srcptr x)
+{
+ return MPFR_PREC(x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_q.c b/Build/source/libs/mpfr/mpfr-src/src/set_q.c
new file mode 100644
index 00000000000..aa16a81b44a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_q.c
@@ -0,0 +1,135 @@
+/* mpfr_set_q -- set a floating-point number from a multiple-precision rational
+
+Copyright 2000-2002, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/*
+ * Set f to z, choosing the smallest precision for f
+ * so that z = f*(2^BPML)*zs*2^(RetVal)
+ */
+static int
+set_z (mpfr_ptr f, mpz_srcptr z, mp_size_t *zs)
+{
+ mp_limb_t *p;
+ mp_size_t s;
+ int c;
+ mpfr_prec_t pf;
+
+ MPFR_ASSERTD (mpz_sgn (z) != 0);
+
+ /* Remove useless ending 0 */
+ for (p = PTR (z), s = *zs = ABS (SIZ (z)) ; *p == 0; p++, s--)
+ MPFR_ASSERTD (s >= 0);
+
+ /* Get working precision */
+ count_leading_zeros (c, p[s-1]);
+ pf = s * GMP_NUMB_BITS - c;
+ if (pf < MPFR_PREC_MIN)
+ pf = MPFR_PREC_MIN;
+ mpfr_init2 (f, pf);
+
+ /* Copy Mantissa */
+ if (MPFR_LIKELY (c))
+ mpn_lshift (MPFR_MANT (f), p, s, c);
+ else
+ MPN_COPY (MPFR_MANT (f), p, s);
+
+ MPFR_SET_SIGN (f, mpz_sgn (z));
+ MPFR_SET_EXP (f, 0);
+
+ return -c;
+}
+
+/* set f to the rational q */
+int
+mpfr_set_q (mpfr_ptr f, mpq_srcptr q, mpfr_rnd_t rnd)
+{
+ mpz_srcptr num, den;
+ mpfr_t n, d;
+ int inexact;
+ int cn, cd;
+ long shift;
+ mp_size_t sn, sd;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ num = mpq_numref (q);
+ den = mpq_denref (q);
+ /* NAN and INF for mpq are not really documented, but could be found */
+ if (MPFR_UNLIKELY (mpz_sgn (num) == 0))
+ {
+ if (MPFR_UNLIKELY (mpz_sgn (den) == 0))
+ {
+ MPFR_SET_NAN (f);
+ MPFR_RET_NAN;
+ }
+ else
+ {
+ MPFR_SET_ZERO (f);
+ MPFR_SET_POS (f);
+ MPFR_RET (0);
+ }
+ }
+ if (MPFR_UNLIKELY (mpz_sgn (den) == 0))
+ {
+ MPFR_SET_INF (f);
+ MPFR_SET_SIGN (f, mpz_sgn (num));
+ MPFR_RET (0);
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ cn = set_z (n, num, &sn);
+ cd = set_z (d, den, &sd);
+
+ sn -= sd;
+ if (MPFR_UNLIKELY (sn > MPFR_EMAX_MAX / GMP_NUMB_BITS))
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ inexact = mpfr_overflow (f, rnd, MPFR_SIGN (f));
+ goto end;
+ }
+ if (MPFR_UNLIKELY (sn < MPFR_EMIN_MIN / GMP_NUMB_BITS -1))
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ if (rnd == MPFR_RNDN)
+ rnd = MPFR_RNDZ;
+ inexact = mpfr_underflow (f, rnd, MPFR_SIGN (f));
+ goto end;
+ }
+
+ inexact = mpfr_div (f, n, d, rnd);
+ shift = GMP_NUMB_BITS*sn+cn-cd;
+ MPFR_ASSERTD (shift == GMP_NUMB_BITS*sn+cn-cd);
+ cd = mpfr_mul_2si (f, f, shift, rnd);
+ MPFR_SAVE_EXPO_FREE (expo);
+ if (MPFR_UNLIKELY (cd != 0))
+ inexact = cd;
+ else
+ inexact = mpfr_check_range (f, inexact, rnd);
+ end:
+ mpfr_clear (d);
+ mpfr_clear (n);
+ MPFR_RET (inexact);
+}
+
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_rnd.c b/Build/source/libs/mpfr/mpfr-src/src/set_rnd.c
new file mode 100644
index 00000000000..d6faa7b487b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_rnd.c
@@ -0,0 +1,40 @@
+/* mpfr_set_default_rounding_mode -- set the default rounding mode
+ mpfr_get_default_rounding_mode -- get the default rounding mode
+
+Copyright 1999, 2001, 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+mpfr_rnd_t MPFR_THREAD_ATTR __gmpfr_default_rounding_mode = MPFR_RNDN;
+
+void
+mpfr_set_default_rounding_mode (mpfr_rnd_t rnd_mode)
+{
+ if (rnd_mode >= MPFR_RNDN && rnd_mode < MPFR_RND_MAX)
+ __gmpfr_default_rounding_mode = rnd_mode;
+}
+
+#undef mpfr_get_default_rounding_mode
+mpfr_rnd_t
+mpfr_get_default_rounding_mode (void)
+{
+ return __gmpfr_default_rounding_mode;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_si.c b/Build/source/libs/mpfr/mpfr-src/src/set_si.c
new file mode 100644
index 00000000000..638862197d3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_si.c
@@ -0,0 +1,30 @@
+/* mpfr_set_si -- set a MPFR number from a machine signed integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#undef mpfr_set_si
+int
+mpfr_set_si (mpfr_ptr x, long i, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set_si_2exp (x, i, 0, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_si_2exp.c b/Build/source/libs/mpfr/mpfr-src/src/set_si_2exp.c
new file mode 100644
index 00000000000..5b57254fc2a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_si_2exp.c
@@ -0,0 +1,73 @@
+/* mpfr_set_si_2exp -- set a MPFR number from a machine signed integer with
+ a shift
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_set_si_2exp (mpfr_ptr x, long i, mpfr_exp_t e, mpfr_rnd_t rnd_mode)
+{
+ if (i == 0)
+ {
+ MPFR_SET_ZERO (x);
+ MPFR_SET_POS (x);
+ MPFR_RET (0);
+ }
+ else
+ {
+ mp_size_t xn;
+ unsigned int cnt, nbits;
+ mp_limb_t ai, *xp;
+ int inex = 0;
+
+ /* FIXME: support int limbs (e.g. 16-bit limbs on 16-bit proc) */
+ ai = SAFE_ABS (unsigned long, i);
+ MPFR_ASSERTN (SAFE_ABS (unsigned long, i) == ai);
+
+ /* Position of the highest limb */
+ xn = (MPFR_PREC (x) - 1) / GMP_NUMB_BITS;
+ count_leading_zeros (cnt, ai);
+ MPFR_ASSERTD (cnt < GMP_NUMB_BITS); /* OK since i != 0 */
+
+ xp = MPFR_MANT(x);
+ xp[xn] = ai << cnt;
+ /* Zero the xn lower limbs. */
+ MPN_ZERO(xp, xn);
+ MPFR_SET_SIGN (x, i < 0 ? MPFR_SIGN_NEG : MPFR_SIGN_POS);
+
+ nbits = GMP_NUMB_BITS - cnt;
+ e += nbits; /* exponent _before_ the rounding */
+
+ /* round if MPFR_PREC(x) smaller than length of i */
+ if (MPFR_UNLIKELY (MPFR_PREC (x) < nbits) &&
+ MPFR_UNLIKELY (mpfr_round_raw (xp + xn, xp + xn, nbits, i < 0,
+ MPFR_PREC (x), rnd_mode, &inex)))
+ {
+ e++;
+ xp[xn] = MPFR_LIMB_HIGHBIT;
+ }
+
+ MPFR_EXP (x) = e;
+ return mpfr_check_range (x, inex, rnd_mode);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_sj.c b/Build/source/libs/mpfr/mpfr-src/src/set_sj.c
new file mode 100644
index 00000000000..ef24c6b3701
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_sj.c
@@ -0,0 +1,52 @@
+/* mpfr_set_sj -- set a MPFR number from a huge machine signed integer
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h" /* for a build within gmp */
+#endif
+
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+#ifdef _MPFR_H_HAVE_INTMAX_T
+
+int
+mpfr_set_sj (mpfr_t x, intmax_t j, mpfr_rnd_t rnd)
+{
+ return mpfr_set_sj_2exp (x, j, 0, rnd);
+}
+
+int
+mpfr_set_sj_2exp (mpfr_t x, intmax_t j, intmax_t e, mpfr_rnd_t rnd)
+{
+ if (j>=0)
+ return mpfr_set_uj_2exp (x, j, e, rnd);
+ else
+ {
+ int inex;
+ inex = mpfr_set_uj_2exp (x, - (uintmax_t) j, e, MPFR_INVERT_RND (rnd));
+ MPFR_CHANGE_SIGN (x);
+ return -inex;
+ }
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_str.c b/Build/source/libs/mpfr/mpfr-src/src/set_str.c
new file mode 100644
index 00000000000..9da8821688c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_str.c
@@ -0,0 +1,42 @@
+/* mpfr_set_str -- set a floating-point number from a string
+
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_set_str (mpfr_t x, const char *str, int base, mpfr_rnd_t rnd)
+{
+ char *p;
+
+ if (MPFR_UNLIKELY (*str == 0))
+ return -1;
+ mpfr_strtofr (x, str, &p, base, rnd);
+ return (*p == 0) ? 0 : -1;
+}
+
+
+int
+mpfr_init_set_str (mpfr_ptr x, const char *str, int base, mpfr_rnd_t rnd)
+{
+ mpfr_init (x);
+ return mpfr_set_str (x, str, base, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_str_raw.c b/Build/source/libs/mpfr/mpfr-src/src/set_str_raw.c
new file mode 100644
index 00000000000..f7e1167adab
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_str_raw.c
@@ -0,0 +1,55 @@
+/* mpfr_set_str_binary -- set a floating-point number from a binary string
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Currently the number should be of the form +/- xxxx.xxxxxxEyy, with
+ decimal exponent. The mantissa of x is supposed to be large enough
+ to hold all the bits of str. */
+
+void
+mpfr_set_str_binary (mpfr_ptr x, const char *str)
+{
+ int has_sign;
+ int res;
+
+ if (*str == 'N')
+ {
+ MPFR_SET_NAN(x);
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+ return;
+ }
+
+ has_sign = *str == '-' || *str == '+';
+ if (str[has_sign] == 'I')
+ {
+ MPFR_SET_INF(x);
+ if (*str == '-')
+ MPFR_SET_NEG(x);
+ else
+ MPFR_SET_POS(x);
+ return;
+ }
+
+ res = mpfr_strtofr (x, str, 0, 2, MPFR_RNDZ);
+ MPFR_ASSERTN (res == 0);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_ui.c b/Build/source/libs/mpfr/mpfr-src/src/set_ui.c
new file mode 100644
index 00000000000..05d5346e995
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_ui.c
@@ -0,0 +1,30 @@
+/* mpfr_set_ui -- set a MPFR number from a machine unsigned integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#undef mpfr_set_ui
+int
+mpfr_set_ui (mpfr_ptr x, unsigned long i, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set_ui_2exp (x, i, 0, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_ui_2exp.c b/Build/source/libs/mpfr/mpfr-src/src/set_ui_2exp.c
new file mode 100644
index 00000000000..8ff538c6dad
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_ui_2exp.c
@@ -0,0 +1,72 @@
+/* mpfr_set_ui_2exp -- set a MPFR number from a machine unsigned integer with
+ a shift
+
+Copyright 2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_set_ui_2exp (mpfr_ptr x, unsigned long i, mpfr_exp_t e, mpfr_rnd_t rnd_mode)
+{
+ MPFR_SET_POS (x);
+
+ if (i == 0)
+ {
+ MPFR_SET_ZERO (x);
+ MPFR_RET (0);
+ }
+ else
+ {
+ mp_size_t xn;
+ unsigned int cnt, nbits;
+ mp_limb_t *xp;
+ int inex = 0;
+
+ /* FIXME: support int limbs (e.g. 16-bit limbs on 16-bit proc) */
+ MPFR_ASSERTD (i == (mp_limb_t) i);
+
+ /* Position of the highest limb */
+ xn = (MPFR_PREC (x) - 1) / GMP_NUMB_BITS;
+ count_leading_zeros (cnt, (mp_limb_t) i);
+ MPFR_ASSERTD (cnt < GMP_NUMB_BITS); /* OK since i != 0 */
+
+ xp = MPFR_MANT(x);
+ xp[xn] = ((mp_limb_t) i) << cnt;
+ /* Zero the xn lower limbs. */
+ MPN_ZERO(xp, xn);
+
+ nbits = GMP_NUMB_BITS - cnt;
+ e += nbits; /* exponent _before_ the rounding */
+
+ /* round if MPFR_PREC(x) smaller than length of i */
+ if (MPFR_UNLIKELY (MPFR_PREC (x) < nbits) &&
+ MPFR_UNLIKELY (mpfr_round_raw (xp + xn, xp + xn, nbits, 0,
+ MPFR_PREC (x), rnd_mode, &inex)))
+ {
+ e++;
+ xp[xn] = MPFR_LIMB_HIGHBIT;
+ }
+
+ MPFR_EXP (x) = e;
+ return mpfr_check_range (x, inex, rnd_mode);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_uj.c b/Build/source/libs/mpfr/mpfr-src/src/set_uj.c
new file mode 100644
index 00000000000..a1f679aea02
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_uj.c
@@ -0,0 +1,123 @@
+/* mpfr_set_uj -- set a MPFR number from a huge machine unsigned integer
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h" /* for a build within gmp */
+#endif
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+#ifdef _MPFR_H_HAVE_INTMAX_T
+
+int
+mpfr_set_uj (mpfr_t x, uintmax_t j, mpfr_rnd_t rnd)
+{
+ return mpfr_set_uj_2exp (x, j, 0, rnd);
+}
+
+int
+mpfr_set_uj_2exp (mpfr_t x, uintmax_t j, intmax_t e, mpfr_rnd_t rnd)
+{
+ unsigned int cnt, i;
+ mp_size_t k, len;
+ mp_limb_t limb;
+ mp_limb_t yp[sizeof(uintmax_t) / sizeof(mp_limb_t)];
+ mpfr_t y;
+ unsigned long uintmax_bit_size = sizeof(uintmax_t) * CHAR_BIT;
+ unsigned long bpml = GMP_NUMB_BITS % uintmax_bit_size;
+
+ /* Special case */
+ if (j == 0)
+ {
+ MPFR_SET_POS(x);
+ MPFR_SET_ZERO(x);
+ MPFR_RET(0);
+ }
+
+ MPFR_ASSERTN (sizeof(uintmax_t) % sizeof(mp_limb_t) == 0);
+
+ /* Create an auxillary var */
+ MPFR_TMP_INIT1 (yp, y, uintmax_bit_size);
+ k = numberof (yp);
+ if (k == 1)
+ limb = yp[0] = j;
+ else
+ {
+ /* Note: either GMP_NUMB_BITS = uintmax_bit_size, then k = 1 the
+ shift j >>= bpml is never done, or GMP_NUMB_BITS < uintmax_bit_size
+ and bpml = GMP_NUMB_BITS. */
+ for (i = 0; i < k; i++, j >>= bpml)
+ yp[i] = j; /* Only the low bits are copied */
+
+ /* Find the first limb not equal to zero. */
+ do
+ {
+ MPFR_ASSERTD (k > 0);
+ limb = yp[--k];
+ }
+ while (limb == 0);
+ k++;
+ }
+ count_leading_zeros(cnt, limb);
+ len = numberof (yp) - k;
+
+ /* Normalize it: len = number of last 0 limb, k number of non-zero limbs */
+ if (MPFR_LIKELY(cnt))
+ mpn_lshift (yp+len, yp, k, cnt); /* Normalize the High Limb*/
+ else if (len != 0)
+ MPN_COPY_DECR (yp+len, yp, k); /* Must use DECR */
+ if (len != 0)
+ /* Note: when numberof(yp)==1, len is constant and null, so the compiler
+ can optimize out this code. */
+ {
+ if (len == 1)
+ yp[0] = (mp_limb_t) 0;
+ else
+ MPN_ZERO (yp, len); /* Zeroing the last limbs */
+ }
+ e += k * GMP_NUMB_BITS - cnt; /* Update Expo */
+ MPFR_ASSERTD (MPFR_LIMB_MSB(yp[numberof (yp) - 1]) != 0);
+
+ /* Check expo underflow / overflow (can't use mpfr_check_range) */
+ if (MPFR_UNLIKELY(e < __gmpfr_emin))
+ {
+ /* The following test is necessary because in the rounding to the
+ * nearest mode, mpfr_underflow always rounds away from 0. In
+ * this rounding mode, we need to round to 0 if:
+ * _ |x| < 2^(emin-2), or
+ * _ |x| = 2^(emin-2) and the absolute value of the exact
+ * result is <= 2^(emin-2). */
+ if (rnd == MPFR_RNDN && (e+1 < __gmpfr_emin || mpfr_powerof2_raw(y)))
+ rnd = MPFR_RNDZ;
+ return mpfr_underflow (x, rnd, MPFR_SIGN_POS);
+ }
+ if (MPFR_UNLIKELY(e > __gmpfr_emax))
+ return mpfr_overflow (x, rnd, MPFR_SIGN_POS);
+ MPFR_SET_EXP (y, e);
+
+ /* Final: set x to y (rounding if necessary) */
+ return mpfr_set (x, y, rnd);
+}
+
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_z.c b/Build/source/libs/mpfr/mpfr-src/src/set_z.c
new file mode 100644
index 00000000000..590f5545d1b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_z.c
@@ -0,0 +1,30 @@
+/* mpfr_set_z -- set a floating-point number from a multiple-precision integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* set f to the integer z */
+int
+mpfr_set_z (mpfr_ptr f, mpz_srcptr z, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set_z_2exp (f, z, 0, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_z_exp.c b/Build/source/libs/mpfr/mpfr-src/src/set_z_exp.c
new file mode 100644
index 00000000000..15fc4d0aa31
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_z_exp.c
@@ -0,0 +1,180 @@
+/* mpfr_set_z_2exp -- set a floating-point number from a multiple-precision
+ integer and an exponent
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* set f to the integer z multiplied by 2^e */
+int
+mpfr_set_z_2exp (mpfr_ptr f, mpz_srcptr z, mpfr_exp_t e, mpfr_rnd_t rnd_mode)
+{
+ mp_size_t fn, zn, dif, en;
+ int k, sign_z, inex;
+ mp_limb_t *fp, *zp;
+ mpfr_exp_t exp;
+
+ sign_z = mpz_sgn (z);
+ if (MPFR_UNLIKELY (sign_z == 0)) /* ignore the exponent for 0 */
+ {
+ MPFR_SET_ZERO(f);
+ MPFR_SET_POS(f);
+ MPFR_RET(0);
+ }
+ MPFR_ASSERTD (sign_z == MPFR_SIGN_POS || sign_z == MPFR_SIGN_NEG);
+
+ zn = ABS(SIZ(z)); /* limb size of z */
+ /* compute en = floor(e/GMP_NUMB_BITS) */
+ en = (e >= 0) ? e / GMP_NUMB_BITS : (e + 1) / GMP_NUMB_BITS - 1;
+ MPFR_ASSERTD (zn >= 1);
+ if (MPFR_UNLIKELY (zn + en > MPFR_EMAX_MAX / GMP_NUMB_BITS + 1))
+ return mpfr_overflow (f, rnd_mode, sign_z);
+ /* because zn + en >= MPFR_EMAX_MAX / GMP_NUMB_BITS + 2
+ implies (zn + en) * GMP_NUMB_BITS >= MPFR_EMAX_MAX + GMP_NUMB_BITS + 1
+ and exp = zn * GMP_NUMB_BITS + e - k
+ >= (zn + en) * GMP_NUMB_BITS - k > MPFR_EMAX_MAX */
+
+ fp = MPFR_MANT (f);
+ fn = MPFR_LIMB_SIZE (f);
+ dif = zn - fn;
+ zp = PTR(z);
+ count_leading_zeros (k, zp[zn-1]);
+
+ /* now zn + en <= MPFR_EMAX_MAX / GMP_NUMB_BITS + 1
+ thus (zn + en) * GMP_NUMB_BITS <= MPFR_EMAX_MAX + GMP_NUMB_BITS
+ and exp = zn * GMP_NUMB_BITS + e - k
+ <= (zn + en) * GMP_NUMB_BITS - k + GMP_NUMB_BITS - 1
+ <= MPFR_EMAX_MAX + 2 * GMP_NUMB_BITS - 1 */
+ exp = (mpfr_prec_t) zn * GMP_NUMB_BITS + e - k;
+ /* The exponent will be exp or exp + 1 (due to rounding) */
+ if (MPFR_UNLIKELY (exp > __gmpfr_emax))
+ return mpfr_overflow (f, rnd_mode, sign_z);
+ if (MPFR_UNLIKELY (exp + 1 < __gmpfr_emin))
+ return mpfr_underflow (f, rnd_mode == MPFR_RNDN ? MPFR_RNDZ : rnd_mode,
+ sign_z);
+
+ if (MPFR_LIKELY (dif >= 0))
+ {
+ mp_limb_t rb, sb, ulp;
+ int sh;
+
+ /* number has to be truncated */
+ if (MPFR_LIKELY (k != 0))
+ {
+ mpn_lshift (fp, &zp[dif], fn, k);
+ if (MPFR_LIKELY (dif > 0))
+ fp[0] |= zp[dif - 1] >> (GMP_NUMB_BITS - k);
+ }
+ else
+ MPN_COPY (fp, zp + dif, fn);
+
+ /* Compute Rounding Bit and Sticky Bit */
+ MPFR_UNSIGNED_MINUS_MODULO (sh, MPFR_PREC (f) );
+ if (MPFR_LIKELY (sh != 0))
+ {
+ mp_limb_t mask = MPFR_LIMB_ONE << (sh-1);
+ mp_limb_t limb = fp[0];
+ rb = limb & mask;
+ sb = limb & (mask-1);
+ ulp = 2*mask;
+ fp[0] = limb & ~(ulp-1);
+ }
+ else /* sh == 0 */
+ {
+ mp_limb_t mask = MPFR_LIMB_ONE << (GMP_NUMB_BITS - 1 - k);
+ if (MPFR_LIKELY (dif > 0))
+ {
+ rb = zp[--dif] & mask;
+ sb = zp[dif] & (mask-1);
+ }
+ else
+ rb = sb = 0;
+ k = 0;
+ ulp = MPFR_LIMB_ONE;
+ }
+ if (MPFR_UNLIKELY (sb == 0) && MPFR_LIKELY (dif > 0))
+ {
+ sb = zp[--dif];
+ if (MPFR_LIKELY (k != 0))
+ sb &= MPFR_LIMB_MASK (GMP_NUMB_BITS - k);
+ if (MPFR_UNLIKELY (sb == 0) && MPFR_LIKELY (dif > 0))
+ do {
+ sb = zp[--dif];
+ } while (dif > 0 && sb == 0);
+ }
+
+ /* Rounding */
+ if (MPFR_LIKELY (rnd_mode == MPFR_RNDN))
+ {
+ if (rb == 0 || MPFR_UNLIKELY (sb == 0 && (fp[0] & ulp) == 0))
+ goto trunc;
+ else
+ goto addoneulp;
+ }
+ else /* Not Nearest */
+ {
+ if (MPFR_LIKELY (MPFR_IS_LIKE_RNDZ (rnd_mode, sign_z < 0))
+ || MPFR_UNLIKELY ( (sb | rb) == 0 ))
+ goto trunc;
+ else
+ goto addoneulp;
+ }
+
+ trunc:
+ inex = MPFR_LIKELY ((sb | rb) != 0) ? -1 : 0;
+ goto end;
+
+ addoneulp:
+ inex = 1;
+ if (MPFR_UNLIKELY (mpn_add_1 (fp, fp, fn, ulp)))
+ {
+ /* Pow 2 case */
+ if (MPFR_UNLIKELY (exp == __gmpfr_emax))
+ return mpfr_overflow (f, rnd_mode, sign_z);
+ exp ++;
+ fp[fn-1] = MPFR_LIMB_HIGHBIT;
+ }
+ end:
+ (void) 0;
+ }
+ else /* dif < 0: Mantissa F is strictly bigger than z's one */
+ {
+ if (MPFR_LIKELY (k != 0))
+ mpn_lshift (fp - dif, zp, zn, k);
+ else
+ MPN_COPY (fp - dif, zp, zn);
+ /* fill with zeroes */
+ MPN_ZERO (fp, -dif);
+ inex = 0; /* result is exact */
+ }
+
+ if (MPFR_UNLIKELY (exp < __gmpfr_emin))
+ {
+ if (rnd_mode == MPFR_RNDN && inex == 0 && mpfr_powerof2_raw (f))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (f, rnd_mode, sign_z);
+ }
+
+ MPFR_SET_EXP (f, exp);
+ MPFR_SET_SIGN (f, sign_z);
+ MPFR_RET (inex*sign_z);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/set_zero.c b/Build/source/libs/mpfr/mpfr-src/src/set_zero.c
new file mode 100644
index 00000000000..04a6ebeea17
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/set_zero.c
@@ -0,0 +1,31 @@
+/* mpfr_set_zero -- set a number to plus or minus zero.
+
+Copyright 2009-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+void
+mpfr_set_zero (mpfr_ptr x, int sign)
+{
+ mpfr_set_ui (x, 0, MPFR_RNDN);
+ if (sign < 0)
+ MPFR_SET_NEG(x);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/setmax.c b/Build/source/libs/mpfr/mpfr-src/src/setmax.c
new file mode 100644
index 00000000000..5d79b62addf
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/setmax.c
@@ -0,0 +1,41 @@
+/* mpfr_setmax -- maximum representable floating-point number (raw version)
+
+Copyright 2002-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Note: the flags are not cleared and the current sign is kept. */
+
+void
+mpfr_setmax (mpfr_ptr x, mpfr_exp_t e)
+{
+ mp_size_t xn, i;
+ int sh;
+ mp_limb_t *xp;
+
+ MPFR_SET_EXP (x, e);
+ xn = MPFR_LIMB_SIZE (x);
+ sh = (mpfr_prec_t) xn * GMP_NUMB_BITS - MPFR_PREC(x);
+ xp = MPFR_MANT(x);
+ xp[0] = MP_LIMB_T_MAX << sh;
+ for (i = 1; i < xn; i++)
+ xp[i] = MP_LIMB_T_MAX;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/setmin.c b/Build/source/libs/mpfr/mpfr-src/src/setmin.c
new file mode 100644
index 00000000000..4b957b162a5
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/setmin.c
@@ -0,0 +1,38 @@
+/* mpfr_setmin -- minimum representable floating-point number (raw version)
+
+Copyright 2002-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Note: the flags are not cleared and the current sign is kept. */
+
+void
+mpfr_setmin (mpfr_ptr x, mpfr_exp_t e)
+{
+ mp_size_t xn;
+ mp_limb_t *xp;
+
+ MPFR_SET_EXP (x, e);
+ xn = (MPFR_PREC(x) - 1) / GMP_NUMB_BITS;
+ xp = MPFR_MANT(x);
+ xp[xn] = MPFR_LIMB_HIGHBIT;
+ MPN_ZERO(xp, xn);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/setsign.c b/Build/source/libs/mpfr/mpfr-src/src/setsign.c
new file mode 100644
index 00000000000..fa717ef9de9
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/setsign.c
@@ -0,0 +1,30 @@
+/* mpfr_setsign -- Produce a value with the magnitude of x and sign bit s
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#undef mpfr_setsign
+int
+mpfr_setsign (mpfr_ptr z, mpfr_srcptr x, int s, mpfr_rnd_t rnd_mode)
+{
+ return mpfr_set4 (z, x, rnd_mode, s ? -1 : 1);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sgn.c b/Build/source/libs/mpfr/mpfr-src/src/sgn.c
new file mode 100644
index 00000000000..1e2a7fc5d2f
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sgn.c
@@ -0,0 +1,40 @@
+/* mpfr_sgn -- Sign of a floating point number.
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+(mpfr_sgn) (mpfr_srcptr a)
+{
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (a)))
+ {
+ if (MPFR_LIKELY (MPFR_IS_ZERO (a)))
+ return 0;
+ if (MPFR_UNLIKELY (MPFR_IS_NAN (a)))
+ {
+ MPFR_SET_ERANGE ();
+ return 0;
+ }
+ /* Remains infinity, handled by the return below. */
+ }
+ return MPFR_INT_SIGN (a);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/si_op.c b/Build/source/libs/mpfr/mpfr-src/src/si_op.c
new file mode 100644
index 00000000000..e1785345196
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/si_op.c
@@ -0,0 +1,57 @@
+/* mpfr_add_si -- add a floating-point number with a machine integer
+ mpfr_sub_si -- sub a floating-point number with a machine integer
+ mpfr_si_sub -- sub a machine number with a floating-point number
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_add_si (mpfr_ptr y, mpfr_srcptr x, long int u, mpfr_rnd_t rnd_mode)
+{
+ if (u >= 0)
+ return mpfr_add_ui (y, x, u, rnd_mode);
+ else
+ return mpfr_sub_ui (y, x, -u, rnd_mode);
+}
+
+int
+mpfr_sub_si (mpfr_ptr y, mpfr_srcptr x, long int u, mpfr_rnd_t rnd_mode)
+{
+ if (u >= 0)
+ return mpfr_sub_ui (y, x, u, rnd_mode);
+ else
+ return mpfr_add_ui (y, x, -u, rnd_mode);
+}
+
+int
+mpfr_si_sub (mpfr_ptr y, long int u, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ if (u >= 0)
+ return mpfr_ui_sub (y, u, x, rnd_mode);
+ else
+ {
+ int res = -mpfr_add_ui (y, x, -u, MPFR_INVERT_RND (rnd_mode));
+ MPFR_CHANGE_SIGN (y);
+ return res;
+ }
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/signbit.c b/Build/source/libs/mpfr/mpfr-src/src/signbit.c
new file mode 100644
index 00000000000..54632d368a4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/signbit.c
@@ -0,0 +1,30 @@
+/* mpfr_signbit -- Signbit of a MPFR number
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#undef mpfr_signbit
+int
+mpfr_signbit (mpfr_srcptr x)
+{
+ return MPFR_SIGN (x) < 0;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sin.c b/Build/source/libs/mpfr/mpfr-src/src/sin.c
new file mode 100644
index 00000000000..44be51cb9a7
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sin.c
@@ -0,0 +1,187 @@
+/* mpfr_sin -- sine of a floating-point number
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+static int
+mpfr_sin_fast (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int inex;
+
+ inex = mpfr_sincos_fast (y, NULL, x, rnd_mode);
+ inex = inex & 3; /* 0: exact, 1: rounded up, 2: rounded down */
+ return (inex == 2) ? -1 : inex;
+}
+
+int
+mpfr_sin (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t c, xr;
+ mpfr_srcptr xx;
+ mpfr_exp_t expx, err;
+ mpfr_prec_t precy, m;
+ int inexact, sign, reduce;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (y), mpfr_log_prec, y,
+ inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN (x) || MPFR_IS_INF (x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ MPFR_RET (0);
+ }
+ }
+
+ /* sin(x) = x - x^3/6 + ... so the error is < 2^(3*EXP(x)-2) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -2 * MPFR_GET_EXP (x), 2, 0,
+ rnd_mode, {});
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Compute initial precision */
+ precy = MPFR_PREC (y);
+
+ if (precy >= MPFR_SINCOS_THRESHOLD)
+ {
+ inexact = mpfr_sin_fast (y, x, rnd_mode);
+ goto end;
+ }
+
+ m = precy + MPFR_INT_CEIL_LOG2 (precy) + 13;
+ expx = MPFR_GET_EXP (x);
+
+ mpfr_init (c);
+ mpfr_init (xr);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ /* first perform argument reduction modulo 2*Pi (if needed),
+ also helps to determine the sign of sin(x) */
+ if (expx >= 2) /* If Pi < x < 4, we need to reduce too, to determine
+ the sign of sin(x). For 2 <= |x| < Pi, we could avoid
+ the reduction. */
+ {
+ reduce = 1;
+ /* As expx + m - 1 will silently be converted into mpfr_prec_t
+ in the mpfr_set_prec call, the assert below may be useful to
+ avoid undefined behavior. */
+ MPFR_ASSERTN (expx + m - 1 <= MPFR_PREC_MAX);
+ mpfr_set_prec (c, expx + m - 1);
+ mpfr_set_prec (xr, m);
+ mpfr_const_pi (c, MPFR_RNDN);
+ mpfr_mul_2ui (c, c, 1, MPFR_RNDN);
+ mpfr_remainder (xr, x, c, MPFR_RNDN);
+ /* The analysis is similar to that of cos.c:
+ |xr - x - 2kPi| <= 2^(2-m). Thus we can decide the sign
+ of sin(x) if xr is at distance at least 2^(2-m) of both
+ 0 and +/-Pi. */
+ mpfr_div_2ui (c, c, 1, MPFR_RNDN);
+ /* Since c approximates Pi with an error <= 2^(2-expx-m) <= 2^(-m),
+ it suffices to check that c - |xr| >= 2^(2-m). */
+ if (MPFR_SIGN (xr) > 0)
+ mpfr_sub (c, c, xr, MPFR_RNDZ);
+ else
+ mpfr_add (c, c, xr, MPFR_RNDZ);
+ if (MPFR_IS_ZERO(xr)
+ || MPFR_GET_EXP(xr) < (mpfr_exp_t) 3 - (mpfr_exp_t) m
+ || MPFR_IS_ZERO(c)
+ || MPFR_GET_EXP(c) < (mpfr_exp_t) 3 - (mpfr_exp_t) m)
+ goto ziv_next;
+
+ /* |xr - x - 2kPi| <= 2^(2-m), thus |sin(xr) - sin(x)| <= 2^(2-m) */
+ xx = xr;
+ }
+ else /* the input argument is already reduced */
+ {
+ reduce = 0;
+ xx = x;
+ }
+
+ sign = MPFR_SIGN(xx);
+ /* now that the argument is reduced, precision m is enough */
+ mpfr_set_prec (c, m);
+ mpfr_cos (c, xx, MPFR_RNDZ); /* can't be exact */
+ mpfr_nexttoinf (c); /* now c = cos(x) rounded away */
+ mpfr_mul (c, c, c, MPFR_RNDU); /* away */
+ mpfr_ui_sub (c, 1, c, MPFR_RNDZ);
+ mpfr_sqrt (c, c, MPFR_RNDZ);
+ if (MPFR_IS_NEG_SIGN(sign))
+ MPFR_CHANGE_SIGN(c);
+
+ /* Warning: c may be 0! */
+ if (MPFR_UNLIKELY (MPFR_IS_ZERO (c)))
+ {
+ /* Huge cancellation: increase prec a lot! */
+ m = MAX (m, MPFR_PREC (x));
+ m = 2 * m;
+ }
+ else
+ {
+ /* the absolute error on c is at most 2^(3-m-EXP(c)),
+ plus 2^(2-m) if there was an argument reduction.
+ Since EXP(c) <= 1, 3-m-EXP(c) >= 2-m, thus the error
+ is at most 2^(3-m-EXP(c)) in case of argument reduction. */
+ err = 2 * MPFR_GET_EXP (c) + (mpfr_exp_t) m - 3 - (reduce != 0);
+ if (MPFR_CAN_ROUND (c, err, precy, rnd_mode))
+ break;
+
+ /* check for huge cancellation (Near 0) */
+ if (err < (mpfr_exp_t) MPFR_PREC (y))
+ m += MPFR_PREC (y) - err;
+ /* Check if near 1 */
+ if (MPFR_GET_EXP (c) == 1)
+ m += m;
+ }
+
+ ziv_next:
+ /* Else generic increase */
+ MPFR_ZIV_NEXT (loop, m);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (y, c, rnd_mode);
+ /* inexact cannot be 0, since this would mean that c was representable
+ within the target precision, but in that case mpfr_can_round will fail */
+
+ mpfr_clear (c);
+ mpfr_clear (xr);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sin_cos.c b/Build/source/libs/mpfr/mpfr-src/src/sin_cos.c
new file mode 100644
index 00000000000..a064bc6b826
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sin_cos.c
@@ -0,0 +1,662 @@
+/* mpfr_sin_cos -- sine and cosine of a floating-point number
+
+Copyright 2002-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* (y, z) <- (sin(x), cos(x)), return value is 0 iff both results are exact
+ ie, iff x = 0 */
+int
+mpfr_sin_cos (mpfr_ptr y, mpfr_ptr z, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t prec, m;
+ int neg, reduce;
+ mpfr_t c, xr;
+ mpfr_srcptr xx;
+ mpfr_exp_t err, expx;
+ int inexy, inexz;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_ASSERTN (y != z);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
+ {
+ if (MPFR_IS_NAN(x) || MPFR_IS_INF(x))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_SET_NAN (z);
+ MPFR_RET_NAN;
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, x);
+ /* y = 0, thus exact, but z is inexact in case of underflow
+ or overflow */
+ inexy = 0; /* y is exact */
+ inexz = mpfr_set_ui (z, 1, rnd_mode);
+ return INEX(inexy,inexz);
+ }
+ }
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("sin[%Pu]=%.*Rg cos[%Pu]=%.*Rg", mpfr_get_prec(y), mpfr_log_prec, y,
+ mpfr_get_prec (z), mpfr_log_prec, z));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ prec = MAX (MPFR_PREC (y), MPFR_PREC (z));
+ m = prec + MPFR_INT_CEIL_LOG2 (prec) + 13;
+ expx = MPFR_GET_EXP (x);
+
+ /* When x is close to 0, say 2^(-k), then there is a cancellation of about
+ 2k bits in 1-cos(x)^2. FIXME: in that case, it would be more efficient
+ to compute sin(x) directly. VL: This is partly done by using
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT from the mpfr_sin and mpfr_cos
+ functions. Moreover, any overflow on m is avoided. */
+ if (expx < 0)
+ {
+ /* Warning: in case y = x, and the first call to
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT succeeds but the second fails,
+ we will have clobbered the original value of x.
+ The workaround is to first compute z = cos(x) in that case, since
+ y and z are different. */
+ if (y != x)
+ /* y and x differ, thus we can safely try to compute y first */
+ {
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
+ y, x, -2 * expx, 2, 0, rnd_mode,
+ { inexy = _inexact;
+ goto small_input; });
+ if (0)
+ {
+ small_input:
+ /* we can go here only if we can round sin(x) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
+ z, __gmpfr_one, -2 * expx, 1, 0, rnd_mode,
+ { inexz = _inexact;
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ goto end; });
+ }
+
+ /* if we go here, one of the two MPFR_FAST_COMPUTE_IF_SMALL_INPUT
+ calls failed */
+ }
+ else /* y and x are the same variable: try to compute z first, which
+ necessarily differs */
+ {
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
+ z, __gmpfr_one, -2 * expx, 1, 0, rnd_mode,
+ { inexz = _inexact;
+ goto small_input2; });
+ if (0)
+ {
+ small_input2:
+ /* we can go here only if we can round cos(x) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
+ y, x, -2 * expx, 2, 0, rnd_mode,
+ { inexy = _inexact;
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ goto end; });
+ }
+ }
+ m += 2 * (-expx);
+ }
+
+ if (prec >= MPFR_SINCOS_THRESHOLD)
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_sincos_fast (y, z, x, rnd_mode);
+ }
+
+ mpfr_init (c);
+ mpfr_init (xr);
+
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ /* the following is copied from sin.c */
+ if (expx >= 2) /* reduce the argument */
+ {
+ reduce = 1;
+ mpfr_set_prec (c, expx + m - 1);
+ mpfr_set_prec (xr, m);
+ mpfr_const_pi (c, MPFR_RNDN);
+ mpfr_mul_2ui (c, c, 1, MPFR_RNDN);
+ mpfr_remainder (xr, x, c, MPFR_RNDN);
+ mpfr_div_2ui (c, c, 1, MPFR_RNDN);
+ if (MPFR_SIGN (xr) > 0)
+ mpfr_sub (c, c, xr, MPFR_RNDZ);
+ else
+ mpfr_add (c, c, xr, MPFR_RNDZ);
+ if (MPFR_IS_ZERO(xr)
+ || MPFR_EXP(xr) < (mpfr_exp_t) 3 - (mpfr_exp_t) m
+ || MPFR_EXP(c) < (mpfr_exp_t) 3 - (mpfr_exp_t) m)
+ goto next_step;
+ xx = xr;
+ }
+ else /* the input argument is already reduced */
+ {
+ reduce = 0;
+ xx = x;
+ }
+
+ neg = MPFR_IS_NEG (xx); /* gives sign of sin(x) */
+ mpfr_set_prec (c, m);
+ mpfr_cos (c, xx, MPFR_RNDZ);
+ /* If no argument reduction was performed, the error is at most ulp(c),
+ otherwise it is at most ulp(c) + 2^(2-m). Since |c| < 1, we have
+ ulp(c) <= 2^(-m), thus the error is bounded by 2^(3-m) in that later
+ case. */
+ if (reduce == 0)
+ err = m;
+ else
+ err = MPFR_GET_EXP (c) + (mpfr_exp_t) (m - 3);
+ if (!mpfr_can_round (c, err, MPFR_RNDN, MPFR_RNDZ,
+ MPFR_PREC (z) + (rnd_mode == MPFR_RNDN)))
+ goto next_step;
+
+ /* we can't set z now, because in case z = x, and the mpfr_can_round()
+ call below fails, we will have clobbered the input */
+ mpfr_set_prec (xr, MPFR_PREC(c));
+ mpfr_swap (xr, c); /* save the approximation of the cosine in xr */
+ mpfr_sqr (c, xr, MPFR_RNDU); /* the absolute error is bounded by
+ 2^(5-m) if reduce=1, and by 2^(2-m)
+ otherwise */
+ mpfr_ui_sub (c, 1, c, MPFR_RNDN); /* error bounded by 2^(6-m) if reduce
+ is 1, and 2^(3-m) otherwise */
+ mpfr_sqrt (c, c, MPFR_RNDN); /* the absolute error is bounded by
+ 2^(6-m-Exp(c)) if reduce=1, and
+ 2^(3-m-Exp(c)) otherwise */
+ err = 3 + 3 * reduce - MPFR_GET_EXP (c);
+ if (neg)
+ MPFR_CHANGE_SIGN (c);
+
+ /* the absolute error on c is at most 2^(err-m), which we must put
+ in the form 2^(EXP(c)-err). */
+ err = MPFR_GET_EXP (c) + (mpfr_exp_t) m - err;
+ if (mpfr_can_round (c, err, MPFR_RNDN, MPFR_RNDZ,
+ MPFR_PREC (y) + (rnd_mode == MPFR_RNDN)))
+ break;
+ /* check for huge cancellation */
+ if (err < (mpfr_exp_t) MPFR_PREC (y))
+ m += MPFR_PREC (y) - err;
+ /* Check if near 1 */
+ if (MPFR_GET_EXP (c) == 1
+ && MPFR_MANT (c)[MPFR_LIMB_SIZE (c)-1] == MPFR_LIMB_HIGHBIT)
+ m += m;
+
+ next_step:
+ MPFR_ZIV_NEXT (loop, m);
+ mpfr_set_prec (c, m);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexy = mpfr_set (y, c, rnd_mode);
+ inexz = mpfr_set (z, xr, rnd_mode);
+
+ mpfr_clear (c);
+ mpfr_clear (xr);
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ /* FIXME: add a test for bug before revision 7355 */
+ inexy = mpfr_check_range (y, inexy, rnd_mode);
+ inexz = mpfr_check_range (z, inexz, rnd_mode);
+ MPFR_RET (INEX(inexy,inexz));
+}
+
+/*************** asymptotically fast implementation below ********************/
+
+/* truncate Q from R to at most prec bits.
+ Return the number of truncated bits.
+ */
+static mpfr_prec_t
+reduce (mpz_t Q, mpz_srcptr R, mpfr_prec_t prec)
+{
+ mpfr_prec_t l = mpz_sizeinbase (R, 2);
+
+ l = (l > prec) ? l - prec : 0;
+ mpz_fdiv_q_2exp (Q, R, l);
+ return l;
+}
+
+/* truncate S and C so that the smaller has prec bits.
+ Return the number of truncated bits.
+ */
+static unsigned long
+reduce2 (mpz_t S, mpz_t C, mpfr_prec_t prec)
+{
+ unsigned long ls = mpz_sizeinbase (S, 2);
+ unsigned long lc = mpz_sizeinbase (C, 2);
+ unsigned long l;
+
+ l = (ls < lc) ? ls : lc; /* smaller length */
+ l = (l > prec) ? l - prec : 0;
+ mpz_fdiv_q_2exp (S, S, l);
+ mpz_fdiv_q_2exp (C, C, l);
+ return l;
+}
+
+/* return in S0/Q0 a rational approximation of sin(X) with absolute error
+ bounded by 9*2^(-prec), where 0 <= X=p/2^r <= 1/2,
+ and in C0/Q0 a rational approximation of cos(X), with relative error
+ bounded by 9*2^(-prec) (and also absolute error, since
+ |cos(X)| <= 1).
+ We have sin(X)/X = sum((-1)^i*(p/2^r)^i/(2i+1)!, i=0..infinity).
+ We use the following binary splitting formula:
+ P(a,b) = (-p)^(b-a)
+ Q(a,b) = (2a)*(2a+1)*2^r if a+1=b [except Q(0,1)=1], Q(a,c)*Q(c,b) otherwise
+ T(a,b) = 1 if a+1=b, Q(c,b)*T(a,c)+P(a,c)*T(c,b) otherwise.
+
+ Since we use P(a,b) for b-a=2^k only, we compute only p^(2^k).
+ We do not store the factor 2^r in Q().
+
+ Then sin(X)/X ~ T(0,i)/Q(0,i) for i so that (p/2^r)^i/i! is small enough.
+
+ Return l such that Q0 has to be multiplied by 2^l.
+
+ Assumes prec >= 10.
+*/
+static unsigned long
+sin_bs_aux (mpz_t Q0, mpz_t S0, mpz_t C0, mpz_srcptr p, mpfr_prec_t r,
+ mpfr_prec_t prec)
+{
+ mpz_t T[GMP_NUMB_BITS], Q[GMP_NUMB_BITS], ptoj[GMP_NUMB_BITS], pp;
+ mpfr_prec_t log2_nb_terms[GMP_NUMB_BITS], mult[GMP_NUMB_BITS];
+ mpfr_prec_t accu[GMP_NUMB_BITS], size_ptoj[GMP_NUMB_BITS];
+ mpfr_prec_t prec_i_have, r0 = r;
+ unsigned long alloc, i, j, k;
+ mpfr_prec_t l;
+
+ if (MPFR_UNLIKELY(mpz_cmp_ui (p, 0) == 0)) /* sin(x)/x -> 1 */
+ {
+ mpz_set_ui (Q0, 1);
+ mpz_set_ui (S0, 1);
+ mpz_set_ui (C0, 1);
+ return 0;
+ }
+
+ /* check that X=p/2^r <= 1/2 */
+ MPFR_ASSERTN(mpz_sizeinbase (p, 2) - (mpfr_exp_t) r <= -1);
+
+ mpz_init (pp);
+
+ /* normalize p (non-zero here) */
+ l = mpz_scan1 (p, 0);
+ mpz_fdiv_q_2exp (pp, p, l); /* p = pp * 2^l */
+ mpz_mul (pp, pp, pp);
+ r = 2 * (r - l); /* x^2 = (p/2^r0)^2 = pp / 2^r */
+
+ /* now p is odd */
+ alloc = 2;
+ mpz_init_set_ui (T[0], 6);
+ mpz_init_set_ui (Q[0], 6);
+ mpz_init_set (ptoj[0], pp); /* ptoj[i] = pp^(2^i) */
+ mpz_init (T[1]);
+ mpz_init (Q[1]);
+ mpz_init (ptoj[1]);
+ mpz_mul (ptoj[1], pp, pp); /* ptoj[1] = pp^2 */
+ size_ptoj[1] = mpz_sizeinbase (ptoj[1], 2);
+
+ mpz_mul_2exp (T[0], T[0], r);
+ mpz_sub (T[0], T[0], pp); /* 6*2^r - pp = 6*2^r*(1 - x^2/6) */
+ log2_nb_terms[0] = 1;
+
+ /* already take into account the factor x=p/2^r in sin(x) = x * (...) */
+ mult[0] = r - mpz_sizeinbase (pp, 2) + r0 - mpz_sizeinbase (p, 2);
+ /* we have x^3 < 1/2^mult[0] */
+
+ for (i = 2, k = 0, prec_i_have = mult[0]; prec_i_have < prec; i += 2)
+ {
+ /* i is even here */
+ /* invariant: Q[0]*Q[1]*...*Q[k] equals (2i-1)!,
+ we have already summed terms of index < i
+ in S[0]/Q[0], ..., S[k]/Q[k] */
+ k ++;
+ if (k + 1 >= alloc) /* necessarily k + 1 = alloc */
+ {
+ alloc ++;
+ mpz_init (T[k+1]);
+ mpz_init (Q[k+1]);
+ mpz_init (ptoj[k+1]);
+ mpz_mul (ptoj[k+1], ptoj[k], ptoj[k]); /* pp^(2^(k+1)) */
+ size_ptoj[k+1] = mpz_sizeinbase (ptoj[k+1], 2);
+ }
+ /* for i even, we have Q[k] = (2*i)*(2*i+1), T[k] = 1,
+ then Q[k+1] = (2*i+2)*(2*i+3), T[k+1] = 1,
+ which reduces to T[k] = (2*i+2)*(2*i+3)*2^r-pp,
+ Q[k] = (2*i)*(2*i+1)*(2*i+2)*(2*i+3). */
+ log2_nb_terms[k] = 1;
+ mpz_set_ui (Q[k], (2 * i + 2) * (2 * i + 3));
+ mpz_mul_2exp (T[k], Q[k], r);
+ mpz_sub (T[k], T[k], pp);
+ mpz_mul_ui (Q[k], Q[k], (2 * i) * (2 * i + 1));
+ /* the next term of the series is divided by Q[k] and multiplied
+ by pp^2/2^(2r), thus the mult. factor < 1/2^mult[k] */
+ mult[k] = mpz_sizeinbase (Q[k], 2) + 2 * r - size_ptoj[1] - 1;
+ /* the absolute contribution of the next term is 1/2^accu[k] */
+ accu[k] = (k == 0) ? mult[k] : mult[k] + accu[k-1];
+ prec_i_have = accu[k]; /* the current term is < 1/2^accu[k] */
+ j = (i + 2) / 2;
+ l = 1;
+ while ((j & 1) == 0) /* combine and reduce */
+ {
+ mpz_mul (T[k], T[k], ptoj[l]);
+ mpz_mul (T[k-1], T[k-1], Q[k]);
+ mpz_mul_2exp (T[k-1], T[k-1], r << l);
+ mpz_add (T[k-1], T[k-1], T[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ log2_nb_terms[k-1] ++; /* number of terms in S[k-1]
+ is a power of 2 by construction */
+ prec_i_have = mpz_sizeinbase (Q[k], 2);
+ mult[k-1] += prec_i_have + (r << l) - size_ptoj[l] - 1;
+ accu[k-1] = (k == 1) ? mult[k-1] : mult[k-1] + accu[k-2];
+ prec_i_have = accu[k-1];
+ l ++;
+ j >>= 1;
+ k --;
+ }
+ }
+
+ /* accumulate all products in T[0] and Q[0]. Warning: contrary to above,
+ here we do not have log2_nb_terms[k-1] = log2_nb_terms[k]+1. */
+ l = 0; /* number of accumulated terms in the right part T[k]/Q[k] */
+ while (k > 0)
+ {
+ j = log2_nb_terms[k-1];
+ mpz_mul (T[k], T[k], ptoj[j]);
+ mpz_mul (T[k-1], T[k-1], Q[k]);
+ l += 1 << log2_nb_terms[k];
+ mpz_mul_2exp (T[k-1], T[k-1], r * l);
+ mpz_add (T[k-1], T[k-1], T[k]);
+ mpz_mul (Q[k-1], Q[k-1], Q[k]);
+ k--;
+ }
+
+ l = r0 + r * (i - 1); /* implicit multiplier 2^r for Q0 */
+ /* at this point T[0]/(2^l*Q[0]) is an approximation of sin(x) where the 1st
+ neglected term has contribution < 1/2^prec, thus since the series has
+ alternate signs, the error is < 1/2^prec */
+
+ /* we truncate Q0 to prec bits: the relative error is at most 2^(1-prec),
+ which means that Q0 = Q[0] * (1+theta) with |theta| <= 2^(1-prec)
+ [up to a power of two] */
+ l += reduce (Q0, Q[0], prec);
+ l -= reduce (T[0], T[0], prec);
+ /* multiply by x = p/2^l */
+ mpz_mul (S0, T[0], p);
+ l -= reduce (S0, S0, prec); /* S0 = T[0] * (1 + theta)^2 up to power of 2 */
+ /* sin(X) ~ S0/Q0*(1 + theta)^3 + err with |theta| <= 2^(1-prec) and
+ |err| <= 2^(-prec), thus since |S0/Q0| <= 1:
+ |sin(X) - S0/Q0| <= 4*|theta*S0/Q0| + |err| <= 9*2^(-prec) */
+
+ mpz_clear (pp);
+ for (j = 0; j < alloc; j ++)
+ {
+ mpz_clear (T[j]);
+ mpz_clear (Q[j]);
+ mpz_clear (ptoj[j]);
+ }
+
+ /* compute cos(X) from sin(X): sqrt(1-(S/Q)^2) = sqrt(Q^2-S^2)/Q
+ = sqrt(Q0^2*2^(2l)-S0^2)/Q0.
+ Write S/Q = sin(X) + eps with |eps| <= 9*2^(-prec),
+ then sqrt(Q^2-S^2) = sqrt(Q^2-Q^2*(sin(X)+eps)^2)
+ = sqrt(Q^2*cos(X)^2-Q^2*(2*sin(X)*eps+eps^2))
+ = sqrt(Q^2*cos(X)^2-Q^2*eps1) with |eps1|<=9*2^(-prec)
+ [using X<=1/2 and eps<=9*2^(-prec) and prec>=10]
+
+ Since we truncate the square root, we get:
+ sqrt(Q^2*cos(X)^2-Q^2*eps1)+eps2 with |eps2|<1
+ = Q*sqrt(cos(X)^2-eps1)+eps2
+ = Q*cos(X)*(1+eps3)+eps2 with |eps3| <= 6*2^(-prec)
+ = Q*cos(X)*(1+eps3+eps2/(Q*cos(X)))
+ = Q*cos(X)*(1+eps4) with |eps4| <= 9*2^(-prec)
+ since |Q| >= 2^(prec-1) */
+ /* we assume that Q0*2^l >= 2^(prec-1) */
+ MPFR_ASSERTN(l + mpz_sizeinbase (Q0, 2) >= prec);
+ mpz_mul (C0, Q0, Q0);
+ mpz_mul_2exp (C0, C0, 2 * l);
+ mpz_submul (C0, S0, S0);
+ mpz_sqrt (C0, C0);
+
+ return l;
+}
+
+/* Put in s and c approximations of sin(x) and cos(x) respectively.
+ Assumes 0 < x < Pi/4 and PREC(s) = PREC(c) >= 10.
+ Return err such that the relative error is bounded by 2^err ulps.
+*/
+static int
+sincos_aux (mpfr_t s, mpfr_t c, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t prec_s, sh;
+ mpz_t Q, S, C, Q2, S2, C2, y;
+ mpfr_t x2;
+ unsigned long l, l2, j, err;
+
+ MPFR_ASSERTD(MPFR_PREC(s) == MPFR_PREC(c));
+
+ prec_s = MPFR_PREC(s);
+
+ mpfr_init2 (x2, MPFR_PREC(x));
+ mpz_init (Q);
+ mpz_init (S);
+ mpz_init (C);
+ mpz_init (Q2);
+ mpz_init (S2);
+ mpz_init (C2);
+ mpz_init (y);
+
+ mpfr_set (x2, x, MPFR_RNDN); /* exact */
+ mpz_set_ui (Q, 1);
+ l = 0;
+ mpz_set_ui (S, 0); /* sin(0) = S/(2^l*Q), exact */
+ mpz_set_ui (C, 1); /* cos(0) = C/(2^l*Q), exact */
+
+ /* Invariant: x = X + x2/2^(sh-1), where the part X was already treated,
+ S/(2^l*Q) ~ sin(X), C/(2^l*Q) ~ cos(X), and x2/2^(sh-1) < Pi/4.
+ 'sh-1' is the number of already shifted bits in x2.
+ */
+
+ for (sh = 1, j = 0; mpfr_cmp_ui (x2, 0) != 0 && sh <= prec_s; sh <<= 1, j++)
+ {
+ if (sh > prec_s / 2) /* sin(x) = x + O(x^3), cos(x) = 1 + O(x^2) */
+ {
+ l2 = -mpfr_get_z_2exp (S2, x2); /* S2/2^l2 = x2 */
+ l2 += sh - 1;
+ mpz_set_ui (Q2, 1);
+ mpz_set_ui (C2, 1);
+ mpz_mul_2exp (C2, C2, l2);
+ mpfr_set_ui (x2, 0, MPFR_RNDN);
+ }
+ else
+ {
+ /* y <- trunc(x2 * 2^sh) = trunc(x * 2^(2*sh-1)) */
+ mpfr_mul_2exp (x2, x2, sh, MPFR_RNDN); /* exact */
+ mpfr_get_z (y, x2, MPFR_RNDZ); /* round towards zero: now
+ 0 <= x2 < 2^sh, thus
+ 0 <= x2/2^(sh-1) < 2^(1-sh) */
+ if (mpz_cmp_ui (y, 0) == 0)
+ continue;
+ mpfr_sub_z (x2, x2, y, MPFR_RNDN); /* should be exact */
+ l2 = sin_bs_aux (Q2, S2, C2, y, 2 * sh - 1, prec_s);
+ /* we now have |S2/Q2/2^l2 - sin(X)| <= 9*2^(prec_s)
+ and |C2/Q2/2^l2 - cos(X)| <= 6*2^(prec_s), with X=y/2^(2sh-1) */
+ }
+ if (sh == 1) /* S=0, C=1 */
+ {
+ l = l2;
+ mpz_swap (Q, Q2);
+ mpz_swap (S, S2);
+ mpz_swap (C, C2);
+ }
+ else
+ {
+ /* s <- s*c2+c*s2, c <- c*c2-s*s2, using Karatsuba:
+ a = s+c, b = s2+c2, t = a*b, d = s*s2, e = c*c2,
+ s <- t - d - e, c <- e - d */
+ mpz_add (y, S, C); /* a */
+ mpz_mul (C, C, C2); /* e */
+ mpz_add (C2, C2, S2); /* b */
+ mpz_mul (S2, S, S2); /* d */
+ mpz_mul (y, y, C2); /* a*b */
+ mpz_sub (S, y, S2); /* t - d */
+ mpz_sub (S, S, C); /* t - d - e */
+ mpz_sub (C, C, S2); /* e - d */
+ mpz_mul (Q, Q, Q2);
+ /* after j loops, the error is <= (11j-2)*2^(prec_s) */
+ l += l2;
+ /* reduce Q to prec_s bits */
+ l += reduce (Q, Q, prec_s);
+ /* reduce S,C to prec_s bits, error <= 11*j*2^(prec_s) */
+ l -= reduce2 (S, C, prec_s);
+ }
+ }
+
+ j = 11 * j;
+ for (err = 0; j > 1; j = (j + 1) / 2, err ++);
+
+ mpfr_set_z (s, S, MPFR_RNDN);
+ mpfr_div_z (s, s, Q, MPFR_RNDN);
+ mpfr_div_2exp (s, s, l, MPFR_RNDN);
+
+ mpfr_set_z (c, C, MPFR_RNDN);
+ mpfr_div_z (c, c, Q, MPFR_RNDN);
+ mpfr_div_2exp (c, c, l, MPFR_RNDN);
+
+ mpz_clear (Q);
+ mpz_clear (S);
+ mpz_clear (C);
+ mpz_clear (Q2);
+ mpz_clear (S2);
+ mpz_clear (C2);
+ mpz_clear (y);
+ mpfr_clear (x2);
+ return err;
+}
+
+/* Assumes x is neither NaN, +/-Inf, nor +/- 0.
+ One of s and c might be NULL, in which case the corresponding value is
+ not computed.
+ Assumes s differs from c.
+ */
+int
+mpfr_sincos_fast (mpfr_t s, mpfr_t c, mpfr_srcptr x, mpfr_rnd_t rnd)
+{
+ int inexs, inexc;
+ mpfr_t x_red, ts, tc;
+ mpfr_prec_t w;
+ mpfr_exp_t err, errs, errc;
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_ASSERTN(s != c);
+ if (s == NULL)
+ w = MPFR_PREC(c);
+ else if (c == NULL)
+ w = MPFR_PREC(s);
+ else
+ w = MPFR_PREC(s) >= MPFR_PREC(c) ? MPFR_PREC(s) : MPFR_PREC(c);
+ w += MPFR_INT_CEIL_LOG2(w) + 9; /* ensures w >= 10 (needed by sincos_aux) */
+ mpfr_init2 (ts, w);
+ mpfr_init2 (tc, w);
+
+ MPFR_ZIV_INIT (loop, w);
+ for (;;)
+ {
+ /* if 0 < x <= Pi/4, we can call sincos_aux directly */
+ if (MPFR_IS_POS(x) && mpfr_cmp_ui_2exp (x, 1686629713, -31) <= 0)
+ {
+ err = sincos_aux (ts, tc, x, MPFR_RNDN);
+ }
+ /* if -Pi/4 <= x < 0, use sin(-x)=-sin(x) */
+ else if (MPFR_IS_NEG(x) && mpfr_cmp_si_2exp (x, -1686629713, -31) >= 0)
+ {
+ mpfr_init2 (x_red, MPFR_PREC(x));
+ mpfr_neg (x_red, x, rnd); /* exact */
+ err = sincos_aux (ts, tc, x_red, MPFR_RNDN);
+ mpfr_neg (ts, ts, MPFR_RNDN);
+ mpfr_clear (x_red);
+ }
+ else /* argument reduction is needed */
+ {
+ long q;
+ mpfr_t pi;
+ int neg = 0;
+
+ mpfr_init2 (x_red, w);
+ mpfr_init2 (pi, (MPFR_EXP(x) > 0) ? w + MPFR_EXP(x) : w);
+ mpfr_const_pi (pi, MPFR_RNDN);
+ mpfr_div_2exp (pi, pi, 1, MPFR_RNDN); /* Pi/2 */
+ mpfr_remquo (x_red, &q, x, pi, MPFR_RNDN);
+ /* x = q * (Pi/2 + eps1) + x_red + eps2,
+ where |eps1| <= 1/2*ulp(Pi/2) = 2^(-w-MAX(0,EXP(x))),
+ and eps2 <= 1/2*ulp(x_red) <= 1/2*ulp(Pi/2) = 2^(-w)
+ Since |q| <= x/(Pi/2) <= |x|, we have
+ q*|eps1| <= 2^(-w), thus
+ |x - q * Pi/2 - x_red| <= 2^(1-w) */
+ /* now -Pi/4 <= x_red <= Pi/4: if x_red < 0, consider -x_red */
+ if (MPFR_IS_NEG(x_red))
+ {
+ mpfr_neg (x_red, x_red, MPFR_RNDN);
+ neg = 1;
+ }
+ err = sincos_aux (ts, tc, x_red, MPFR_RNDN);
+ err ++; /* to take into account the argument reduction */
+ if (neg) /* sin(-x) = -sin(x), cos(-x) = cos(x) */
+ mpfr_neg (ts, ts, MPFR_RNDN);
+ if (q & 2) /* sin(x+Pi) = -sin(x), cos(x+Pi) = -cos(x) */
+ {
+ mpfr_neg (ts, ts, MPFR_RNDN);
+ mpfr_neg (tc, tc, MPFR_RNDN);
+ }
+ if (q & 1) /* sin(x+Pi/2) = cos(x), cos(x+Pi/2) = -sin(x) */
+ {
+ mpfr_neg (ts, ts, MPFR_RNDN);
+ mpfr_swap (ts, tc);
+ }
+ mpfr_clear (x_red);
+ mpfr_clear (pi);
+ }
+ /* adjust errors with respect to absolute values */
+ errs = err - MPFR_EXP(ts);
+ errc = err - MPFR_EXP(tc);
+ if ((s == NULL || MPFR_CAN_ROUND (ts, w - errs, MPFR_PREC(s), rnd)) &&
+ (c == NULL || MPFR_CAN_ROUND (tc, w - errc, MPFR_PREC(c), rnd)))
+ break;
+ MPFR_ZIV_NEXT (loop, w);
+ mpfr_set_prec (ts, w);
+ mpfr_set_prec (tc, w);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexs = (s == NULL) ? 0 : mpfr_set (s, ts, rnd);
+ inexc = (c == NULL) ? 0 : mpfr_set (c, tc, rnd);
+
+ mpfr_clear (ts);
+ mpfr_clear (tc);
+ return INEX(inexs,inexc);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sinh.c b/Build/source/libs/mpfr/mpfr-src/src/sinh.c
new file mode 100644
index 00000000000..1dc010ee6a3
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sinh.c
@@ -0,0 +1,184 @@
+/* mpfr_sinh -- hyperbolic sine
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+ /* The computation of sinh is done by
+ sinh(x) = 1/2 [e^(x)-e^(-x)] */
+
+int
+mpfr_sinh (mpfr_ptr y, mpfr_srcptr xt, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t x;
+ int inexact;
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (xt), mpfr_log_prec, xt, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (xt)))
+ {
+ if (MPFR_IS_NAN (xt))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (xt))
+ {
+ MPFR_SET_INF (y);
+ MPFR_SET_SAME_SIGN (y, xt);
+ MPFR_RET (0);
+ }
+ else /* xt is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (xt));
+ MPFR_SET_ZERO (y); /* sinh(0) = 0 */
+ MPFR_SET_SAME_SIGN (y, xt);
+ MPFR_RET (0);
+ }
+ }
+
+ /* sinh(x) = x + x^3/6 + ... so the error is < 2^(3*EXP(x)-2) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, xt, -2 * MPFR_GET_EXP(xt), 2, 1,
+ rnd_mode, {});
+
+ MPFR_TMP_INIT_ABS (x, xt);
+
+ {
+ mpfr_t t, ti;
+ mpfr_exp_t d;
+ mpfr_prec_t Nt; /* Precision of the intermediary variable */
+ long int err; /* Precision of error */
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_GROUP_DECL (group);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* compute the precision of intermediary variable */
+ Nt = MAX (MPFR_PREC (x), MPFR_PREC (y));
+ /* the optimal number of bits : see algorithms.ps */
+ Nt = Nt + MPFR_INT_CEIL_LOG2 (Nt) + 4;
+ /* If x is near 0, exp(x) - 1/exp(x) = 2*x+x^3/3+O(x^5) */
+ if (MPFR_GET_EXP (x) < 0)
+ Nt -= 2*MPFR_GET_EXP (x);
+
+ /* initialise of intermediary variables */
+ MPFR_GROUP_INIT_2 (group, Nt, t, ti);
+
+ /* First computation of sinh */
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* compute sinh */
+ MPFR_BLOCK (flags, mpfr_exp (t, x, MPFR_RNDD));
+ if (MPFR_OVERFLOW (flags))
+ /* exp(x) does overflow */
+ {
+ /* sinh(x) = 2 * sinh(x/2) * cosh(x/2) */
+ mpfr_div_2ui (ti, x, 1, MPFR_RNDD); /* exact */
+
+ /* t <- cosh(x/2): error(t) <= 1 ulp(t) */
+ MPFR_BLOCK (flags, mpfr_cosh (t, ti, MPFR_RNDD));
+ if (MPFR_OVERFLOW (flags))
+ /* when x>1 we have |sinh(x)| >= cosh(x/2), so sinh(x)
+ overflows too */
+ {
+ inexact = mpfr_overflow (y, rnd_mode, MPFR_SIGN (xt));
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+
+ /* ti <- sinh(x/2): , error(ti) <= 1 ulp(ti)
+ cannot overflow because 0 < sinh(x) < cosh(x) when x > 0 */
+ mpfr_sinh (ti, ti, MPFR_RNDD);
+
+ /* multiplication below, error(t) <= 5 ulp(t) */
+ MPFR_BLOCK (flags, mpfr_mul (t, t, ti, MPFR_RNDD));
+ if (MPFR_OVERFLOW (flags))
+ {
+ inexact = mpfr_overflow (y, rnd_mode, MPFR_SIGN (xt));
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+
+ /* doubling below, exact */
+ MPFR_BLOCK (flags, mpfr_mul_2ui (t, t, 1, MPFR_RNDN));
+ if (MPFR_OVERFLOW (flags))
+ {
+ inexact = mpfr_overflow (y, rnd_mode, MPFR_SIGN (xt));
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+
+ /* we have lost at most 3 bits of precision */
+ err = Nt - 3;
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, MPFR_PREC (y),
+ rnd_mode)))
+ {
+ inexact = mpfr_set4 (y, t, rnd_mode, MPFR_SIGN (xt));
+ break;
+ }
+ err = Nt; /* double the precision */
+ }
+ else
+ {
+ d = MPFR_GET_EXP (t);
+ mpfr_ui_div (ti, 1, t, MPFR_RNDU); /* 1/exp(x) */
+ mpfr_sub (t, t, ti, MPFR_RNDN); /* exp(x) - 1/exp(x) */
+ mpfr_div_2ui (t, t, 1, MPFR_RNDN); /* 1/2(exp(x) - 1/exp(x)) */
+
+ /* it may be that t is zero (in fact, it can only occur when te=1,
+ and thus ti=1 too) */
+ if (MPFR_IS_ZERO (t))
+ err = Nt; /* double the precision */
+ else
+ {
+ /* calculation of the error */
+ d = d - MPFR_GET_EXP (t) + 2;
+ /* error estimate: err = Nt-(__gmpfr_ceil_log2(1+pow(2,d)));*/
+ err = Nt - (MAX (d, 0) + 1);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (t, err, MPFR_PREC (y),
+ rnd_mode)))
+ {
+ inexact = mpfr_set4 (y, t, rnd_mode, MPFR_SIGN (xt));
+ break;
+ }
+ }
+ }
+
+ /* actualisation of the precision */
+ Nt += err;
+ MPFR_ZIV_NEXT (loop, Nt);
+ MPFR_GROUP_REPREC_2 (group, Nt, t, ti);
+ }
+ MPFR_ZIV_FREE (loop);
+ MPFR_GROUP_CLEAR (group);
+ MPFR_SAVE_EXPO_FREE (expo);
+ }
+
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sinh_cosh.c b/Build/source/libs/mpfr/mpfr-src/src/sinh_cosh.c
new file mode 100644
index 00000000000..35f82ad6133
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sinh_cosh.c
@@ -0,0 +1,161 @@
+/* mpfr_sinh_cosh -- hyperbolic sine and cosine
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#define INEXPOS(y) ((y) == 0 ? 0 : (((y) > 0) ? 1 : 2))
+#define INEX(y,z) (INEXPOS(y) | (INEXPOS(z) << 2))
+
+ /* The computations are done by
+ cosh(x) = 1/2 [e^(x)+e^(-x)]
+ sinh(x) = 1/2 [e^(x)-e^(-x)]
+ Adapted from mpfr_sinh.c */
+
+int
+mpfr_sinh_cosh (mpfr_ptr sh, mpfr_ptr ch, mpfr_srcptr xt, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t x;
+ int inexact_sh, inexact_ch;
+
+ MPFR_ASSERTN (sh != ch);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (xt), mpfr_log_prec, xt, rnd_mode),
+ ("sh[%Pu]=%.*Rg ch[%Pu]=%.*Rg",
+ mpfr_get_prec (sh), mpfr_log_prec, sh,
+ mpfr_get_prec (ch), mpfr_log_prec, ch));
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (xt)))
+ {
+ if (MPFR_IS_NAN (xt))
+ {
+ MPFR_SET_NAN (ch);
+ MPFR_SET_NAN (sh);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (xt))
+ {
+ MPFR_SET_INF (sh);
+ MPFR_SET_SAME_SIGN (sh, xt);
+ MPFR_SET_INF (ch);
+ MPFR_SET_POS (ch);
+ MPFR_RET (0);
+ }
+ else /* xt is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (xt));
+ MPFR_SET_ZERO (sh); /* sinh(0) = 0 */
+ MPFR_SET_SAME_SIGN (sh, xt);
+ inexact_sh = 0;
+ inexact_ch = mpfr_set_ui (ch, 1, rnd_mode); /* cosh(0) = 1 */
+ return INEX(inexact_sh,inexact_ch);
+ }
+ }
+
+ /* Warning: if we use MPFR_FAST_COMPUTE_IF_SMALL_INPUT here, make sure
+ that the code also works in case of overlap (see sin_cos.c) */
+
+ MPFR_TMP_INIT_ABS (x, xt);
+
+ {
+ mpfr_t s, c, ti;
+ mpfr_exp_t d;
+ mpfr_prec_t N; /* Precision of the intermediary variables */
+ long int err; /* Precision of error */
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_GROUP_DECL (group);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* compute the precision of intermediary variable */
+ N = MPFR_PREC (ch);
+ N = MAX (N, MPFR_PREC (sh));
+ /* the optimal number of bits : see algorithms.ps */
+ N = N + MPFR_INT_CEIL_LOG2 (N) + 4;
+
+ /* initialise of intermediary variables */
+ MPFR_GROUP_INIT_3 (group, N, s, c, ti);
+
+ /* First computation of sinh_cosh */
+ MPFR_ZIV_INIT (loop, N);
+ for (;;)
+ {
+ MPFR_BLOCK_DECL (flags);
+
+ /* compute sinh_cosh */
+ MPFR_BLOCK (flags, mpfr_exp (s, x, MPFR_RNDD));
+ if (MPFR_OVERFLOW (flags))
+ /* exp(x) does overflow */
+ {
+ /* since cosh(x) >= exp(x), cosh(x) overflows too */
+ inexact_ch = mpfr_overflow (ch, rnd_mode, MPFR_SIGN_POS);
+ /* sinh(x) may be representable */
+ inexact_sh = mpfr_sinh (sh, xt, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ break;
+ }
+ d = MPFR_GET_EXP (s);
+ mpfr_ui_div (ti, 1, s, MPFR_RNDU); /* 1/exp(x) */
+ mpfr_add (c, s, ti, MPFR_RNDU); /* exp(x) + 1/exp(x) */
+ mpfr_sub (s, s, ti, MPFR_RNDN); /* exp(x) - 1/exp(x) */
+ mpfr_div_2ui (c, c, 1, MPFR_RNDN); /* 1/2(exp(x) + 1/exp(x)) */
+ mpfr_div_2ui (s, s, 1, MPFR_RNDN); /* 1/2(exp(x) - 1/exp(x)) */
+
+ /* it may be that s is zero (in fact, it can only occur when exp(x)=1,
+ and thus ti=1 too) */
+ if (MPFR_IS_ZERO (s))
+ err = N; /* double the precision */
+ else
+ {
+ /* calculation of the error */
+ d = d - MPFR_GET_EXP (s) + 2;
+ /* error estimate: err = N-(__gmpfr_ceil_log2(1+pow(2,d)));*/
+ err = N - (MAX (d, 0) + 1);
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s, err, MPFR_PREC (sh),
+ rnd_mode) && \
+ MPFR_CAN_ROUND (c, err, MPFR_PREC (ch),
+ rnd_mode)))
+ {
+ inexact_sh = mpfr_set4 (sh, s, rnd_mode, MPFR_SIGN (xt));
+ inexact_ch = mpfr_set (ch, c, rnd_mode);
+ break;
+ }
+ }
+ /* actualisation of the precision */
+ N += err;
+ MPFR_ZIV_NEXT (loop, N);
+ MPFR_GROUP_REPREC_3 (group, N, s, c, ti);
+ }
+ MPFR_ZIV_FREE (loop);
+ MPFR_GROUP_CLEAR (group);
+ MPFR_SAVE_EXPO_FREE (expo);
+ }
+
+ /* now, let's raise the flags if needed */
+ inexact_sh = mpfr_check_range (sh, inexact_sh, rnd_mode);
+ inexact_ch = mpfr_check_range (ch, inexact_ch, rnd_mode);
+
+ return INEX(inexact_sh,inexact_ch);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sparc64/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/sparc64/mparam.h
new file mode 100644
index 00000000000..8c5cfdc9afd
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sparc64/mparam.h
@@ -0,0 +1,233 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 3.3.5 */
+/* gcc64.fsffrance.org (sparc64) with gmp 5.0.2 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,-1,0,-1,-1,-1,7,-1,9,9,11,11,11,13, \
+ 11,13,13,15,15,17,15,19,17,17,19,19,19,19,21,21, \
+ 23,23,23,23,25,27,23,30,30,30,30,30,30,30,34,34, \
+ 34,34,34,34,38,38,38,38,38,38,42,42,41,42,42,42, \
+ 42,42,42,46,46,46,46,46,46,50,50,50,50,50,50,60, \
+ 60,60,60,60,60,60,60,60,60,68,60,68,68,60,68,68, \
+ 68,68,68,68,68,68,68,68,76,76,76,76,76,76,76,76, \
+ 76,76,76,76,84,76,84,84,84,76,84,84,84,84,84,84, \
+ 84,84,84,84,84,84,92,92,92,92,92,92,92,84,92,92, \
+ 92,92,100,100,100,100,100,100,100,100,100,100,120,100,120,120, \
+ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, \
+ 120,120,119,120,119,120,120,136,136,136,136,136,136,136,136,136, \
+ 136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,152, \
+ 152,152,152,136,152,152,152,136,152,136,152,152,136,152,152,152, \
+ 152,152,152,136,152,152,168,168,168,201,168,168,201,201,201,201, \
+ 201,201,201,201,201,200,201,200,201,200,201,201,201,201,201,201, \
+ 201,201,201,201,201,200,201,201,201,201,201,201,201,201,201,201, \
+ 201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, \
+ 201,201,201,201,200,201,200,201,201,201,201,201,201,201,201,201, \
+ 225,224,225,225,225,225,225,224,225,224,225,224,225,225,225,282, \
+ 225,282,282,282,282,282,282,294,294,294,294,294,294,294,294,294, \
+ 282,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294, \
+ 294,294,293,294,294,294,294,294,294,294,294,294,294,294,294,294, \
+ 294,294,294,294,293,294,294,294,294,294,294,294,294,294,293,294, \
+ 294,294,294,294,294,294,294,294,294,294,294,294,294,318,294,318, \
+ 294,294,294,360,359,360,360,358,360,360,360,360,359,360,360,360, \
+ 360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,359,360,360,360,360,360,360,360,360,360, \
+ 360,360,360,360,360,360,360,358,360,360,360,360,360,360,354,360, \
+ 360,360,360,360,360,360,360,392,360,360,392,392,360,392,391,392, \
+ 391,392,392,392,391,392,391,392,354,392,391,392,391,392,391,392, \
+ 391,392,391,392,391,392,391,392,392,392,391,392,392,392,392,392, \
+ 424,392,391,392,424,392,424,424,424,392,424,424,424,424,424,472, \
+ 424,424,424,472,424,472,472,472,472,472,472,472,472,472,472,471, \
+ 472,472,472,472,472,472,472,472,472,472,472,471,472,472,472,471, \
+ 472,472,472,472,472,472,472,472,472,472,472,472,472,472,471,472, \
+ 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,472,472,471,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, \
+ 472,472,472,536,536,536,536,536,536,528,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,544,536,536,536,536,600,536,599,600,600, \
+ 599,599,600,600,600,600,600,600,599,600,600,600,600,599,600,600, \
+ 600,600,600,600,600,599,600,599,600,600,600,599,600,600,600,600, \
+ 600,599,600,599,600,600,600,599,600,600,600,600,600,600,600,600, \
+ 600,600,600,599,599,600,600,600,600,600,600,600,600,600,600,600, \
+ 600,600,600,600,600,599,600,600,599,600,599,600,599,600,600,600, \
+ 599,600,600,600,599,600,600,664,600,664,600,600,600,600,600,663, \
+ 599,664,600,664,600,664,664,664,664,664,664,664,663,664,664,664, \
+ 663,664,664,664,663,664,663,664,664,664,663,664,663,664,664,664, \
+ 664,664,664,664,664,664,663,664,664,663,664,664,664,664,664,664, \
+ 663,663,664,664,664,664,663,664,663,664,663,664,663,664,663,664, \
+ 663,664,663,664,664,664,664,664,664,664,663,664,663,664,664,664, \
+ 664,664,664,664,664,664,664,664,663,728,663,728,728,727,728,728, \
+ 728,728,728,728,728,728,728,728,727,728,728,728,727,728,728,728, \
+ 728,728,728,728,727,728,727,728,728,728,727,728,727,728,728,728, \
+ 727,728,728,728,727,728,728,728,728,728,727,728,728,728,728,728, \
+ 727,728,728,728,727,728,792,792,727,728,727,728,791,792,728,728, \
+ 728,728,728,728,728,728,792,792,727,792,792,792,792,792,791,792, \
+ 792,792,792,792,792,792,792,792,792,792,792,792,792,792,791,790, \
+ 791,792,791,792,792,792,791,792,791,792,791,792,791,792,791,792, \
+ 791,792,792,792,791,792,792,792,791,792,792,792,791,792,791,791, \
+ 791,791,791,792,792,791,792,792,791,792,792,792,791,792,792,792, \
+ 792,791,792,792,791,792,792,856,792,792,792,856,792,791,792,856 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,-1,5,5,7,7,9,7,9,8,9,10, \
+ 11,10,11,11,13,12,13,13,17,14,16,16,16,16,17,18, \
+ 18,18,19,20,20,22,21,24,22,24,23,24,24,26,26,26, \
+ 28,28,28,30,28,29,30,31,30,31,32,33,32,33,34,35, \
+ 34,35,36,36,36,37,38,40,40,40,40,40,42,43,42,44, \
+ 45,47,50,44,44,44,50,48,50,51,47,48,49,48,49,50, \
+ 51,52,53,52,53,52,53,54,55,56,57,58,59,56,57,58, \
+ 59,58,59,62,61,60,61,62,63,62,63,64,65,64,65,70, \
+ 67,72,72,72,76,74,72,72,74,76,76,76,76,74,80,80, \
+ 74,76,84,80,80,82,80,84,82,84,84,88,84,90,88,82, \
+ 86,88,88,84,84,86,88,88,88,88,88,88,88,88,90,92, \
+ 90,92,92,92,96,94,96,96,96,96,100,96,96,116,98,100, \
+ 98,98,100,100,117,117,118,119,119,120,116,119,120,119,118,119, \
+ 119,119,122,128,120,119,120,119,116,121,120,118,120,125,125,119, \
+ 125,124,131,131,130,131,134,131,132,134,124,125,133,143,137,138, \
+ 131,144,138,137,135,138,130,135,137,143,143,137,137,143,130,138, \
+ 131,140,138,137,136,149,149,142,143,156,149,149,144,154,149,147, \
+ 149,156,149,152,147,147,155,156,149,150,149,146,160,160,163,168, \
+ 167,167,156,166,156,164,156,158,161,172,161,166,167,161,173,164, \
+ 167,174,173,162,171,172,173,176,173,171,165,182,174,174,173,184, \
+ 171,170,174,173,178,176,176,168,179,176,177,182,178,180,191,174, \
+ 186,184,176,192,180,180,173,174,179,185,175,182,184,180,179,178, \
+ 179,180,179,186,185,185,188,184,186,188,186,190,191,191,195,192, \
+ 198,192,194,200,213,197,225,198,201,200,191,210,195,212,224,212, \
+ 213,213,212,212,213,213,221,218,218,224,199,224,219,224,225,225, \
+ 225,222,225,228,229,213,237,228,218,224,234,240,237,240,242,242, \
+ 243,240,242,242,235,228,231,228,237,230,231,236,236,237,336,336, \
+ 336,336,336,336,336,336,336,336,336,336,341,336,336,336,336,336, \
+ 336,336,341,336,336,336,336,342,336,336,342,336,336,336,336,342, \
+ 336,336,336,336,336,336,336,342,336,336,336,336,342,336,336,336, \
+ 336,336,336,336,336,336,336,342,336,336,336,336,342,336,336,342, \
+ 336,336,342,336,336,336,336,336,336,336,342,336,336,336,336,342, \
+ 336,342,342,336,342,342,336,342,336,342,336,336,342,336,336,342, \
+ 336,336,342,336,336,342,336,342,342,342,341,348,342,348,348,348, \
+ 342,342,354,348,354,354,348,336,354,354,354,336,342,360,360,354, \
+ 354,342,360,360,366,366,360,372,354,360,354,360,354,360,360,353, \
+ 336,336,342,360,366,342,360,336,336,342,342,336,336,336,341,341, \
+ 336,336,336,336,342,342,336,342,342,342,342,336,342,342,341,342, \
+ 348,342,342,360,354,348,348,342,354,348,360,348,354,354,353,354, \
+ 354,354,354,456,360,360,456,366,372,366,366,456,354,366,456,456, \
+ 456,378,456,456,455,456,456,456,378,366,390,384,378,378,360,378, \
+ 372,366,378,456,378,464,472,378,472,472,336,456,472,456,456,456, \
+ 472,472,456,456,472,464,456,456,456,342,426,456,426,455,472,456, \
+ 472,472,426,472,348,456,472,456,456,455,456,480,455,456,455,456, \
+ 456,455,456,456,454,456,456,456,456,455,456,456,454,455,456,456, \
+ 456,464,456,456,455,456,455,456,456,464,456,456,472,456,456,464, \
+ 472,472,456,456,455,456,456,456,455,472,479,456,472,472,488,464, \
+ 472,472,471,488,472,472,488,488,472,472,488,456,480,472,456,488, \
+ 472,472,479,463,488,426,456,426,426,426,426,425,455,455,425,456, \
+ 455,455,456,480,455,456,456,456,456,455,456,456,454,456,455,456, \
+ 456,455,456,456,455,455,455,456,456,454,456,456,455,456,456,456, \
+ 456,455,456,456,472,456,456,456,456,455,464,464,472,472,472,464, \
+ 472,472,456,455,472,472,471,456,472,480,456,480,480,480,456,488, \
+ 480,488,488,488,472,472,488,488,472,472,488,480,496,472,456,480, \
+ 496,472,488,456,480,456,456,456,456,488,456,456,488,456,456,456, \
+ 456,455,456,456,455,455,456,464,456,512,456,456,512,472,464,456, \
+ 472,512,456,480,464,480,472,471,472,472,471,479,470,480,471,471, \
+ 472,472,480,488,478,480,488,487,480,480,488,488,568,485,488,488, \
+ 512,488,488,471,568,512,512,512,512,496,511,511,512,512,520,511, \
+ 512,512,520,520,568,512,520,520,512,512,520,520,519,520,519,519, \
+ 520,568,520,536,536,536,536,528,536,528,535,535,534,512,535,512, \
+ 536,536,552,552,536,552,552,520,567,544,552,552,552,568,567,567, \
+ 568,568,567,567,568,568,535,584,568,512,568,567,512,568,567,568, \
+ 576,568,567,584,568,600,584,584,600,568,597,592,591,600,599,599 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,6,7,8,9,10,11,12,13, \
+ 10,10,11,11,13,12,13,13,14,14,15,15,18,17,19,19, \
+ 18,21,19,20,22,21,27,27,22,22,27,28,27,27,27,30, \
+ 27,27,27,27,31,31,30,30,31,31,31,35,34,33,35,35, \
+ 38,37,36,38,39,39,39,37,39,39,43,43,47,42,43,43, \
+ 45,47,54,43,54,54,45,54,54,54,54,55,54,54,55,54, \
+ 54,54,54,54,54,54,54,54,54,54,58,58,60,60,60,60, \
+ 60,60,68,62,60,60,65,68,68,68,68,68,67,68,76,68, \
+ 67,68,67,68,76,76,71,73,76,76,77,76,79,73,79,84, \
+ 76,76,78,76,76,84,84,84,84,83,84,84,92,92,83,84, \
+ 92,92,84,84,92,84,88,108,86,108,108,108,108,108,108,108, \
+ 108,92,108,108,92,108,108,108,120,120,108,108,120,120,120,120, \
+ 120,120,108,108,108,120,108,108,120,108,118,108,108,108,108,120, \
+ 120,120,108,108,120,120,118,120,120,120,120,120,120,120,120,120, \
+ 120,120,120,120,120,120,136,120,120,120,125,136,136,120,136,136, \
+ 136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, \
+ 136,136,136,136,152,136,135,136,152,152,136,136,152,152,152,152, \
+ 152,152,152,152,151,152,152,152,152,152,149,150,152,152,152,152, \
+ 152,152,151,152,152,168,167,168,152,152,167,152,152,152,165,157, \
+ 168,168,167,168,168,184,168,168,168,168,168,168,168,168,168,168, \
+ 168,167,168,168,184,168,168,168,184,184,184,184,184,184,184,184, \
+ 172,184,179,180,184,184,184,184,184,184,176,180,184,184,216,216, \
+ 184,184,184,216,184,184,216,184,184,216,184,216,216,184,216,216, \
+ 240,240,216,216,240,240,216,216,240,240,239,214,240,240,216,240, \
+ 240,240,238,240,240,240,216,240,240,239,240,216,240,240,216,238, \
+ 240,240,240,216,240,240,240,238,240,240,239,240,240,240,240,240, \
+ 240,239,240,240,240,240,240,240,240,240,239,238,240,240,240,240, \
+ 240,240,240,238,240,240,240,240,240,240,239,238,240,240,240,240, \
+ 240,240,238,238,240,240,240,240,240,239,239,240,240,240,240,240, \
+ 240,240,240,240,240,240,271,240,240,240,240,271,240,240,272,272, \
+ 272,272,272,272,272,272,272,272,270,271,272,272,272,272,272,272, \
+ 272,271,272,272,272,269,272,272,272,270,269,272,272,272,272,272, \
+ 272,272,272,269,272,272,272,272,304,267,271,272,272,272,272,272, \
+ 271,272,272,272,272,272,271,272,272,270,272,272,272,272,273,301, \
+ 304,304,300,301,304,303,304,304,304,303,303,304,304,304,303,301, \
+ 304,304,303,298,304,304,303,304,304,303,301,304,304,303,301,302, \
+ 304,303,304,304,304,304,301,304,304,304,301,302,304,304,301,304, \
+ 304,303,303,304,304,304,304,304,304,304,303,304,304,304,336,336, \
+ 336,335,336,334,336,336,336,336,336,336,336,336,336,336,336,336, \
+ 336,336,334,336,336,336,336,336,336,336,335,336,336,336,336,336, \
+ 336,336,336,336,336,328,336,336,336,336,335,336,336,336,336,336, \
+ 336,368,336,334,336,336,336,336,336,336,336,336,336,336,396,400, \
+ 398,384,368,400,384,399,399,400,368,368,368,400,368,368,368,400, \
+ 400,400,399,400,400,376,400,400,400,367,399,400,368,367,400,366, \
+ 367,368,400,366,368,368,365,368,368,368,400,399,400,400,368,399, \
+ 368,368,366,368,368,368,400,368,368,368,368,368,368,368,400,400, \
+ 396,400,397,374,400,399,400,400,400,400,397,398,400,401,400,400, \
+ 400,400,400,396,399,397,400,400,400,400,400,396,400,401,400,432, \
+ 400,398,399,400,396,396,432,432,400,432,400,396,400,397,399,400, \
+ 400,400,400,396,400,401,432,432,432,399,432,400,400,432,432,432, \
+ 432,432,432,432,432,433,432,432,432,432,432,480,480,432,432,432, \
+ 432,432,432,432,432,432,432,432,432,431,431,432,432,480,432,432, \
+ 480,480,432,478,480,432,432,480,432,432,432,432,480,432,432,432, \
+ 432,432,432,432,480,480,432,432,480,432,432,432,432,432,480,478, \
+ 480,447,477,480,480,480,480,480,480,479,440,444,480,445,448,480, \
+ 480,479,464,464,480,480,480,478,480,480,478,480,480,480,480,480, \
+ 480,479,480,479,480,480,478,480,480,480,478,478,480,480,480,480, \
+ 480,480,480,478,480,480,480,478,480,479,478,480,480,476,480,478, \
+ 480,480,478,478,480,480,480,480,480,479,479,478,480,480,480,480, \
+ 480,479,480,478,480,480,480,480,480,479,543,544,544,480,544,544, \
+ 542,543,544,544,544,540,544,544,544,544,544,542,544,544,544,544, \
+ 542,542,542,542,544,544,544,560,542,542,575,543,544,544,544,542, \
+ 544,575,575,544,544,544,544,544,561,561,543,559,544,560,560,560, \
+ 608,587,573,575,575,608,583,585,560,575,585,575,588,573,608,577 \
+
+#define MPFR_MUL_THRESHOLD 13 /* limbs */
+#define MPFR_SQR_THRESHOLD 11 /* limbs */
+#define MPFR_DIV_THRESHOLD 19 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 1092 /* bits */
+#define MPFR_EXP_THRESHOLD 11053 /* bits */
+#define MPFR_SINCOS_THRESHOLD 25857 /* bits */
+#define MPFR_AI_THRESHOLD1 -19352 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 1476
+#define MPFR_AI_THRESHOLD3 30069
+/* Tuneup completed successfully, took 8167 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sqr.c b/Build/source/libs/mpfr/mpfr-src/src/sqr.c
new file mode 100644
index 00000000000..ee55707955a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sqr.c
@@ -0,0 +1,112 @@
+/* mpfr_sqr -- Floating square
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_sqr (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode)
+{
+ int cc, inexact;
+ mpfr_exp_t ax;
+ mp_limb_t *tmp;
+ mp_limb_t b1;
+ mpfr_prec_t bq;
+ mp_size_t bn, tn;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (b), mpfr_log_prec, b, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (a), mpfr_log_prec, a, inexact));
+
+ /* deal with special cases */
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(b)))
+ {
+ if (MPFR_IS_NAN(b))
+ {
+ MPFR_SET_NAN(a);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_POS (a);
+ if (MPFR_IS_INF(b))
+ MPFR_SET_INF(a);
+ else
+ ( MPFR_ASSERTD(MPFR_IS_ZERO(b)), MPFR_SET_ZERO(a) );
+ MPFR_RET(0);
+ }
+ ax = 2 * MPFR_GET_EXP (b);
+ bq = MPFR_PREC(b);
+
+ MPFR_ASSERTN (2 * (mpfr_uprec_t) bq <= MPFR_PREC_MAX);
+
+ bn = MPFR_LIMB_SIZE (b); /* number of limbs of b */
+ tn = MPFR_PREC2LIMBS (2 * bq); /* number of limbs of square,
+ 2*bn or 2*bn-1 */
+
+ if (MPFR_UNLIKELY(bn > MPFR_SQR_THRESHOLD))
+ return mpfr_mul (a, b, b, rnd_mode);
+
+ MPFR_TMP_MARK(marker);
+ tmp = MPFR_TMP_LIMBS_ALLOC (2 * bn);
+
+ /* Multiplies the mantissa in temporary allocated space */
+ mpn_sqr_n (tmp, MPFR_MANT(b), bn);
+ b1 = tmp[2 * bn - 1];
+
+ /* now tmp[0]..tmp[2*bn-1] contains the product of both mantissa,
+ with tmp[2*bn-1]>=2^(GMP_NUMB_BITS-2) */
+ b1 >>= GMP_NUMB_BITS - 1; /* msb from the product */
+
+ /* if the mantissas of b and c are uniformly distributed in ]1/2, 1],
+ then their product is in ]1/4, 1/2] with probability 2*ln(2)-1 ~ 0.386
+ and in [1/2, 1] with probability 2-2*ln(2) ~ 0.614 */
+ tmp += 2 * bn - tn; /* +0 or +1 */
+ if (MPFR_UNLIKELY(b1 == 0))
+ mpn_lshift (tmp, tmp, tn, 1); /* tn <= k, so no stack corruption */
+
+ cc = mpfr_round_raw (MPFR_MANT (a), tmp, 2 * bq, 0,
+ MPFR_PREC (a), rnd_mode, &inexact);
+ /* cc = 1 ==> result is a power of two */
+ if (MPFR_UNLIKELY(cc))
+ MPFR_MANT(a)[MPFR_LIMB_SIZE(a)-1] = MPFR_LIMB_HIGHBIT;
+
+ MPFR_TMP_FREE(marker);
+ {
+ mpfr_exp_t ax2 = ax + (mpfr_exp_t) (b1 - 1 + cc);
+ if (MPFR_UNLIKELY( ax2 > __gmpfr_emax))
+ return mpfr_overflow (a, rnd_mode, MPFR_SIGN_POS);
+ if (MPFR_UNLIKELY( ax2 < __gmpfr_emin))
+ {
+ /* In the rounding to the nearest mode, if the exponent of the exact
+ result (i.e. before rounding, i.e. without taking cc into account)
+ is < __gmpfr_emin - 1 or the exact result is a power of 2 (i.e. if
+ both arguments are powers of 2), then round to zero. */
+ if (rnd_mode == MPFR_RNDN &&
+ (ax + (mpfr_exp_t) b1 < __gmpfr_emin || mpfr_powerof2_raw (b)))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (a, rnd_mode, MPFR_SIGN_POS);
+ }
+ MPFR_SET_EXP (a, ax2);
+ MPFR_SET_POS (a);
+ }
+ MPFR_RET (inexact);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sqrt.c b/Build/source/libs/mpfr/mpfr-src/src/sqrt.c
new file mode 100644
index 00000000000..1f5687be352
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sqrt.c
@@ -0,0 +1,231 @@
+/* mpfr_sqrt -- square root of a floating-point number
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_sqrt (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
+{
+ mp_size_t rsize; /* number of limbs of r (plus 1 if exact limb multiple) */
+ mp_size_t rrsize;
+ mp_size_t usize; /* number of limbs of u */
+ mp_size_t tsize; /* number of limbs of the sqrtrem remainder */
+ mp_size_t k;
+ mp_size_t l;
+ mpfr_limb_ptr rp, rp0;
+ mpfr_limb_ptr up;
+ mpfr_limb_ptr sp;
+ mp_limb_t sticky0; /* truncated part of input */
+ mp_limb_t sticky1; /* truncated part of rp[0] */
+ mp_limb_t sticky;
+ int odd_exp;
+ int sh; /* number of extra bits in rp[0] */
+ int inexact; /* return ternary flag */
+ mpfr_exp_t expr;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (u), mpfr_log_prec, u, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (r), mpfr_log_prec, r, inexact));
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(u)))
+ {
+ if (MPFR_IS_NAN(u))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_ZERO(u))
+ {
+ /* 0+ or 0- */
+ MPFR_SET_SAME_SIGN(r, u);
+ MPFR_SET_ZERO(r);
+ MPFR_RET(0); /* zero is exact */
+ }
+ else
+ {
+ MPFR_ASSERTD(MPFR_IS_INF(u));
+ /* sqrt(-Inf) = NAN */
+ if (MPFR_IS_NEG(u))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_POS(r);
+ MPFR_SET_INF(r);
+ MPFR_RET(0);
+ }
+ }
+ if (MPFR_UNLIKELY(MPFR_IS_NEG(u)))
+ {
+ MPFR_SET_NAN(r);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_POS(r);
+
+ MPFR_TMP_MARK (marker);
+ MPFR_UNSIGNED_MINUS_MODULO(sh,MPFR_PREC(r));
+ if (sh == 0 && rnd_mode == MPFR_RNDN)
+ sh = GMP_NUMB_BITS; /* ugly case */
+ rsize = MPFR_LIMB_SIZE(r) + (sh == GMP_NUMB_BITS);
+ /* rsize is the number of limbs of r + 1 if exact limb multiple and rounding
+ to nearest, this is the number of wanted limbs for the square root */
+ rrsize = rsize + rsize;
+ usize = MPFR_LIMB_SIZE(u); /* number of limbs of u */
+ rp0 = MPFR_MANT(r);
+ rp = (sh < GMP_NUMB_BITS) ? rp0 : MPFR_TMP_LIMBS_ALLOC (rsize);
+ up = MPFR_MANT(u);
+ sticky0 = MPFR_LIMB_ZERO; /* truncated part of input */
+ sticky1 = MPFR_LIMB_ZERO; /* truncated part of rp[0] */
+ odd_exp = (unsigned int) MPFR_GET_EXP (u) & 1;
+ inexact = -1; /* return ternary flag */
+
+ sp = MPFR_TMP_LIMBS_ALLOC (rrsize);
+
+ /* copy the most significant limbs of u to {sp, rrsize} */
+ if (MPFR_LIKELY(usize <= rrsize)) /* in case r and u have the same precision,
+ we have indeed rrsize = 2 * usize */
+ {
+ k = rrsize - usize;
+ if (MPFR_LIKELY(k))
+ MPN_ZERO (sp, k);
+ if (odd_exp)
+ {
+ if (MPFR_LIKELY(k))
+ sp[k - 1] = mpn_rshift (sp + k, up, usize, 1);
+ else
+ sticky0 = mpn_rshift (sp, up, usize, 1);
+ }
+ else
+ MPN_COPY (sp + rrsize - usize, up, usize);
+ }
+ else /* usize > rrsize: truncate the input */
+ {
+ k = usize - rrsize;
+ if (odd_exp)
+ sticky0 = mpn_rshift (sp, up + k, rrsize, 1);
+ else
+ MPN_COPY (sp, up + k, rrsize);
+ l = k;
+ while (sticky0 == MPFR_LIMB_ZERO && l != 0)
+ sticky0 = up[--l];
+ }
+
+ /* sticky0 is non-zero iff the truncated part of the input is non-zero */
+
+ /* mpn_rootrem with NULL 2nd argument is faster than mpn_sqrtrem, thus use
+ it if available and if the user asked to use GMP internal functions */
+#if defined(WANT_GMP_INTERNALS) && defined(HAVE___GMPN_ROOTREM)
+ tsize = __gmpn_rootrem (rp, NULL, sp, rrsize, 2);
+#else
+ tsize = mpn_sqrtrem (rp, NULL, sp, rrsize);
+#endif
+
+ /* a return value of zero in mpn_sqrtrem indicates a perfect square */
+ sticky = sticky0 || tsize != 0;
+
+ /* truncate low bits of rp[0] */
+ sticky1 = rp[0] & ((sh < GMP_NUMB_BITS) ? MPFR_LIMB_MASK(sh)
+ : ~MPFR_LIMB_ZERO);
+ rp[0] -= sticky1;
+
+ sticky = sticky || sticky1;
+
+ expr = (MPFR_GET_EXP(u) + odd_exp) / 2; /* exact */
+
+ if (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDD || sticky == MPFR_LIMB_ZERO)
+ {
+ inexact = (sticky == MPFR_LIMB_ZERO) ? 0 : -1;
+ goto truncate;
+ }
+ else if (rnd_mode == MPFR_RNDN)
+ {
+ /* if sh < GMP_NUMB_BITS, the round bit is bit (sh-1) of sticky1
+ and the sticky bit is formed by the low sh-1 bits from
+ sticky1, together with the sqrtrem remainder and sticky0. */
+ if (sh < GMP_NUMB_BITS)
+ {
+ if (sticky1 & (MPFR_LIMB_ONE << (sh - 1)))
+ { /* round bit is set */
+ if (sticky1 == (MPFR_LIMB_ONE << (sh - 1)) && tsize == 0
+ && sticky0 == 0)
+ goto even_rule;
+ else
+ goto add_one_ulp;
+ }
+ else /* round bit is zero */
+ goto truncate; /* with the default inexact=-1 */
+ }
+ else /* sh = GMP_NUMB_BITS: the round bit is the most significant bit
+ of rp[0], and the remaining GMP_NUMB_BITS-1 bits contribute to
+ the sticky bit */
+ {
+ if (sticky1 & MPFR_LIMB_HIGHBIT)
+ { /* round bit is set */
+ if (sticky1 == MPFR_LIMB_HIGHBIT && tsize == 0 && sticky0 == 0)
+ goto even_rule;
+ else
+ goto add_one_ulp;
+ }
+ else /* round bit is zero */
+ goto truncate; /* with the default inexact=-1 */
+ }
+ }
+ else /* rnd_mode=GMP_RDNU, necessarily sticky <> 0, thus add 1 ulp */
+ goto add_one_ulp;
+
+ even_rule: /* has to set inexact */
+ if (sh < GMP_NUMB_BITS)
+ inexact = (rp[0] & (MPFR_LIMB_ONE << sh)) ? 1 : -1;
+ else
+ inexact = (rp[1] & MPFR_LIMB_ONE) ? 1 : -1;
+ if (inexact == -1)
+ goto truncate;
+ /* else go through add_one_ulp */
+
+ add_one_ulp:
+ inexact = 1; /* always here */
+ if (sh == GMP_NUMB_BITS)
+ {
+ rp ++;
+ rsize --;
+ sh = 0;
+ }
+ if (mpn_add_1 (rp0, rp, rsize, MPFR_LIMB_ONE << sh))
+ {
+ expr ++;
+ rp[rsize - 1] = MPFR_LIMB_HIGHBIT;
+ }
+ goto end;
+
+ truncate: /* inexact = 0 or -1 */
+ if (sh == GMP_NUMB_BITS)
+ MPN_COPY (rp0, rp + 1, rsize - 1);
+
+ end:
+ MPFR_ASSERTN (expr >= MPFR_EMIN_MIN && expr <= MPFR_EMAX_MAX);
+ MPFR_EXP (r) = expr;
+ MPFR_TMP_FREE(marker);
+
+ return mpfr_check_range (r, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sqrt_ui.c b/Build/source/libs/mpfr/mpfr-src/src/sqrt_ui.c
new file mode 100644
index 00000000000..4cb6e9420ea
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sqrt_ui.c
@@ -0,0 +1,54 @@
+/* mpfr_sqrt_ui -- square root of a machine integer
+
+Copyright 2000-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_sqrt_ui (mpfr_ptr r, unsigned long u, mpfr_rnd_t rnd_mode)
+{
+ if (u)
+ {
+ mpfr_t uu;
+ mp_limb_t up[1];
+ unsigned long cnt;
+ int inex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_TMP_INIT1 (up, uu, GMP_NUMB_BITS);
+ MPFR_ASSERTN (u == (mp_limb_t) u);
+ count_leading_zeros (cnt, (mp_limb_t) u);
+ *up = (mp_limb_t) u << cnt;
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
+ inex = mpfr_sqrt(r, uu, rnd_mode);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range(r, inex, rnd_mode);
+ }
+ else /* sqrt(0) = 0 */
+ {
+ MPFR_SET_ZERO(r);
+ MPFR_SET_POS(r);
+ MPFR_RET(0);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/stack_interface.c b/Build/source/libs/mpfr/mpfr-src/src/stack_interface.c
new file mode 100644
index 00000000000..a8d4a93de29
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/stack_interface.c
@@ -0,0 +1,104 @@
+/* mpfr_stack -- initialize a floating-point number with given allocation area
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+#undef mpfr_custom_get_size
+size_t
+mpfr_custom_get_size (mpfr_prec_t prec)
+{
+ return MPFR_PREC2LIMBS (prec) * MPFR_BYTES_PER_MP_LIMB;
+}
+
+#undef mpfr_custom_init
+void
+mpfr_custom_init (void *mantissa, mpfr_prec_t prec)
+{
+ return ;
+}
+
+#undef mpfr_custom_get_significand
+void *
+mpfr_custom_get_significand (mpfr_srcptr x)
+{
+ return (void*) MPFR_MANT (x);
+}
+
+#undef mpfr_custom_get_exp
+mpfr_exp_t
+mpfr_custom_get_exp (mpfr_srcptr x)
+{
+ return MPFR_EXP (x);
+}
+
+#undef mpfr_custom_move
+void
+mpfr_custom_move (mpfr_ptr x, void *new_position)
+{
+ MPFR_MANT (x) = (mp_limb_t *) new_position;
+}
+
+#undef mpfr_custom_init_set
+void
+mpfr_custom_init_set (mpfr_ptr x, int kind, mpfr_exp_t exp,
+ mpfr_prec_t prec, void *mantissa)
+{
+ mpfr_kind_t t;
+ int s;
+ mpfr_exp_t e;
+
+ if (kind >= 0)
+ {
+ t = (mpfr_kind_t) kind;
+ s = MPFR_SIGN_POS;
+ }
+ else
+ {
+ t = (mpfr_kind_t) -kind;
+ s = MPFR_SIGN_NEG;
+ }
+ MPFR_ASSERTD (t <= MPFR_REGULAR_KIND);
+ e = MPFR_LIKELY (t == MPFR_REGULAR_KIND) ? exp :
+ MPFR_UNLIKELY (t == MPFR_NAN_KIND) ? MPFR_EXP_NAN :
+ MPFR_UNLIKELY (t == MPFR_INF_KIND) ? MPFR_EXP_INF : MPFR_EXP_ZERO;
+
+ MPFR_PREC (x) = prec;
+ MPFR_SET_SIGN (x, s);
+ MPFR_EXP (x) = e;
+ MPFR_MANT (x) = (mp_limb_t*) mantissa;
+ return;
+}
+
+#undef mpfr_custom_get_kind
+int
+mpfr_custom_get_kind (mpfr_srcptr x)
+{
+ if (MPFR_LIKELY (!MPFR_IS_SINGULAR (x)))
+ return (int) MPFR_REGULAR_KIND * MPFR_INT_SIGN (x);
+ if (MPFR_IS_INF (x))
+ return (int) MPFR_INF_KIND * MPFR_INT_SIGN (x);
+ if (MPFR_IS_NAN (x))
+ return (int) MPFR_NAN_KIND;
+ MPFR_ASSERTD (MPFR_IS_ZERO (x));
+ return (int) MPFR_ZERO_KIND * MPFR_INT_SIGN (x);
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/strtofr.c b/Build/source/libs/mpfr/mpfr-src/src/strtofr.c
new file mode 100644
index 00000000000..17d6b63745b
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/strtofr.c
@@ -0,0 +1,853 @@
+/* mpfr_strtofr -- set a floating-point number from a string
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdlib.h> /* For strtol */
+#include <ctype.h> /* For isspace */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+#define MPFR_MAX_BASE 62
+
+struct parsed_string {
+ int negative; /* non-zero iff the number is negative */
+ int base; /* base of the string */
+ unsigned char *mantissa; /* raw significand (without any point) */
+ unsigned char *mant; /* stripped significand (without starting and
+ ending zeroes). This points inside the area
+ allocated for the mantissa field. */
+ size_t prec; /* length of mant (zero for +/-0) */
+ size_t alloc; /* allocation size of mantissa */
+ mpfr_exp_t exp_base; /* number of digits before the point */
+ mpfr_exp_t exp_bin; /* exponent in case base=2 or 16, and the pxxx
+ format is used (i.e., exponent is given in
+ base 10) */
+};
+
+/* This table has been generated by the following program.
+ For 2 <= b <= MPFR_MAX_BASE,
+ RedInvLog2Table[b-2][0] / RedInvLog2Table[b-2][1]
+ is an upper approximation of log(2)/log(b).
+*/
+static const unsigned long RedInvLog2Table[MPFR_MAX_BASE-1][2] = {
+ {1UL, 1UL},
+ {53UL, 84UL},
+ {1UL, 2UL},
+ {4004UL, 9297UL},
+ {53UL, 137UL},
+ {2393UL, 6718UL},
+ {1UL, 3UL},
+ {665UL, 2108UL},
+ {4004UL, 13301UL},
+ {949UL, 3283UL},
+ {53UL, 190UL},
+ {5231UL, 19357UL},
+ {2393UL, 9111UL},
+ {247UL, 965UL},
+ {1UL, 4UL},
+ {4036UL, 16497UL},
+ {665UL, 2773UL},
+ {5187UL, 22034UL},
+ {4004UL, 17305UL},
+ {51UL, 224UL},
+ {949UL, 4232UL},
+ {3077UL, 13919UL},
+ {53UL, 243UL},
+ {73UL, 339UL},
+ {5231UL, 24588UL},
+ {665UL, 3162UL},
+ {2393UL, 11504UL},
+ {4943UL, 24013UL},
+ {247UL, 1212UL},
+ {3515UL, 17414UL},
+ {1UL, 5UL},
+ {4415UL, 22271UL},
+ {4036UL, 20533UL},
+ {263UL, 1349UL},
+ {665UL, 3438UL},
+ {1079UL, 5621UL},
+ {5187UL, 27221UL},
+ {2288UL, 12093UL},
+ {4004UL, 21309UL},
+ {179UL, 959UL},
+ {51UL, 275UL},
+ {495UL, 2686UL},
+ {949UL, 5181UL},
+ {3621UL, 19886UL},
+ {3077UL, 16996UL},
+ {229UL, 1272UL},
+ {53UL, 296UL},
+ {109UL, 612UL},
+ {73UL, 412UL},
+ {1505UL, 8537UL},
+ {5231UL, 29819UL},
+ {283UL, 1621UL},
+ {665UL, 3827UL},
+ {32UL, 185UL},
+ {2393UL, 13897UL},
+ {1879UL, 10960UL},
+ {4943UL, 28956UL},
+ {409UL, 2406UL},
+ {247UL, 1459UL},
+ {231UL, 1370UL},
+ {3515UL, 20929UL} };
+#if 0
+#define N 8
+int main ()
+{
+ unsigned long tab[N];
+ int i, n, base;
+ mpfr_t x, y;
+ mpq_t q1, q2;
+ int overflow = 0, base_overflow;
+
+ mpfr_init2 (x, 200);
+ mpfr_init2 (y, 200);
+ mpq_init (q1);
+ mpq_init (q2);
+
+ for (base = 2 ; base < 63 ; base ++)
+ {
+ mpfr_set_ui (x, base, MPFR_RNDN);
+ mpfr_log2 (x, x, MPFR_RNDN);
+ mpfr_ui_div (x, 1, x, MPFR_RNDN);
+ printf ("Base: %d x=%e ", base, mpfr_get_d1 (x));
+ for (i = 0 ; i < N ; i++)
+ {
+ mpfr_floor (y, x);
+ tab[i] = mpfr_get_ui (y, MPFR_RNDN);
+ mpfr_sub (x, x, y, MPFR_RNDN);
+ mpfr_ui_div (x, 1, x, MPFR_RNDN);
+ }
+ for (i = N-1 ; i >= 0 ; i--)
+ if (tab[i] != 0)
+ break;
+ mpq_set_ui (q1, tab[i], 1);
+ for (i = i-1 ; i >= 0 ; i--)
+ {
+ mpq_inv (q1, q1);
+ mpq_set_ui (q2, tab[i], 1);
+ mpq_add (q1, q1, q2);
+ }
+ printf("Approx: ", base);
+ mpq_out_str (stdout, 10, q1);
+ printf (" = %e\n", mpq_get_d (q1) );
+ fprintf (stderr, "{");
+ mpz_out_str (stderr, 10, mpq_numref (q1));
+ fprintf (stderr, "UL, ");
+ mpz_out_str (stderr, 10, mpq_denref (q1));
+ fprintf (stderr, "UL},\n");
+ if (mpz_cmp_ui (mpq_numref (q1), 1<<16-1) >= 0
+ || mpz_cmp_ui (mpq_denref (q1), 1<<16-1) >= 0)
+ overflow = 1, base_overflow = base;
+ }
+
+ mpq_clear (q2);
+ mpq_clear (q1);
+ mpfr_clear (y);
+ mpfr_clear (x);
+ if (overflow )
+ printf ("OVERFLOW for base =%d!\n", base_overflow);
+}
+#endif
+
+
+/* Compatible with any locale, but one still assumes that 'a', 'b', 'c',
+ ..., 'z', and 'A', 'B', 'C', ..., 'Z' are consecutive values (like
+ in any ASCII-based character set). */
+static int
+digit_value_in_base (int c, int base)
+{
+ int digit;
+
+ MPFR_ASSERTD (base > 0 && base <= MPFR_MAX_BASE);
+
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (c >= 'a' && c <= 'z')
+ digit = (base >= 37) ? c - 'a' + 36 : c - 'a' + 10;
+ else if (c >= 'A' && c <= 'Z')
+ digit = c - 'A' + 10;
+ else
+ return -1;
+
+ return MPFR_LIKELY (digit < base) ? digit : -1;
+}
+
+/* Compatible with any locale, but one still assumes that 'a', 'b', 'c',
+ ..., 'z', and 'A', 'B', 'C', ..., 'Z' are consecutive values (like
+ in any ASCII-based character set). */
+/* TODO: support EBCDIC. */
+static int
+fast_casecmp (const char *s1, const char *s2)
+{
+ unsigned char c1, c2;
+
+ do
+ {
+ c2 = *(const unsigned char *) s2++;
+ if (c2 == '\0')
+ return 0;
+ c1 = *(const unsigned char *) s1++;
+ if (c1 >= 'A' && c1 <= 'Z')
+ c1 = c1 - 'A' + 'a';
+ }
+ while (c1 == c2);
+ return 1;
+}
+
+/* Parse a string and fill pstr.
+ Return the advanced ptr too.
+ It returns:
+ -1 if invalid string,
+ 0 if special string (like nan),
+ 1 if the string is ok.
+ 2 if overflows
+ So it doesn't return the ternary value
+ BUT if it returns 0 (NAN or INF), the ternary value is also '0'
+ (ie NAN and INF are exact) */
+static int
+parse_string (mpfr_t x, struct parsed_string *pstr,
+ const char **string, int base)
+{
+ const char *str = *string;
+ unsigned char *mant;
+ int point;
+ int res = -1; /* Invalid input return value */
+ const char *prefix_str;
+ int decimal_point;
+
+ decimal_point = (unsigned char) MPFR_DECIMAL_POINT;
+
+ /* Init variable */
+ pstr->mantissa = NULL;
+
+ /* Optional leading whitespace */
+ while (isspace((unsigned char) *str)) str++;
+
+ /* An optional sign `+' or `-' */
+ pstr->negative = (*str == '-');
+ if (*str == '-' || *str == '+')
+ str++;
+
+ /* Can be case-insensitive NAN */
+ if (fast_casecmp (str, "@nan@") == 0)
+ {
+ str += 5;
+ goto set_nan;
+ }
+ if (base <= 16 && fast_casecmp (str, "nan") == 0)
+ {
+ str += 3;
+ set_nan:
+ /* Check for "(dummychars)" */
+ if (*str == '(')
+ {
+ const char *s;
+ for (s = str+1 ; *s != ')' ; s++)
+ if (!(*s >= 'A' && *s <= 'Z')
+ && !(*s >= 'a' && *s <= 'z')
+ && !(*s >= '0' && *s <= '9')
+ && *s != '_')
+ break;
+ if (*s == ')')
+ str = s+1;
+ }
+ *string = str;
+ MPFR_SET_NAN(x);
+ /* MPFR_RET_NAN not used as the return value isn't a ternary value */
+ __gmpfr_flags |= MPFR_FLAGS_NAN;
+ return 0;
+ }
+
+ /* Can be case-insensitive INF */
+ if (fast_casecmp (str, "@inf@") == 0)
+ {
+ str += 5;
+ goto set_inf;
+ }
+ if (base <= 16 && fast_casecmp (str, "infinity") == 0)
+ {
+ str += 8;
+ goto set_inf;
+ }
+ if (base <= 16 && fast_casecmp (str, "inf") == 0)
+ {
+ str += 3;
+ set_inf:
+ *string = str;
+ MPFR_SET_INF (x);
+ (pstr->negative) ? MPFR_SET_NEG (x) : MPFR_SET_POS (x);
+ return 0;
+ }
+
+ /* If base=0 or 16, it may include '0x' prefix */
+ prefix_str = NULL;
+ if ((base == 0 || base == 16) && str[0]=='0'
+ && (str[1]=='x' || str[1] == 'X'))
+ {
+ prefix_str = str;
+ base = 16;
+ str += 2;
+ }
+ /* If base=0 or 2, it may include '0b' prefix */
+ if ((base == 0 || base == 2) && str[0]=='0'
+ && (str[1]=='b' || str[1] == 'B'))
+ {
+ prefix_str = str;
+ base = 2;
+ str += 2;
+ }
+ /* Else if base=0, we assume decimal base */
+ if (base == 0)
+ base = 10;
+ pstr->base = base;
+
+ /* Alloc mantissa */
+ pstr->alloc = (size_t) strlen (str) + 1;
+ pstr->mantissa = (unsigned char*) (*__gmp_allocate_func) (pstr->alloc);
+
+ /* Read mantissa digits */
+ parse_begin:
+ mant = pstr->mantissa;
+ point = 0;
+ pstr->exp_base = 0;
+ pstr->exp_bin = 0;
+
+ for (;;) /* Loop until an invalid character is read */
+ {
+ int c = (unsigned char) *str++;
+ /* The cast to unsigned char is needed because of digit_value_in_base;
+ decimal_point uses this convention too. */
+ if (c == '.' || c == decimal_point)
+ {
+ if (MPFR_UNLIKELY(point)) /* Second '.': stop parsing */
+ break;
+ point = 1;
+ continue;
+ }
+ c = digit_value_in_base (c, base);
+ if (c == -1)
+ break;
+ MPFR_ASSERTN (c >= 0); /* c is representable in an unsigned char */
+ *mant++ = (unsigned char) c;
+ if (!point)
+ pstr->exp_base ++;
+ }
+ str--; /* The last read character was invalid */
+
+ /* Update the # of char in the mantissa */
+ pstr->prec = mant - pstr->mantissa;
+ /* Check if there are no characters in the mantissa (Invalid argument) */
+ if (pstr->prec == 0)
+ {
+ /* Check if there was a prefix (in such a case, we have to read
+ again the mantissa without skipping the prefix)
+ The allocated mantissa is still big enough since we will
+ read only 0, and we alloc one more char than needed.
+ FIXME: Not really friendly. Maybe cleaner code? */
+ if (prefix_str != NULL)
+ {
+ str = prefix_str;
+ prefix_str = NULL;
+ goto parse_begin;
+ }
+ goto end;
+ }
+
+ /* Valid entry */
+ res = 1;
+ MPFR_ASSERTD (pstr->exp_base >= 0);
+
+ /* an optional exponent (e or E, p or P, @) */
+ if ( (*str == '@' || (base <= 10 && (*str == 'e' || *str == 'E')))
+ && (!isspace((unsigned char) str[1])) )
+ {
+ char *endptr;
+ /* the exponent digits are kept in ASCII */
+ mpfr_exp_t sum;
+ long read_exp = strtol (str + 1, &endptr, 10);
+ if (endptr != str+1)
+ str = endptr;
+ sum =
+ read_exp < MPFR_EXP_MIN ? (str = endptr, MPFR_EXP_MIN) :
+ read_exp > MPFR_EXP_MAX ? (str = endptr, MPFR_EXP_MAX) :
+ (mpfr_exp_t) read_exp;
+ MPFR_SADD_OVERFLOW (sum, sum, pstr->exp_base,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ res = 2, res = 3);
+ /* Since exp_base was positive, read_exp + exp_base can't
+ do a negative overflow. */
+ MPFR_ASSERTD (res != 3);
+ pstr->exp_base = sum;
+ }
+ else if ((base == 2 || base == 16)
+ && (*str == 'p' || *str == 'P')
+ && (!isspace((unsigned char) str[1])))
+ {
+ char *endptr;
+ long read_exp = strtol (str + 1, &endptr, 10);
+ if (endptr != str+1)
+ str = endptr;
+ pstr->exp_bin =
+ read_exp < MPFR_EXP_MIN ? (str = endptr, MPFR_EXP_MIN) :
+ read_exp > MPFR_EXP_MAX ? (str = endptr, MPFR_EXP_MAX) :
+ (mpfr_exp_t) read_exp;
+ }
+
+ /* Remove 0's at the beginning and end of mantissa[0..prec-1] */
+ mant = pstr->mantissa;
+ for ( ; (pstr->prec > 0) && (*mant == 0) ; mant++, pstr->prec--)
+ pstr->exp_base--;
+ for ( ; (pstr->prec > 0) && (mant[pstr->prec - 1] == 0); pstr->prec--);
+ pstr->mant = mant;
+
+ /* Check if x = 0 */
+ if (pstr->prec == 0)
+ {
+ MPFR_SET_ZERO (x);
+ if (pstr->negative)
+ MPFR_SET_NEG(x);
+ else
+ MPFR_SET_POS(x);
+ res = 0;
+ }
+
+ *string = str;
+ end:
+ if (pstr->mantissa != NULL && res != 1)
+ (*__gmp_free_func) (pstr->mantissa, pstr->alloc);
+ return res;
+}
+
+/* Transform a parsed string to a mpfr_t according to the rounding mode
+ and the precision of x.
+ Returns the ternary value. */
+static int
+parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t prec;
+ mpfr_exp_t exp;
+ mpfr_exp_t ysize_bits;
+ mp_limb_t *y, *result;
+ int count, exact;
+ size_t pstr_size;
+ mp_size_t ysize, real_ysize;
+ int res, err;
+ MPFR_ZIV_DECL (loop);
+ MPFR_TMP_DECL (marker);
+
+ /* initialize the working precision */
+ prec = MPFR_PREC (x) + MPFR_INT_CEIL_LOG2 (MPFR_PREC (x));
+
+ /* compute the value y of the leading characters as long as rounding is not
+ possible */
+ MPFR_TMP_MARK(marker);
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ /* Set y to the value of the ~prec most significant bits of pstr->mant
+ (as long as we guarantee correct rounding, we don't need to get
+ exactly prec bits). */
+ ysize = MPFR_PREC2LIMBS (prec);
+ /* prec bits corresponds to ysize limbs */
+ ysize_bits = ysize * GMP_NUMB_BITS;
+ /* and to ysize_bits >= prec > MPFR_PREC (x) bits */
+ /* we need to allocate one more limb to work around bug
+ https://gmplib.org/list-archives/gmp-bugs/2013-December/003267.html */
+ y = MPFR_TMP_LIMBS_ALLOC (2 * ysize + 2);
+ y += ysize; /* y has (ysize+2) allocated limbs */
+
+ /* pstr_size is the number of characters we read in pstr->mant
+ to have at least ysize full limbs.
+ We must have base^(pstr_size-1) >= (2^(GMP_NUMB_BITS))^ysize
+ (in the worst case, the first digit is one and all others are zero).
+ i.e., pstr_size >= 1 + ysize*GMP_NUMB_BITS/log2(base)
+ Since ysize ~ prec/GMP_NUMB_BITS and prec < Umax/2 =>
+ ysize*GMP_NUMB_BITS can not overflow.
+ We compute pstr_size = 1 + ceil(ysize_bits * Num / Den)
+ where Num/Den >= 1/log2(base)
+ It is not exactly ceil(1/log2(base)) but could be one more (base 2)
+ Quite ugly since it tries to avoid overflow:
+ let Num = RedInvLog2Table[pstr->base-2][0]
+ and Den = RedInvLog2Table[pstr->base-2][1],
+ and ysize_bits = a*Den+b,
+ then ysize_bits * Num/Den = a*Num + (b * Num)/Den,
+ thus ceil(ysize_bits * Num/Den) = a*Num + floor(b * Num + Den - 1)/Den
+ */
+ {
+ unsigned long Num = RedInvLog2Table[pstr->base-2][0];
+ unsigned long Den = RedInvLog2Table[pstr->base-2][1];
+ pstr_size = ((ysize_bits / Den) * Num)
+ + (((ysize_bits % Den) * Num + Den - 1) / Den)
+ + 1;
+ }
+
+ /* since pstr_size corresponds to at least ysize_bits full bits,
+ and ysize_bits > prec, the weight of the neglected part of
+ pstr->mant (if any) is < ulp(y) < ulp(x) */
+
+ /* if the number of wanted characters is more than what we have in
+ pstr->mant, round it down */
+ if (pstr_size >= pstr->prec)
+ pstr_size = pstr->prec;
+ MPFR_ASSERTD (pstr_size == (mpfr_exp_t) pstr_size);
+
+ /* convert str into binary: note that pstr->mant is big endian,
+ thus no offset is needed */
+ real_ysize = mpn_set_str (y, pstr->mant, pstr_size, pstr->base);
+ MPFR_ASSERTD (real_ysize <= ysize+1);
+
+ /* normalize y: warning we can even get ysize+1 limbs! */
+ MPFR_ASSERTD (y[real_ysize - 1] != 0); /* mpn_set_str guarantees this */
+ count_leading_zeros (count, y[real_ysize - 1]);
+ /* exact means that the number of limbs of the output of mpn_set_str
+ is less or equal to ysize */
+ exact = real_ysize <= ysize;
+ if (exact) /* shift y to the left in that case y should be exact */
+ {
+ /* we have enough limbs to store {y, real_ysize} */
+ /* shift {y, num_limb} for count bits to the left */
+ if (count != 0)
+ mpn_lshift (y + ysize - real_ysize, y, real_ysize, count);
+ if (real_ysize != ysize)
+ {
+ if (count == 0)
+ MPN_COPY_DECR (y + ysize - real_ysize, y, real_ysize);
+ MPN_ZERO (y, ysize - real_ysize);
+ }
+ /* for each bit shift decrease exponent of y */
+ /* (This should not overflow) */
+ exp = - ((ysize - real_ysize) * GMP_NUMB_BITS + count);
+ }
+ else /* shift y to the right, by doing this we might lose some
+ bits from the result of mpn_set_str (in addition to the
+ characters neglected from pstr->mant) */
+ {
+ /* shift {y, num_limb} for (GMP_NUMB_BITS - count) bits
+ to the right. FIXME: can we prove that count cannot be zero here,
+ since mpn_rshift does not accept a shift of GMP_NUMB_BITS? */
+ MPFR_ASSERTD (count != 0);
+ exact = mpn_rshift (y, y, real_ysize, GMP_NUMB_BITS - count) ==
+ MPFR_LIMB_ZERO;
+ /* for each bit shift increase exponent of y */
+ exp = GMP_NUMB_BITS - count;
+ }
+
+ /* compute base^(exp_base - pstr_size) on n limbs */
+ if (IS_POW2 (pstr->base))
+ {
+ /* Base: 2, 4, 8, 16, 32 */
+ int pow2;
+ mpfr_exp_t tmp;
+
+ count_leading_zeros (pow2, (mp_limb_t) pstr->base);
+ pow2 = GMP_NUMB_BITS - pow2 - 1; /* base = 2^pow2 */
+ MPFR_ASSERTD (0 < pow2 && pow2 <= 5);
+ /* exp += pow2 * (pstr->exp_base - pstr_size) + pstr->exp_bin
+ with overflow checking
+ and check that we can add/subtract 2 to exp without overflow */
+ MPFR_SADD_OVERFLOW (tmp, pstr->exp_base, -(mpfr_exp_t) pstr_size,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto overflow, goto underflow);
+ /* On some FreeBsd/Alpha, LONG_MIN/1 produced an exception
+ so we used to check for this before doing the division.
+ Since this bug is closed now (Nov 26, 2009), we remove
+ that check (http://www.freebsd.org/cgi/query-pr.cgi?pr=72024) */
+ if (tmp > 0 && MPFR_EXP_MAX / pow2 <= tmp)
+ goto overflow;
+ else if (tmp < 0 && MPFR_EXP_MIN / pow2 >= tmp)
+ goto underflow;
+ tmp *= pow2;
+ MPFR_SADD_OVERFLOW (tmp, tmp, pstr->exp_bin,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto overflow, goto underflow);
+ MPFR_SADD_OVERFLOW (exp, exp, tmp,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN+2, MPFR_EXP_MAX-2,
+ goto overflow, goto underflow);
+ result = y;
+ err = 0;
+ }
+ /* case non-power-of-two-base, and pstr->exp_base > pstr_size */
+ else if (pstr->exp_base > (mpfr_exp_t) pstr_size)
+ {
+ mp_limb_t *z;
+ mpfr_exp_t exp_z;
+
+ result = MPFR_TMP_LIMBS_ALLOC (2 * ysize + 1);
+
+ /* z = base^(exp_base-sptr_size) using space allocated at y-ysize */
+ z = y - ysize;
+ /* NOTE: exp_base-pstr_size can't overflow since pstr_size > 0 */
+ err = mpfr_mpn_exp (z, &exp_z, pstr->base,
+ pstr->exp_base - pstr_size, ysize);
+ if (err == -2)
+ goto overflow;
+ exact = exact && (err == -1);
+
+ /* If exact is non zero, then z equals exactly the value of the
+ pstr_size most significant digits from pstr->mant, i.e., the
+ only difference can come from the neglected pstr->prec-pstr_size
+ least significant digits of pstr->mant.
+ If exact is zero, then z is rounded toward zero with respect
+ to that value. */
+
+ /* multiply(y = 0.mant[0]...mant[pr-1])_base by base^(exp-g):
+ since both y and z are rounded toward zero, so is "result" */
+ mpn_mul_n (result, y, z, ysize);
+
+ /* compute the error on the product */
+ if (err == -1)
+ err = 0;
+ err ++;
+
+ /* compute the exponent of y */
+ /* exp += exp_z + ysize_bits with overflow checking
+ and check that we can add/subtract 2 to exp without overflow */
+ MPFR_SADD_OVERFLOW (exp_z, exp_z, ysize_bits,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto overflow, goto underflow);
+ MPFR_SADD_OVERFLOW (exp, exp, exp_z,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN+2, MPFR_EXP_MAX-2,
+ goto overflow, goto underflow);
+
+ /* normalize result */
+ if (MPFR_LIMB_MSB (result[2 * ysize - 1]) == 0)
+ {
+ mp_limb_t *r = result + ysize - 1;
+ mpn_lshift (r, r, ysize + 1, 1);
+ /* Overflow checking not needed */
+ exp --;
+ }
+
+ /* if the low ysize limbs of {result, 2*ysize} are all zero,
+ then the result is still "exact" (if it was before) */
+ exact = exact && (mpn_scan1 (result, 0)
+ >= (unsigned long) ysize_bits);
+ result += ysize;
+ }
+ /* case exp_base < pstr_size */
+ else if (pstr->exp_base < (mpfr_exp_t) pstr_size)
+ {
+ mp_limb_t *z;
+ mpfr_exp_t exp_z;
+
+ result = MPFR_TMP_LIMBS_ALLOC (3 * ysize + 1);
+
+ /* set y to y * K^ysize */
+ y = y - ysize; /* we have allocated ysize limbs at y - ysize */
+ MPN_ZERO (y, ysize);
+
+ /* pstr_size - pstr->exp_base can overflow */
+ MPFR_SADD_OVERFLOW (exp_z, (mpfr_exp_t) pstr_size, -pstr->exp_base,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto underflow, goto overflow);
+
+ /* (z, exp_z) = base^(exp_base-pstr_size) */
+ z = result + 2*ysize + 1;
+ err = mpfr_mpn_exp (z, &exp_z, pstr->base, exp_z, ysize);
+ /* Since we want y/z rounded toward zero, we must get an upper
+ bound of z. If err >= 0, the error on z is bounded by 2^err. */
+ if (err >= 0)
+ {
+ mp_limb_t cy;
+ unsigned long h = err / GMP_NUMB_BITS;
+ unsigned long l = err - h * GMP_NUMB_BITS;
+
+ if (h >= ysize) /* not enough precision in z */
+ goto next_loop;
+ cy = mpn_add_1 (z, z, ysize - h, MPFR_LIMB_ONE << l);
+ if (cy != 0) /* the code below requires z on ysize limbs */
+ goto next_loop;
+ }
+ exact = exact && (err == -1);
+ if (err == -2)
+ goto underflow; /* FIXME: Sure? */
+ if (err == -1)
+ err = 0;
+
+ /* compute y / z */
+ /* result will be put into result + n, and remainder into result */
+ mpn_tdiv_qr (result + ysize, result, (mp_size_t) 0, y,
+ 2 * ysize, z, ysize);
+
+ /* exp -= exp_z + ysize_bits with overflow checking
+ and check that we can add/subtract 2 to exp without overflow */
+ MPFR_SADD_OVERFLOW (exp_z, exp_z, ysize_bits,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto underflow, goto overflow);
+ MPFR_SADD_OVERFLOW (exp, exp, -exp_z,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN+2, MPFR_EXP_MAX-2,
+ goto overflow, goto underflow);
+ err += 2;
+ /* if the remainder of the division is zero, then the result is
+ still "exact" if it was before */
+ exact = exact && (mpn_popcount (result, ysize) == 0);
+
+ /* normalize result */
+ if (result[2 * ysize] == MPFR_LIMB_ONE)
+ {
+ mp_limb_t *r = result + ysize;
+
+ exact = exact && ((*r & MPFR_LIMB_ONE) == 0);
+ mpn_rshift (r, r, ysize + 1, 1);
+ /* Overflow Checking not needed */
+ exp ++;
+ }
+ result += ysize;
+ }
+ /* case exp_base = pstr_size: no multiplication or division needed */
+ else
+ {
+ /* base^(exp-pr) = 1 nothing to compute */
+ result = y;
+ err = 0;
+ }
+
+ /* If result is exact, we still have to consider the neglected part
+ of the input string. For a directed rounding, in that case we could
+ still correctly round, since the neglected part is less than
+ one ulp, but that would make the code more complex, and give a
+ speedup for rare cases only. */
+ exact = exact && (pstr_size == pstr->prec);
+
+ /* at this point, result is an approximation rounded toward zero
+ of the pstr_size most significant digits of pstr->mant, with
+ equality in case exact is non-zero. */
+
+ /* test if rounding is possible, and if so exit the loop */
+ if (exact || mpfr_can_round_raw (result, ysize,
+ (pstr->negative) ? -1 : 1,
+ ysize_bits - err - 1,
+ MPFR_RNDN, rnd, MPFR_PREC(x)))
+ break;
+
+ next_loop:
+ /* update the prec for next loop */
+ MPFR_ZIV_NEXT (loop, prec);
+ } /* loop */
+ MPFR_ZIV_FREE (loop);
+
+ /* round y */
+ if (mpfr_round_raw (MPFR_MANT (x), result,
+ ysize_bits,
+ pstr->negative, MPFR_PREC(x), rnd, &res ))
+ {
+ /* overflow when rounding y */
+ MPFR_MANT (x)[MPFR_LIMB_SIZE (x) - 1] = MPFR_LIMB_HIGHBIT;
+ /* Overflow Checking not needed */
+ exp ++;
+ }
+
+ if (res == 0) /* fix ternary value */
+ {
+ exact = exact && (pstr_size == pstr->prec);
+ if (!exact)
+ res = (pstr->negative) ? 1 : -1;
+ }
+
+ /* Set sign of x before exp since check_range needs a valid sign */
+ (pstr->negative) ? MPFR_SET_NEG (x) : MPFR_SET_POS (x);
+
+ /* DO NOT USE MPFR_SET_EXP. The exp may be out of range! */
+ MPFR_SADD_OVERFLOW (exp, exp, ysize_bits,
+ mpfr_exp_t, mpfr_uexp_t,
+ MPFR_EXP_MIN, MPFR_EXP_MAX,
+ goto overflow, goto underflow);
+ MPFR_EXP (x) = exp;
+ res = mpfr_check_range (x, res, rnd);
+ goto end;
+
+ underflow:
+ /* This is called when there is a huge overflow
+ (Real expo < MPFR_EXP_MIN << __gmpfr_emin */
+ if (rnd == MPFR_RNDN)
+ rnd = MPFR_RNDZ;
+ res = mpfr_underflow (x, rnd, (pstr->negative) ? -1 : 1);
+ goto end;
+
+ overflow:
+ res = mpfr_overflow (x, rnd, (pstr->negative) ? -1 : 1);
+
+ end:
+ MPFR_TMP_FREE (marker);
+ return res;
+}
+
+static void
+free_parsed_string (struct parsed_string *pstr)
+{
+ (*__gmp_free_func) (pstr->mantissa, pstr->alloc);
+}
+
+int
+mpfr_strtofr (mpfr_t x, const char *string, char **end, int base,
+ mpfr_rnd_t rnd)
+{
+ int res;
+ struct parsed_string pstr;
+
+ /* For base <= 36, parsing is case-insensitive. */
+ MPFR_ASSERTN (base == 0 || (base >= 2 && base <= 62));
+
+ /* If an error occured, it must return 0 */
+ MPFR_SET_ZERO (x);
+ MPFR_SET_POS (x);
+
+ MPFR_ASSERTN (MPFR_MAX_BASE >= 62);
+ res = parse_string (x, &pstr, &string, base);
+ /* If res == 0, then it was exact (NAN or INF),
+ so it is also the ternary value */
+ if (MPFR_UNLIKELY (res == -1)) /* invalid data */
+ res = 0; /* x is set to 0, which is exact, thus ternary value is 0 */
+ else if (res == 1)
+ {
+ res = parsed_string_to_mpfr (x, &pstr, rnd);
+ free_parsed_string (&pstr);
+ }
+ else if (res == 2)
+ res = mpfr_overflow (x, rnd, (pstr.negative) ? -1 : 1);
+ MPFR_ASSERTD (res != 3);
+#if 0
+ else if (res == 3)
+ {
+ /* This is called when there is a huge overflow
+ (Real expo < MPFR_EXP_MIN << __gmpfr_emin */
+ if (rnd == MPFR_RNDN)
+ rnd = MPFR_RNDZ;
+ res = mpfr_underflow (x, rnd, (pstr.negative) ? -1 : 1);
+ }
+#endif
+
+ if (end != NULL)
+ *end = (char *) string;
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sub.c b/Build/source/libs/mpfr/mpfr-src/src/sub.c
new file mode 100644
index 00000000000..9b44123c601
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sub.c
@@ -0,0 +1,116 @@
+/* mpfr_sub -- subtract two floating-point numbers
+
+Copyright 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_sub (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ MPFR_LOG_FUNC
+ (("b[%Pu]=%.*Rg c[%Pu]=%.*Rg rnd=%d",
+ mpfr_get_prec (b), mpfr_log_prec, b,
+ mpfr_get_prec (c), mpfr_log_prec, c, rnd_mode),
+ ("a[%Pu]=%.*Rg", mpfr_get_prec (a), mpfr_log_prec, a));
+
+ if (MPFR_ARE_SINGULAR (b,c))
+ {
+ if (MPFR_IS_NAN (b) || MPFR_IS_NAN (c))
+ {
+ MPFR_SET_NAN (a);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (b))
+ {
+ if (!MPFR_IS_INF (c) || MPFR_SIGN (b) != MPFR_SIGN(c))
+ {
+ MPFR_SET_INF (a);
+ MPFR_SET_SAME_SIGN (a, b);
+ MPFR_RET (0); /* exact */
+ }
+ else
+ {
+ MPFR_SET_NAN (a); /* Inf - Inf */
+ MPFR_RET_NAN;
+ }
+ }
+ else if (MPFR_IS_INF (c))
+ {
+ MPFR_SET_INF (a);
+ MPFR_SET_OPPOSITE_SIGN (a, c);
+ MPFR_RET (0); /* exact */
+ }
+ else if (MPFR_IS_ZERO (b))
+ {
+ if (MPFR_IS_ZERO (c))
+ {
+ int sign = rnd_mode != MPFR_RNDD
+ ? ((MPFR_IS_NEG(b) && MPFR_IS_POS(c)) ? -1 : 1)
+ : ((MPFR_IS_POS(b) && MPFR_IS_NEG(c)) ? 1 : -1);
+ MPFR_SET_SIGN (a, sign);
+ MPFR_SET_ZERO (a);
+ MPFR_RET(0); /* 0 - 0 is exact */
+ }
+ else
+ return mpfr_neg (a, c, rnd_mode);
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (c));
+ return mpfr_set (a, b, rnd_mode);
+ }
+ }
+
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (b));
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (c));
+
+ if (MPFR_LIKELY (MPFR_SIGN (b) == MPFR_SIGN (c)))
+ { /* signs are equal, it's a real subtraction */
+ if (MPFR_LIKELY (MPFR_PREC (a) == MPFR_PREC (b)
+ && MPFR_PREC (b) == MPFR_PREC (c)))
+ return mpfr_sub1sp (a, b, c, rnd_mode);
+ else
+ return mpfr_sub1 (a, b, c, rnd_mode);
+ }
+ else
+ { /* signs differ, it's an addition */
+ if (MPFR_GET_EXP (b) < MPFR_GET_EXP (c))
+ { /* exchange rounding modes toward +/- infinity */
+ int inexact;
+ rnd_mode = MPFR_INVERT_RND (rnd_mode);
+ if (MPFR_LIKELY (MPFR_PREC (a) == MPFR_PREC (b)
+ && MPFR_PREC (b) == MPFR_PREC (c)))
+ inexact = mpfr_add1sp (a, c, b, rnd_mode);
+ else
+ inexact = mpfr_add1 (a, c, b, rnd_mode);
+ MPFR_CHANGE_SIGN (a);
+ return -inexact;
+ }
+ else
+ {
+ if (MPFR_LIKELY (MPFR_PREC (a) == MPFR_PREC (b)
+ && MPFR_PREC (b) == MPFR_PREC (c)))
+ return mpfr_add1sp (a, b, c, rnd_mode);
+ else
+ return mpfr_add1 (a, b, c, rnd_mode);
+ }
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sub1.c b/Build/source/libs/mpfr/mpfr-src/src/sub1.c
new file mode 100644
index 00000000000..2586fd6ff3c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sub1.c
@@ -0,0 +1,657 @@
+/* mpfr_sub1 -- internal function to perform a "real" subtraction
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* compute sign(b) * (|b| - |c|), with |b| > |c|, diff_exp = EXP(b) - EXP(c)
+ Returns 0 iff result is exact,
+ a negative value when the result is less than the exact value,
+ a positive value otherwise.
+*/
+
+int
+mpfr_sub1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ int sign;
+ mpfr_uexp_t diff_exp;
+ mpfr_prec_t cancel, cancel1;
+ mp_size_t cancel2, an, bn, cn, cn0;
+ mp_limb_t *ap, *bp, *cp;
+ mp_limb_t carry, bb, cc;
+ int inexact, shift_b, shift_c, add_exp = 0;
+ int cmp_low = 0; /* used for rounding to nearest: 0 if low(b) = low(c),
+ negative if low(b) < low(c), positive if low(b)>low(c) */
+ int sh, k;
+ MPFR_TMP_DECL(marker);
+
+ MPFR_TMP_MARK(marker);
+ ap = MPFR_MANT(a);
+ an = MPFR_LIMB_SIZE(a);
+
+ sign = mpfr_cmp2 (b, c, &cancel);
+ if (MPFR_UNLIKELY(sign == 0))
+ {
+ if (rnd_mode == MPFR_RNDD)
+ MPFR_SET_NEG (a);
+ else
+ MPFR_SET_POS (a);
+ MPFR_SET_ZERO (a);
+ MPFR_RET (0);
+ }
+
+ /*
+ * If subtraction: sign(a) = sign * sign(b)
+ * If addition: sign(a) = sign of the larger argument in absolute value.
+ *
+ * Both cases can be simplidied in:
+ * if (sign>0)
+ * if addition: sign(a) = sign * sign(b) = sign(b)
+ * if subtraction, b is greater, so sign(a) = sign(b)
+ * else
+ * if subtraction, sign(a) = - sign(b)
+ * if addition, sign(a) = sign(c) (since c is greater)
+ * But if it is an addition, sign(b) and sign(c) are opposed!
+ * So sign(a) = - sign(b)
+ */
+
+ if (sign < 0) /* swap b and c so that |b| > |c| */
+ {
+ mpfr_srcptr t;
+ MPFR_SET_OPPOSITE_SIGN (a,b);
+ t = b; b = c; c = t;
+ }
+ else
+ MPFR_SET_SAME_SIGN (a,b);
+
+ /* Check if c is too small.
+ A more precise test is to replace 2 by
+ (rnd == MPFR_RNDN) + mpfr_power2_raw (b)
+ but it is more expensive and not very useful */
+ if (MPFR_UNLIKELY (MPFR_GET_EXP (c) <= MPFR_GET_EXP (b)
+ - (mpfr_exp_t) MAX (MPFR_PREC (a), MPFR_PREC (b)) - 2))
+ {
+ /* Remember, we can't have an exact result! */
+ /* A.AAAAAAAAAAAAAAAAA
+ = B.BBBBBBBBBBBBBBB
+ - C.CCCCCCCCCCCCC */
+ /* A = S*ABS(B) +/- ulp(a) */
+ MPFR_SET_EXP (a, MPFR_GET_EXP (b));
+ MPFR_RNDRAW_EVEN (inexact, a, MPFR_MANT (b), MPFR_PREC (b),
+ rnd_mode, MPFR_SIGN (a),
+ if (MPFR_UNLIKELY ( ++MPFR_EXP (a) > __gmpfr_emax))
+ inexact = mpfr_overflow (a, rnd_mode, MPFR_SIGN (a)));
+ /* inexact = mpfr_set4 (a, b, rnd_mode, MPFR_SIGN (a)); */
+ if (inexact == 0)
+ {
+ /* a = b (Exact)
+ But we know it isn't (Since we have to remove `c')
+ So if we round to Zero, we have to remove one ulp.
+ Otherwise the result is correctly rounded. */
+ if (MPFR_IS_LIKE_RNDZ (rnd_mode, MPFR_IS_NEG (a)))
+ {
+ mpfr_nexttozero (a);
+ MPFR_RET (- MPFR_INT_SIGN (a));
+ }
+ MPFR_RET (MPFR_INT_SIGN (a));
+ }
+ else
+ {
+ /* A.AAAAAAAAAAAAAA
+ = B.BBBBBBBBBBBBBBB
+ - C.CCCCCCCCCCCCC */
+ /* It isn't exact so Prec(b) > Prec(a) and the last
+ Prec(b)-Prec(a) bits of `b' are not zeros.
+ Which means that removing c from b can't generate a carry
+ execpt in case of even rounding.
+ In all other case the result and the inexact flag should be
+ correct (We can't have an exact result).
+ In case of EVEN rounding:
+ 1.BBBBBBBBBBBBBx10
+ - 1.CCCCCCCCCCCC
+ = 1.BBBBBBBBBBBBBx01 Rounded to Prec(b)
+ = 1.BBBBBBBBBBBBBx Nearest / Rounded to Prec(a)
+ Set gives:
+ 1.BBBBBBBBBBBBB0 if inexact == EVEN_INEX (x == 0)
+ 1.BBBBBBBBBBBBB1+1 if inexact == -EVEN_INEX (x == 1)
+ which means we get a wrong rounded result if x==1,
+ i.e. inexact= MPFR_EVEN_INEX */
+ if (MPFR_UNLIKELY (inexact == MPFR_EVEN_INEX*MPFR_INT_SIGN (a)))
+ {
+ mpfr_nexttozero (a);
+ inexact = -MPFR_INT_SIGN (a);
+ }
+ MPFR_RET (inexact);
+ }
+ }
+
+ diff_exp = (mpfr_uexp_t) MPFR_GET_EXP (b) - MPFR_GET_EXP (c);
+
+ /* reserve a space to store b aligned with the result, i.e. shifted by
+ (-cancel) % GMP_NUMB_BITS to the right */
+ bn = MPFR_LIMB_SIZE (b);
+ MPFR_UNSIGNED_MINUS_MODULO (shift_b, cancel);
+ cancel1 = (cancel + shift_b) / GMP_NUMB_BITS;
+
+ /* the high cancel1 limbs from b should not be taken into account */
+ if (MPFR_UNLIKELY (shift_b == 0))
+ {
+ bp = MPFR_MANT(b); /* no need of an extra space */
+ /* Ensure ap != bp */
+ if (MPFR_UNLIKELY (ap == bp))
+ {
+ bp = MPFR_TMP_LIMBS_ALLOC (bn);
+ MPN_COPY (bp, ap, bn);
+ }
+ }
+ else
+ {
+ bp = MPFR_TMP_LIMBS_ALLOC (bn + 1);
+ bp[0] = mpn_rshift (bp + 1, MPFR_MANT(b), bn++, shift_b);
+ }
+
+ /* reserve a space to store c aligned with the result, i.e. shifted by
+ (diff_exp-cancel) % GMP_NUMB_BITS to the right */
+ cn = MPFR_LIMB_SIZE(c);
+ if ((UINT_MAX % GMP_NUMB_BITS) == (GMP_NUMB_BITS-1)
+ && ((-(unsigned) 1)%GMP_NUMB_BITS > 0))
+ shift_c = ((mpfr_uexp_t) diff_exp - cancel) % GMP_NUMB_BITS;
+ else
+ {
+ shift_c = diff_exp - (cancel % GMP_NUMB_BITS);
+ shift_c = (shift_c + GMP_NUMB_BITS) % GMP_NUMB_BITS;
+ }
+ MPFR_ASSERTD( shift_c >= 0 && shift_c < GMP_NUMB_BITS);
+
+ if (MPFR_UNLIKELY(shift_c == 0))
+ {
+ cp = MPFR_MANT(c);
+ /* Ensure ap != cp */
+ if (ap == cp)
+ {
+ cp = MPFR_TMP_LIMBS_ALLOC (cn);
+ MPN_COPY(cp, ap, cn);
+ }
+ }
+ else
+ {
+ cp = MPFR_TMP_LIMBS_ALLOC (cn + 1);
+ cp[0] = mpn_rshift (cp + 1, MPFR_MANT(c), cn++, shift_c);
+ }
+
+#ifdef DEBUG
+ printf ("rnd=%s shift_b=%d shift_c=%d diffexp=%lu\n",
+ mpfr_print_rnd_mode (rnd_mode), shift_b, shift_c,
+ (unsigned long) diff_exp);
+#endif
+
+ MPFR_ASSERTD (ap != cp);
+ MPFR_ASSERTD (bp != cp);
+
+ /* here we have shift_c = (diff_exp - cancel) % GMP_NUMB_BITS,
+ 0 <= shift_c < GMP_NUMB_BITS
+ thus we want cancel2 = ceil((cancel - diff_exp) / GMP_NUMB_BITS) */
+
+ /* Possible optimization with a C99 compiler (i.e. well-defined
+ integer division): if MPFR_PREC_MAX is reduced to
+ ((mpfr_prec_t)((mpfr_uprec_t)(~(mpfr_uprec_t)0)>>1) - GMP_NUMB_BITS + 1)
+ and diff_exp is of type mpfr_exp_t (no need for mpfr_uexp_t, since
+ the sum or difference of 2 exponents must be representable, as used
+ by the multiplication code), then the computation of cancel2 could
+ be simplified to
+ cancel2 = (cancel - (diff_exp - shift_c)) / GMP_NUMB_BITS;
+ because cancel, diff_exp and shift_c are all non-negative and
+ these variables are signed. */
+
+ MPFR_ASSERTD (cancel >= 0);
+ if (cancel >= diff_exp)
+ /* Note that cancel is signed and will be converted to mpfr_uexp_t
+ (type of diff_exp) in the expression below, so that this will
+ work even if cancel is very large and diff_exp = 0. */
+ cancel2 = (cancel - diff_exp + (GMP_NUMB_BITS - 1)) / GMP_NUMB_BITS;
+ else
+ cancel2 = - (mp_size_t) ((diff_exp - cancel) / GMP_NUMB_BITS);
+ /* the high cancel2 limbs from b should not be taken into account */
+#ifdef DEBUG
+ printf ("cancel=%lu cancel1=%lu cancel2=%ld\n",
+ (unsigned long) cancel, (unsigned long) cancel1, (long) cancel2);
+#endif
+
+ /* ap[an-1] ap[0]
+ <----------------+-----------|---->
+ <----------PREC(a)----------><-sh->
+ cancel1
+ limbs bp[bn-cancel1-1]
+ <--...-----><----------------+-----------+----------->
+ cancel2
+ limbs cp[cn-cancel2-1] cancel2 >= 0
+ <--...--><----------------+----------------+---------------->
+ (-cancel2) cancel2 < 0
+ limbs <----------------+---------------->
+ */
+
+ /* first part: put in ap[0..an-1] the value of high(b) - high(c),
+ where high(b) consists of the high an+cancel1 limbs of b,
+ and high(c) consists of the high an+cancel2 limbs of c.
+ */
+
+ /* copy high(b) into a */
+ if (MPFR_LIKELY(an + (mp_size_t) cancel1 <= bn))
+ /* a: <----------------+-----------|---->
+ b: <-----------------------------------------> */
+ MPN_COPY (ap, bp + bn - (an + cancel1), an);
+ else
+ /* a: <----------------+-----------|---->
+ b: <-------------------------> */
+ if ((mp_size_t) cancel1 < bn) /* otherwise b does not overlap with a */
+ {
+ MPN_ZERO (ap, an + cancel1 - bn);
+ MPN_COPY (ap + (an + cancel1 - bn), bp, bn - cancel1);
+ }
+ else
+ MPN_ZERO (ap, an);
+
+#ifdef DEBUG
+ printf("after copying high(b), a="); mpfr_print_binary(a); putchar('\n');
+#endif
+
+ /* subtract high(c) */
+ if (MPFR_LIKELY(an + cancel2 > 0)) /* otherwise c does not overlap with a */
+ {
+ mp_limb_t *ap2;
+
+ if (cancel2 >= 0)
+ {
+ if (an + cancel2 <= cn)
+ /* a: <----------------------------->
+ c: <-----------------------------------------> */
+ mpn_sub_n (ap, ap, cp + cn - (an + cancel2), an);
+ else
+ /* a: <---------------------------->
+ c: <-------------------------> */
+ {
+ ap2 = ap + an + (cancel2 - cn);
+ if (cn > cancel2)
+ mpn_sub_n (ap2, ap2, cp, cn - cancel2);
+ }
+ }
+ else /* cancel2 < 0 */
+ {
+ mp_limb_t borrow;
+
+ if (an + cancel2 <= cn)
+ /* a: <----------------------------->
+ c: <-----------------------------> */
+ borrow = mpn_sub_n (ap, ap, cp + cn - (an + cancel2),
+ an + cancel2);
+ else
+ /* a: <---------------------------->
+ c: <----------------> */
+ {
+ ap2 = ap + an + cancel2 - cn;
+ borrow = mpn_sub_n (ap2, ap2, cp, cn);
+ }
+ ap2 = ap + an + cancel2;
+ mpn_sub_1 (ap2, ap2, -cancel2, borrow);
+ }
+ }
+
+#ifdef DEBUG
+ printf("after subtracting high(c), a=");
+ mpfr_print_binary(a);
+ putchar('\n');
+#endif
+
+ /* now perform rounding */
+ sh = (mpfr_prec_t) an * GMP_NUMB_BITS - MPFR_PREC(a);
+ /* last unused bits from a */
+ carry = ap[0] & MPFR_LIMB_MASK (sh);
+ ap[0] -= carry;
+
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ if (MPFR_LIKELY(sh))
+ {
+ /* can decide except when carry = 2^(sh-1) [middle]
+ or carry = 0 [truncate, but cannot decide inexact flag] */
+ if (carry > (MPFR_LIMB_ONE << (sh - 1)))
+ goto add_one_ulp;
+ else if ((0 < carry) && (carry < (MPFR_LIMB_ONE << (sh - 1))))
+ {
+ inexact = -1; /* result if smaller than exact value */
+ goto truncate;
+ }
+ /* now carry = 2^(sh-1), in which case cmp_low=2,
+ or carry = 0, in which case cmp_low=0 */
+ cmp_low = (carry == 0) ? 0 : 2;
+ }
+ }
+ else /* directed rounding: set rnd_mode to RNDZ iff toward zero */
+ {
+ if (MPFR_IS_RNDUTEST_OR_RNDDNOTTEST(rnd_mode, MPFR_IS_NEG(a)))
+ rnd_mode = MPFR_RNDZ;
+
+ if (carry)
+ {
+ if (rnd_mode == MPFR_RNDZ)
+ {
+ inexact = -1;
+ goto truncate;
+ }
+ else /* round away */
+ goto add_one_ulp;
+ }
+ }
+
+ /* we have to consider the low (bn - (an+cancel1)) limbs from b,
+ and the (cn - (an+cancel2)) limbs from c. */
+ bn -= an + cancel1;
+ cn0 = cn;
+ cn -= an + cancel2;
+
+#ifdef DEBUG
+ printf ("last sh=%d bits from a are %lu, bn=%ld, cn=%ld\n",
+ sh, (unsigned long) carry, (long) bn, (long) cn);
+#endif
+
+ /* for rounding to nearest, we couldn't conclude up to here in the following
+ cases:
+ 1. sh = 0, then cmp_low=0: we can either truncate, subtract one ulp
+ or add one ulp: -1 ulp < low(b)-low(c) < 1 ulp
+ 2. sh > 0 but the low sh bits from high(b)-high(c) equal 2^(sh-1):
+ -0.5 ulp <= -1/2^sh < low(b)-low(c)-0.5 < 1/2^sh <= 0.5 ulp
+ we can't decide the rounding, in that case cmp_low=2:
+ either we truncate and flag=-1, or we add one ulp and flag=1
+ 3. the low sh>0 bits from high(b)-high(c) equal 0: we know we have to
+ truncate but we can't decide the ternary value, here cmp_low=0:
+ -0.5 ulp <= -1/2^sh < low(b)-low(c) < 1/2^sh <= 0.5 ulp
+ we always truncate and inexact can be any of -1,0,1
+ */
+
+ /* note: here cn might exceed cn0, in which case we consider a zero limb */
+ for (k = 0; (bn > 0) || (cn > 0); k = 1)
+ {
+ /* if cmp_low < 0, we know low(b) - low(c) < 0
+ if cmp_low > 0, we know low(b) - low(c) > 0
+ (more precisely if cmp_low = 2, low(b) - low(c) = 0.5 ulp so far)
+ if cmp_low = 0, so far low(b) - low(c) = 0 */
+
+ /* get next limbs */
+ bb = (bn > 0) ? bp[--bn] : 0;
+ if ((cn > 0) && (cn-- <= cn0))
+ cc = cp[cn];
+ else
+ cc = 0;
+
+ /* cmp_low compares low(b) and low(c) */
+ if (cmp_low == 0) /* case 1 or 3 */
+ cmp_low = (bb < cc) ? -2+k : (bb > cc) ? 1 : 0;
+
+ /* Case 1 for k=0 splits into 7 subcases:
+ 1a: bb > cc + half
+ 1b: bb = cc + half
+ 1c: 0 < bb - cc < half
+ 1d: bb = cc
+ 1e: -half < bb - cc < 0
+ 1f: bb - cc = -half
+ 1g: bb - cc < -half
+
+ Case 2 splits into 3 subcases:
+ 2a: bb > cc
+ 2b: bb = cc
+ 2c: bb < cc
+
+ Case 3 splits into 3 subcases:
+ 3a: bb > cc
+ 3b: bb = cc
+ 3c: bb < cc
+ */
+
+ /* the case rounding to nearest with sh=0 is special since one couldn't
+ subtract above 1/2 ulp in the trailing limb of the result */
+ if (rnd_mode == MPFR_RNDN && sh == 0 && k == 0) /* case 1 for k=0 */
+ {
+ mp_limb_t half = MPFR_LIMB_HIGHBIT;
+
+ /* add one ulp if bb > cc + half
+ truncate if cc - half < bb < cc + half
+ sub one ulp if bb < cc - half
+ */
+
+ if (cmp_low < 0) /* bb < cc: -1 ulp < low(b) - low(c) < 0,
+ cases 1e, 1f and 1g */
+ {
+ if (cc >= half)
+ cc -= half;
+ else /* since bb < cc < half, bb+half < 2*half */
+ bb += half;
+ /* now we have bb < cc + half:
+ we have to subtract one ulp if bb < cc,
+ and truncate if bb > cc */
+ }
+ else if (cmp_low >= 0) /* bb >= cc, cases 1a to 1d */
+ {
+ if (cc < half)
+ cc += half;
+ else /* since bb >= cc >= half, bb - half >= 0 */
+ bb -= half;
+ /* now we have bb > cc - half: we have to add one ulp if bb > cc,
+ and truncate if bb < cc */
+ if (cmp_low > 0)
+ cmp_low = 2;
+ }
+ }
+
+#ifdef DEBUG
+ printf ("k=%u bb=%lu cc=%lu cmp_low=%d\n", k,
+ (unsigned long) bb, (unsigned long) cc, cmp_low);
+#endif
+ if (cmp_low < 0) /* low(b) - low(c) < 0: either truncate or subtract
+ one ulp */
+ {
+ if (rnd_mode == MPFR_RNDZ)
+ goto sub_one_ulp; /* set inexact=-1 */
+ else if (rnd_mode != MPFR_RNDN) /* round away */
+ {
+ inexact = 1;
+ goto truncate;
+ }
+ else /* round to nearest */
+ {
+ /* If cmp_low < 0 and bb > cc, then -0.5 ulp < low(b)-low(c) < 0,
+ whatever the value of sh.
+ If sh>0, then cmp_low < 0 implies that the initial neglected
+ sh bits were 0 (otherwise cmp_low=2 initially), thus the
+ weight of the new bits is less than 0.5 ulp too.
+ If k > 0 (and sh=0) this means that either the first neglected
+ limbs bb and cc were equal (thus cmp_low was 0 for k=0),
+ or we had bb - cc = -0.5 ulp or 0.5 ulp.
+ The last case is not possible here since we would have
+ cmp_low > 0 which is sticky.
+ In the first case (where we have cmp_low = -1), we truncate,
+ whereas in the 2nd case we have cmp_low = -2 and we subtract
+ one ulp.
+ */
+ if (bb > cc || sh > 0 || cmp_low == -1)
+ { /* -0.5 ulp < low(b)-low(c) < 0,
+ bb > cc corresponds to cases 1e and 1f1
+ sh > 0 corresponds to cases 3c and 3b3
+ cmp_low = -1 corresponds to case 1d3 (also 3b3) */
+ inexact = 1;
+ goto truncate;
+ }
+ else if (bb < cc) /* here sh = 0 and low(b)-low(c) < -0.5 ulp,
+ this corresponds to cases 1g and 1f3 */
+ goto sub_one_ulp;
+ /* the only case where we can't conclude is sh=0 and bb=cc,
+ i.e., we have low(b) - low(c) = -0.5 ulp (up to now), thus
+ we don't know if we must truncate or subtract one ulp.
+ Note: for sh=0 we can't have low(b) - low(c) = -0.5 ulp up to
+ now, since low(b) - low(c) > 1/2^sh */
+ }
+ }
+ else if (cmp_low > 0) /* 0 < low(b) - low(c): either truncate or
+ add one ulp */
+ {
+ if (rnd_mode == MPFR_RNDZ)
+ {
+ inexact = -1;
+ goto truncate;
+ }
+ else if (rnd_mode != MPFR_RNDN) /* round away */
+ goto add_one_ulp;
+ else /* round to nearest */
+ {
+ if (bb > cc)
+ {
+ /* if sh=0, then bb>cc means that low(b)-low(c) > 0.5 ulp,
+ and similarly when cmp_low=2 */
+ if (cmp_low == 2) /* cases 1a, 1b1, 2a and 2b1 */
+ goto add_one_ulp;
+ /* sh > 0 and cmp_low > 0: this implies that the sh initial
+ neglected bits were 0, and the remaining low(b)-low(c)>0,
+ but its weight is less than 0.5 ulp */
+ else /* 0 < low(b) - low(c) < 0.5 ulp, this corresponds to
+ cases 3a, 1d1 and 3b1 */
+ {
+ inexact = -1;
+ goto truncate;
+ }
+ }
+ else if (bb < cc) /* 0 < low(b) - low(c) < 0.5 ulp, cases 1c,
+ 1b3, 2b3 and 2c */
+ {
+ inexact = -1;
+ goto truncate;
+ }
+ /* the only case where we can't conclude is bb=cc, i.e.,
+ low(b) - low(c) = 0.5 ulp (up to now), thus we don't know
+ if we must truncate or add one ulp. */
+ }
+ }
+ /* after k=0, we cannot conclude in the following cases, we split them
+ according to the values of bb and cc for k=1:
+ 1b. sh=0 and cmp_low = 1 and bb-cc = half [around 0.5 ulp]
+ 1b1. bb > cc: add one ulp, inex = 1
+ 1b2: bb = cc: cannot conclude
+ 1b3: bb < cc: truncate, inex = -1
+ 1d. sh=0 and cmp_low = 0 and bb-cc = 0 [around 0]
+ 1d1: bb > cc: truncate, inex = -1
+ 1d2: bb = cc: cannot conclude
+ 1d3: bb < cc: truncate, inex = +1
+ 1f. sh=0 and cmp_low = -1 and bb-cc = -half [around -0.5 ulp]
+ 1f1: bb > cc: truncate, inex = +1
+ 1f2: bb = cc: cannot conclude
+ 1f3: bb < cc: sub one ulp, inex = -1
+ 2b. sh > 0 and cmp_low = 2 and bb=cc [around 0.5 ulp]
+ 2b1. bb > cc: add one ulp, inex = 1
+ 2b2: bb = cc: cannot conclude
+ 2b3: bb < cc: truncate, inex = -1
+ 3b. sh > 0 and cmp_low = 0 [around 0]
+ 3b1. bb > cc: truncate, inex = -1
+ 3b2: bb = cc: cannot conclude
+ 3b3: bb < cc: truncate, inex = +1
+ */
+ }
+
+ if ((rnd_mode == MPFR_RNDN) && cmp_low != 0)
+ {
+ /* even rounding rule */
+ if ((ap[0] >> sh) & 1)
+ {
+ if (cmp_low < 0)
+ goto sub_one_ulp;
+ else
+ goto add_one_ulp;
+ }
+ else
+ inexact = (cmp_low > 0) ? -1 : 1;
+ }
+ else
+ inexact = 0;
+ goto truncate;
+
+ sub_one_ulp: /* sub one unit in last place to a */
+ mpn_sub_1 (ap, ap, an, MPFR_LIMB_ONE << sh);
+ inexact = -1;
+ goto end_of_sub;
+
+ add_one_ulp: /* add one unit in last place to a */
+ if (MPFR_UNLIKELY(mpn_add_1 (ap, ap, an, MPFR_LIMB_ONE << sh)))
+ /* result is a power of 2: 11111111111111 + 1 = 1000000000000000 */
+ {
+ ap[an-1] = MPFR_LIMB_HIGHBIT;
+ add_exp = 1;
+ }
+ inexact = 1; /* result larger than exact value */
+
+ truncate:
+ if (MPFR_UNLIKELY((ap[an-1] >> (GMP_NUMB_BITS - 1)) == 0))
+ /* case 1 - epsilon */
+ {
+ ap[an-1] = MPFR_LIMB_HIGHBIT;
+ add_exp = 1;
+ }
+
+ end_of_sub:
+ /* we have to set MPFR_EXP(a) to MPFR_EXP(b) - cancel + add_exp, taking
+ care of underflows/overflows in that computation, and of the allowed
+ exponent range */
+ if (MPFR_LIKELY(cancel))
+ {
+ mpfr_exp_t exp_a;
+
+ cancel -= add_exp; /* OK: add_exp is an int equal to 0 or 1 */
+ exp_a = MPFR_GET_EXP (b) - cancel;
+ if (MPFR_UNLIKELY(exp_a < __gmpfr_emin))
+ {
+ MPFR_TMP_FREE(marker);
+ if (rnd_mode == MPFR_RNDN &&
+ (exp_a < __gmpfr_emin - 1 ||
+ (inexact >= 0 && mpfr_powerof2_raw (a))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (a, rnd_mode, MPFR_SIGN(a));
+ }
+ MPFR_SET_EXP (a, exp_a);
+ }
+ else /* cancel = 0: MPFR_EXP(a) <- MPFR_EXP(b) + add_exp */
+ {
+ /* in case cancel = 0, add_exp can still be 1, in case b is just
+ below a power of two, c is very small, prec(a) < prec(b),
+ and rnd=away or nearest */
+ mpfr_exp_t exp_b;
+
+ exp_b = MPFR_GET_EXP (b);
+ if (MPFR_UNLIKELY(add_exp && exp_b == __gmpfr_emax))
+ {
+ MPFR_TMP_FREE(marker);
+ return mpfr_overflow (a, rnd_mode, MPFR_SIGN(a));
+ }
+ MPFR_SET_EXP (a, exp_b + add_exp);
+ }
+ MPFR_TMP_FREE(marker);
+#ifdef DEBUG
+ printf ("result is a="); mpfr_print_binary(a); putchar('\n');
+#endif
+ /* check that result is msb-normalized */
+ MPFR_ASSERTD(ap[an-1] > ~ap[an-1]);
+ MPFR_RET (inexact * MPFR_INT_SIGN (a));
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sub1sp.c b/Build/source/libs/mpfr/mpfr-src/src/sub1sp.c
new file mode 100644
index 00000000000..ddac834d17e
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sub1sp.c
@@ -0,0 +1,810 @@
+/* mpfr_sub1sp -- internal function to perform a "real" substraction
+ All the op must have the same precision
+
+Copyright 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* Check if we have to check the result of mpfr_sub1sp with mpfr_sub1 */
+#ifdef MPFR_WANT_ASSERT
+# if MPFR_WANT_ASSERT >= 2
+
+int mpfr_sub1sp2 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode);
+int mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t tmpa, tmpb, tmpc;
+ int inexb, inexc, inexact, inexact2;
+
+ mpfr_init2 (tmpa, MPFR_PREC (a));
+ mpfr_init2 (tmpb, MPFR_PREC (b));
+ mpfr_init2 (tmpc, MPFR_PREC (c));
+
+ inexb = mpfr_set (tmpb, b, MPFR_RNDN);
+ MPFR_ASSERTN (inexb == 0);
+
+ inexc = mpfr_set (tmpc, c, MPFR_RNDN);
+ MPFR_ASSERTN (inexc == 0);
+
+ inexact2 = mpfr_sub1 (tmpa, tmpb, tmpc, rnd_mode);
+ inexact = mpfr_sub1sp2(a, b, c, rnd_mode);
+
+ if (mpfr_cmp (tmpa, a) || inexact != inexact2)
+ {
+ fprintf (stderr, "sub1 & sub1sp return different values for %s\n"
+ "Prec_a = %lu, Prec_b = %lu, Prec_c = %lu\nB = ",
+ mpfr_print_rnd_mode (rnd_mode), (unsigned long) MPFR_PREC (a),
+ (unsigned long) MPFR_PREC (b), (unsigned long) MPFR_PREC (c));
+ mpfr_fprint_binary (stderr, tmpb);
+ fprintf (stderr, "\nC = ");
+ mpfr_fprint_binary (stderr, tmpc);
+ fprintf (stderr, "\nSub1 : ");
+ mpfr_fprint_binary (stderr, tmpa);
+ fprintf (stderr, "\nSub1sp: ");
+ mpfr_fprint_binary (stderr, a);
+ fprintf (stderr, "\nInexact sp = %d | Inexact = %d\n",
+ inexact, inexact2);
+ MPFR_ASSERTN (0);
+ }
+ mpfr_clears (tmpa, tmpb, tmpc, (mpfr_ptr) 0);
+ return inexact;
+}
+# define mpfr_sub1sp mpfr_sub1sp2
+# endif
+#endif
+
+/* Debugging support */
+#ifdef DEBUG
+# undef DEBUG
+# define DEBUG(x) (x)
+#else
+# define DEBUG(x) /**/
+#endif
+
+/* Rounding Sub */
+
+/*
+ compute sgn(b)*(|b| - |c|) if |b|>|c| else -sgn(b)*(|c| -|b|)
+ Returns 0 iff result is exact,
+ a negative value when the result is less than the exact value,
+ a positive value otherwise.
+*/
+
+/* A0...Ap-1
+ * Cp Cp+1 ....
+ * <- C'p+1 ->
+ * Cp = -1 if calculated from c mantissa
+ * Cp = 0 if 0 from a or c
+ * Cp = 1 if calculated from a.
+ * C'p+1 = First bit not null or 0 if there isn't one
+ *
+ * Can't have Cp=-1 and C'p+1=1*/
+
+/* RND = MPFR_RNDZ:
+ * + if Cp=0 and C'p+1=0,1, Truncate.
+ * + if Cp=0 and C'p+1=-1, SubOneUlp
+ * + if Cp=-1, SubOneUlp
+ * + if Cp=1, AddOneUlp
+ * RND = MPFR_RNDA (Away)
+ * + if Cp=0 and C'p+1=0,-1, Truncate
+ * + if Cp=0 and C'p+1=1, AddOneUlp
+ * + if Cp=1, AddOneUlp
+ * + if Cp=-1, Truncate
+ * RND = MPFR_RNDN
+ * + if Cp=0, Truncate
+ * + if Cp=1 and C'p+1=1, AddOneUlp
+ * + if Cp=1 and C'p+1=-1, Truncate
+ * + if Cp=1 and C'p+1=0, Truncate if Ap-1=0, AddOneUlp else
+ * + if Cp=-1 and C'p+1=-1, SubOneUlp
+ * + if Cp=-1 and C'p+1=0, Truncate if Ap-1=0, SubOneUlp else
+ *
+ * If AddOneUlp:
+ * If carry, then it is 11111111111 + 1 = 10000000000000
+ * ap[n-1]=MPFR_HIGHT_BIT
+ * If SubOneUlp:
+ * If we lose one bit, it is 1000000000 - 1 = 0111111111111
+ * Then shift, and put as last bit x which is calculated
+ * according Cp, Cp-1 and rnd_mode.
+ * If Truncate,
+ * If it is a power of 2,
+ * we may have to suboneulp in some special cases.
+ *
+ * To simplify, we don't use Cp = 1.
+ *
+ */
+
+int
+mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
+{
+ mpfr_exp_t bx,cx;
+ mpfr_uexp_t d;
+ mpfr_prec_t p, sh, cnt;
+ mp_size_t n;
+ mp_limb_t *ap, *bp, *cp;
+ mp_limb_t limb;
+ int inexact;
+ mp_limb_t bcp,bcp1; /* Cp and C'p+1 */
+ mp_limb_t bbcp = (mp_limb_t) -1, bbcp1 = (mp_limb_t) -1; /* Cp+1 and C'p+2,
+ gcc claims that they might be used uninitialized. We fill them with invalid
+ values, which should produce a failure if so. See README.dev file. */
+
+ MPFR_TMP_DECL(marker);
+
+ MPFR_TMP_MARK(marker);
+
+ MPFR_ASSERTD(MPFR_PREC(a) == MPFR_PREC(b) && MPFR_PREC(b) == MPFR_PREC(c));
+ MPFR_ASSERTD(MPFR_IS_PURE_FP(b));
+ MPFR_ASSERTD(MPFR_IS_PURE_FP(c));
+
+ /* Read prec and num of limbs */
+ p = MPFR_PREC (b);
+ n = MPFR_PREC2LIMBS (p);
+
+ /* Fast cmp of |b| and |c|*/
+ bx = MPFR_GET_EXP (b);
+ cx = MPFR_GET_EXP (c);
+ if (MPFR_UNLIKELY(bx == cx))
+ {
+ mp_size_t k = n - 1;
+ /* Check mantissa since exponent are equals */
+ bp = MPFR_MANT(b);
+ cp = MPFR_MANT(c);
+ while (k>=0 && MPFR_UNLIKELY(bp[k] == cp[k]))
+ k--;
+ if (MPFR_UNLIKELY(k < 0))
+ /* b == c ! */
+ {
+ /* Return exact number 0 */
+ if (rnd_mode == MPFR_RNDD)
+ MPFR_SET_NEG(a);
+ else
+ MPFR_SET_POS(a);
+ MPFR_SET_ZERO(a);
+ MPFR_RET(0);
+ }
+ else if (bp[k] > cp[k])
+ goto BGreater;
+ else
+ {
+ MPFR_ASSERTD(bp[k]<cp[k]);
+ goto CGreater;
+ }
+ }
+ else if (MPFR_UNLIKELY(bx < cx))
+ {
+ /* Swap b and c and set sign */
+ mpfr_srcptr t;
+ mpfr_exp_t tx;
+ CGreater:
+ MPFR_SET_OPPOSITE_SIGN(a,b);
+ t = b; b = c; c = t;
+ tx = bx; bx = cx; cx = tx;
+ }
+ else
+ {
+ /* b > c */
+ BGreater:
+ MPFR_SET_SAME_SIGN(a,b);
+ }
+
+ /* Now b > c */
+ MPFR_ASSERTD(bx >= cx);
+ d = (mpfr_uexp_t) bx - cx;
+ DEBUG (printf ("New with diff=%lu\n", (unsigned long) d));
+
+ if (MPFR_UNLIKELY(d <= 1))
+ {
+ if (MPFR_LIKELY(d < 1))
+ {
+ /* <-- b -->
+ <-- c --> : exact sub */
+ ap = MPFR_MANT(a);
+ mpn_sub_n (ap, MPFR_MANT(b), MPFR_MANT(c), n);
+ /* Normalize */
+ ExactNormalize:
+ limb = ap[n-1];
+ if (MPFR_LIKELY(limb))
+ {
+ /* First limb is not zero. */
+ count_leading_zeros(cnt, limb);
+ /* cnt could be == 0 <= SubD1Lose */
+ if (MPFR_LIKELY(cnt))
+ {
+ mpn_lshift(ap, ap, n, cnt); /* Normalize number */
+ bx -= cnt; /* Update final expo */
+ }
+ /* Last limb should be ok */
+ MPFR_ASSERTD(!(ap[0] & MPFR_LIMB_MASK((unsigned int) (-p)
+ % GMP_NUMB_BITS)));
+ }
+ else
+ {
+ /* First limb is zero */
+ mp_size_t k = n-1, len;
+ /* Find the first limb not equal to zero.
+ FIXME:It is assume it exists (since |b| > |c| and same prec)*/
+ do
+ {
+ MPFR_ASSERTD( k > 0 );
+ limb = ap[--k];
+ }
+ while (limb == 0);
+ MPFR_ASSERTD(limb != 0);
+ count_leading_zeros(cnt, limb);
+ k++;
+ len = n - k; /* Number of last limb */
+ MPFR_ASSERTD(k >= 0);
+ if (MPFR_LIKELY(cnt))
+ mpn_lshift(ap+len, ap, k, cnt); /* Normalize the High Limb*/
+ else
+ {
+ /* Must use DECR since src and dest may overlap & dest>=src*/
+ MPN_COPY_DECR(ap+len, ap, k);
+ }
+ MPN_ZERO(ap, len); /* Zeroing the last limbs */
+ bx -= cnt + len*GMP_NUMB_BITS; /* Update Expo */
+ /* Last limb should be ok */
+ MPFR_ASSERTD(!(ap[len]&MPFR_LIMB_MASK((unsigned int) (-p)
+ % GMP_NUMB_BITS)));
+ }
+ /* Check expo underflow */
+ if (MPFR_UNLIKELY(bx < __gmpfr_emin))
+ {
+ MPFR_TMP_FREE(marker);
+ /* inexact=0 */
+ DEBUG( printf("(D==0 Underflow)\n") );
+ if (rnd_mode == MPFR_RNDN &&
+ (bx < __gmpfr_emin - 1 ||
+ (/*inexact >= 0 &&*/ mpfr_powerof2_raw (a))))
+ rnd_mode = MPFR_RNDZ;
+ return mpfr_underflow (a, rnd_mode, MPFR_SIGN(a));
+ }
+ MPFR_SET_EXP (a, bx);
+ /* No rounding is necessary since the result is exact */
+ MPFR_ASSERTD(ap[n-1] > ~ap[n-1]);
+ MPFR_TMP_FREE(marker);
+ return 0;
+ }
+ else /* if (d == 1) */
+ {
+ /* | <-- b -->
+ | <-- c --> */
+ mp_limb_t c0, mask;
+ mp_size_t k;
+ MPFR_UNSIGNED_MINUS_MODULO(sh, p);
+ /* If we lose at least one bit, compute 2*b-c (Exact)
+ * else compute b-c/2 */
+ bp = MPFR_MANT(b);
+ cp = MPFR_MANT(c);
+ k = n-1;
+ limb = bp[k] - cp[k]/2;
+ if (limb > MPFR_LIMB_HIGHBIT)
+ {
+ /* We can't lose precision: compute b-c/2 */
+ /* Shift c in the allocated temporary block */
+ SubD1NoLose:
+ c0 = cp[0] & (MPFR_LIMB_ONE<<sh);
+ cp = MPFR_TMP_LIMBS_ALLOC (n);
+ mpn_rshift(cp, MPFR_MANT(c), n, 1);
+ if (MPFR_LIKELY(c0 == 0))
+ {
+ /* Result is exact: no need of rounding! */
+ ap = MPFR_MANT(a);
+ mpn_sub_n (ap, bp, cp, n);
+ MPFR_SET_EXP(a, bx); /* No expo overflow! */
+ /* No truncate or normalize is needed */
+ MPFR_ASSERTD(ap[n-1] > ~ap[n-1]);
+ /* No rounding is necessary since the result is exact */
+ MPFR_TMP_FREE(marker);
+ return 0;
+ }
+ ap = MPFR_MANT(a);
+ mask = ~MPFR_LIMB_MASK(sh);
+ cp[0] &= mask; /* Delete last bit of c */
+ mpn_sub_n (ap, bp, cp, n);
+ MPFR_SET_EXP(a, bx); /* No expo overflow! */
+ MPFR_ASSERTD( !(ap[0] & ~mask) ); /* Check last bits */
+ /* No normalize is needed */
+ MPFR_ASSERTD(ap[n-1] > ~ap[n-1]);
+ /* Rounding is necessary since c0 = 1*/
+ /* Cp =-1 and C'p+1=0 */
+ bcp = 1; bcp1 = 0;
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ /* Even Rule apply: Check Ap-1 */
+ if (MPFR_LIKELY( (ap[0] & (MPFR_LIMB_ONE<<sh)) == 0) )
+ goto truncate;
+ else
+ goto sub_one_ulp;
+ }
+ MPFR_UPDATE_RND_MODE(rnd_mode, MPFR_IS_NEG(a));
+ if (rnd_mode == MPFR_RNDZ)
+ goto sub_one_ulp;
+ else
+ goto truncate;
+ }
+ else if (MPFR_LIKELY(limb < MPFR_LIMB_HIGHBIT))
+ {
+ /* We lose at least one bit of prec */
+ /* Calcul of 2*b-c (Exact) */
+ /* Shift b in the allocated temporary block */
+ SubD1Lose:
+ bp = MPFR_TMP_LIMBS_ALLOC (n);
+ mpn_lshift (bp, MPFR_MANT(b), n, 1);
+ ap = MPFR_MANT(a);
+ mpn_sub_n (ap, bp, cp, n);
+ bx--;
+ goto ExactNormalize;
+ }
+ else
+ {
+ /* Case: limb = 100000000000 */
+ /* Check while b[k] == c'[k] (C' is C shifted by 1) */
+ /* If b[k]<c'[k] => We lose at least one bit*/
+ /* If b[k]>c'[k] => We don't lose any bit */
+ /* If k==-1 => We don't lose any bit
+ AND the result is 100000000000 0000000000 00000000000 */
+ mp_limb_t carry;
+ do {
+ carry = cp[k]&MPFR_LIMB_ONE;
+ k--;
+ } while (k>=0 &&
+ bp[k]==(carry=cp[k]/2+(carry<<(GMP_NUMB_BITS-1))));
+ if (MPFR_UNLIKELY(k<0))
+ {
+ /*If carry then (sh==0 and Virtual c'[-1] > Virtual b[-1]) */
+ if (MPFR_UNLIKELY(carry)) /* carry = cp[0]&MPFR_LIMB_ONE */
+ {
+ /* FIXME: Can be faster? */
+ MPFR_ASSERTD(sh == 0);
+ goto SubD1Lose;
+ }
+ /* Result is a power of 2 */
+ ap = MPFR_MANT (a);
+ MPN_ZERO (ap, n);
+ ap[n-1] = MPFR_LIMB_HIGHBIT;
+ MPFR_SET_EXP (a, bx); /* No expo overflow! */
+ /* No Normalize is needed*/
+ /* No Rounding is needed */
+ MPFR_TMP_FREE (marker);
+ return 0;
+ }
+ /* carry = cp[k]/2+(cp[k-1]&1)<<(GMP_NUMB_BITS-1) = c'[k]*/
+ else if (bp[k] > carry)
+ goto SubD1NoLose;
+ else
+ {
+ MPFR_ASSERTD(bp[k]<carry);
+ goto SubD1Lose;
+ }
+ }
+ }
+ }
+ else if (MPFR_UNLIKELY(d >= p))
+ {
+ ap = MPFR_MANT(a);
+ MPFR_UNSIGNED_MINUS_MODULO(sh, p);
+ /* We can't set A before since we use cp for rounding... */
+ /* Perform rounding: check if a=b or a=b-ulp(b) */
+ if (MPFR_UNLIKELY(d == p))
+ {
+ /* cp == -1 and c'p+1 = ? */
+ bcp = 1;
+ /* We need Cp+1 later for a very improbable case. */
+ bbcp = (MPFR_MANT(c)[n-1] & (MPFR_LIMB_ONE<<(GMP_NUMB_BITS-2)));
+ /* We need also C'p+1 for an even more unprobable case... */
+ if (MPFR_LIKELY( bbcp ))
+ bcp1 = 1;
+ else
+ {
+ cp = MPFR_MANT(c);
+ if (MPFR_UNLIKELY(cp[n-1] == MPFR_LIMB_HIGHBIT))
+ {
+ mp_size_t k = n-1;
+ do {
+ k--;
+ } while (k>=0 && cp[k]==0);
+ bcp1 = (k>=0);
+ }
+ else
+ bcp1 = 1;
+ }
+ DEBUG( printf("(D=P) Cp=-1 Cp+1=%d C'p+1=%d \n", bbcp!=0, bcp1!=0) );
+ bp = MPFR_MANT (b);
+
+ /* Even if src and dest overlap, it is ok using MPN_COPY */
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ if (MPFR_UNLIKELY( bcp && bcp1==0 ))
+ /* Cp=-1 and C'p+1=0: Even rule Apply! */
+ /* Check Ap-1 = Bp-1 */
+ if ((bp[0] & (MPFR_LIMB_ONE<<sh)) == 0)
+ {
+ MPN_COPY(ap, bp, n);
+ goto truncate;
+ }
+ MPN_COPY(ap, bp, n);
+ goto sub_one_ulp;
+ }
+ MPFR_UPDATE_RND_MODE(rnd_mode, MPFR_IS_NEG(a));
+ if (rnd_mode == MPFR_RNDZ)
+ {
+ MPN_COPY(ap, bp, n);
+ goto sub_one_ulp;
+ }
+ else
+ {
+ MPN_COPY(ap, bp, n);
+ goto truncate;
+ }
+ }
+ else
+ {
+ /* Cp=0, Cp+1=-1 if d==p+1, C'p+1=-1 */
+ bcp = 0; bbcp = (d==p+1); bcp1 = 1;
+ DEBUG( printf("(D>P) Cp=%d Cp+1=%d C'p+1=%d\n", bcp!=0,bbcp!=0,bcp1!=0) );
+ /* Need to compute C'p+2 if d==p+1 and if rnd_mode=NEAREST
+ (Because of a very improbable case) */
+ if (MPFR_UNLIKELY(d==p+1 && rnd_mode==MPFR_RNDN))
+ {
+ cp = MPFR_MANT(c);
+ if (MPFR_UNLIKELY(cp[n-1] == MPFR_LIMB_HIGHBIT))
+ {
+ mp_size_t k = n-1;
+ do {
+ k--;
+ } while (k>=0 && cp[k]==0);
+ bbcp1 = (k>=0);
+ }
+ else
+ bbcp1 = 1;
+ DEBUG( printf("(D>P) C'p+2=%d\n", bbcp1!=0) );
+ }
+ /* Copy mantissa B in A */
+ MPN_COPY(ap, MPFR_MANT(b), n);
+ /* Round */
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ goto truncate;
+ MPFR_UPDATE_RND_MODE(rnd_mode, MPFR_IS_NEG(a));
+ if (rnd_mode == MPFR_RNDZ)
+ goto sub_one_ulp;
+ else /* rnd_mode = AWAY */
+ goto truncate;
+ }
+ }
+ else
+ {
+ mpfr_uexp_t dm;
+ mp_size_t m;
+ mp_limb_t mask;
+
+ /* General case: 2 <= d < p */
+ MPFR_UNSIGNED_MINUS_MODULO(sh, p);
+ cp = MPFR_TMP_LIMBS_ALLOC (n);
+
+ /* Shift c in temporary allocated place */
+ dm = d % GMP_NUMB_BITS;
+ m = d / GMP_NUMB_BITS;
+ if (MPFR_UNLIKELY(dm == 0))
+ {
+ /* dm = 0 and m > 0: Just copy */
+ MPFR_ASSERTD(m!=0);
+ MPN_COPY(cp, MPFR_MANT(c)+m, n-m);
+ MPN_ZERO(cp+n-m, m);
+ }
+ else if (MPFR_LIKELY(m == 0))
+ {
+ /* dm >=2 and m == 0: just shift */
+ MPFR_ASSERTD(dm >= 2);
+ mpn_rshift(cp, MPFR_MANT(c), n, dm);
+ }
+ else
+ {
+ /* dm > 0 and m > 0: shift and zero */
+ mpn_rshift(cp, MPFR_MANT(c)+m, n-m, dm);
+ MPN_ZERO(cp+n-m, m);
+ }
+
+ DEBUG( mpfr_print_mant_binary("Before", MPFR_MANT(c), p) );
+ DEBUG( mpfr_print_mant_binary("B= ", MPFR_MANT(b), p) );
+ DEBUG( mpfr_print_mant_binary("After ", cp, p) );
+
+ /* Compute bcp=Cp and bcp1=C'p+1 */
+ if (MPFR_LIKELY(sh))
+ {
+ /* Try to compute them from C' rather than C (FIXME: Faster?) */
+ bcp = (cp[0] & (MPFR_LIMB_ONE<<(sh-1))) ;
+ if (MPFR_LIKELY( cp[0] & MPFR_LIMB_MASK(sh-1) ))
+ bcp1 = 1;
+ else
+ {
+ /* We can't compute C'p+1 from C'. Compute it from C */
+ /* Start from bit x=p-d+sh in mantissa C
+ (+sh since we have already looked sh bits in C'!) */
+ mpfr_prec_t x = p-d+sh-1;
+ if (MPFR_LIKELY(x>p))
+ /* We are already looked at all the bits of c, so C'p+1 = 0*/
+ bcp1 = 0;
+ else
+ {
+ mp_limb_t *tp = MPFR_MANT(c);
+ mp_size_t kx = n-1 - (x / GMP_NUMB_BITS);
+ mpfr_prec_t sx = GMP_NUMB_BITS-1-(x%GMP_NUMB_BITS);
+ DEBUG (printf ("(First) x=%lu Kx=%ld Sx=%lu\n",
+ (unsigned long) x, (long) kx,
+ (unsigned long) sx));
+ /* Looks at the last bits of limb kx (if sx=0 does nothing)*/
+ if (tp[kx] & MPFR_LIMB_MASK(sx))
+ bcp1 = 1;
+ else
+ {
+ /*kx += (sx==0);*/
+ /*If sx==0, tp[kx] hasn't been checked*/
+ do {
+ kx--;
+ } while (kx>=0 && tp[kx]==0);
+ bcp1 = (kx >= 0);
+ }
+ }
+ }
+ }
+ else
+ {
+ /* Compute Cp and C'p+1 from C with sh=0 */
+ mp_limb_t *tp = MPFR_MANT(c);
+ /* Start from bit x=p-d in mantissa C */
+ mpfr_prec_t x = p-d;
+ mp_size_t kx = n-1 - (x / GMP_NUMB_BITS);
+ mpfr_prec_t sx = GMP_NUMB_BITS-1-(x%GMP_NUMB_BITS);
+ MPFR_ASSERTD(p >= d);
+ bcp = (tp[kx] & (MPFR_LIMB_ONE<<sx));
+ /* Looks at the last bits of limb kx (If sx=0, does nothing)*/
+ if (tp[kx] & MPFR_LIMB_MASK(sx))
+ bcp1 = 1;
+ else
+ {
+ /*kx += (sx==0);*/ /*If sx==0, tp[kx] hasn't been checked*/
+ do {
+ kx--;
+ } while (kx>=0 && tp[kx]==0);
+ bcp1 = (kx>=0);
+ }
+ }
+ DEBUG( printf("sh=%lu Cp=%d C'p+1=%d\n", sh, bcp!=0, bcp1!=0) );
+
+ /* Check if we can lose a bit, and if so compute Cp+1 and C'p+2 */
+ bp = MPFR_MANT(b);
+ if (MPFR_UNLIKELY((bp[n-1]-cp[n-1]) <= MPFR_LIMB_HIGHBIT))
+ {
+ /* We can lose a bit so we precompute Cp+1 and C'p+2 */
+ /* Test for trivial case: since C'p+1=0, Cp+1=0 and C'p+2 =0 */
+ if (MPFR_LIKELY(bcp1 == 0))
+ {
+ bbcp = 0;
+ bbcp1 = 0;
+ }
+ else /* bcp1 != 0 */
+ {
+ /* We can lose a bit:
+ compute Cp+1 and C'p+2 from mantissa C */
+ mp_limb_t *tp = MPFR_MANT(c);
+ /* Start from bit x=(p+1)-d in mantissa C */
+ mpfr_prec_t x = p+1-d;
+ mp_size_t kx = n-1 - (x/GMP_NUMB_BITS);
+ mpfr_prec_t sx = GMP_NUMB_BITS-1-(x%GMP_NUMB_BITS);
+ MPFR_ASSERTD(p > d);
+ DEBUG (printf ("(pre) x=%lu Kx=%ld Sx=%lu\n",
+ (unsigned long) x, (long) kx,
+ (unsigned long) sx));
+ bbcp = (tp[kx] & (MPFR_LIMB_ONE<<sx)) ;
+ /* Looks at the last bits of limb kx (If sx=0, does nothing)*/
+ /* If Cp+1=0, since C'p+1!=0, C'p+2=1 ! */
+ if (MPFR_LIKELY(bbcp==0 || (tp[kx]&MPFR_LIMB_MASK(sx))))
+ bbcp1 = 1;
+ else
+ {
+ /*kx += (sx==0);*/ /*If sx==0, tp[kx] hasn't been checked*/
+ do {
+ kx--;
+ } while (kx>=0 && tp[kx]==0);
+ bbcp1 = (kx>=0);
+ DEBUG (printf ("(Pre) Scan done for %ld\n", (long) kx));
+ }
+ } /*End of Bcp1 != 0*/
+ DEBUG( printf("(Pre) Cp+1=%d C'p+2=%d\n", bbcp!=0, bbcp1!=0) );
+ } /* End of "can lose a bit" */
+
+ /* Clean shifted C' */
+ mask = ~MPFR_LIMB_MASK (sh);
+ cp[0] &= mask;
+
+ /* Subtract the mantissa c from b in a */
+ ap = MPFR_MANT(a);
+ mpn_sub_n (ap, bp, cp, n);
+ DEBUG( mpfr_print_mant_binary("Sub= ", ap, p) );
+
+ /* Normalize: we lose at max one bit*/
+ if (MPFR_UNLIKELY(MPFR_LIMB_MSB(ap[n-1]) == 0))
+ {
+ /* High bit is not set and we have to fix it! */
+ /* Ap >= 010000xxx001 */
+ mpn_lshift(ap, ap, n, 1);
+ /* Ap >= 100000xxx010 */
+ if (MPFR_UNLIKELY(bcp!=0)) /* Check if Cp = -1 */
+ /* Since Cp == -1, we have to substract one more */
+ {
+ mpn_sub_1(ap, ap, n, MPFR_LIMB_ONE<<sh);
+ MPFR_ASSERTD(MPFR_LIMB_MSB(ap[n-1]) != 0);
+ }
+ /* Ap >= 10000xxx001 */
+ /* Final exponent -1 since we have shifted the mantissa */
+ bx--;
+ /* Update bcp and bcp1 */
+ MPFR_ASSERTN(bbcp != (mp_limb_t) -1);
+ MPFR_ASSERTN(bbcp1 != (mp_limb_t) -1);
+ bcp = bbcp;
+ bcp1 = bbcp1;
+ /* We dont't have anymore a valid Cp+1!
+ But since Ap >= 100000xxx001, the final sub can't unnormalize!*/
+ }
+ MPFR_ASSERTD( !(ap[0] & ~mask) );
+
+ /* Rounding */
+ if (MPFR_LIKELY(rnd_mode == MPFR_RNDN))
+ {
+ if (MPFR_LIKELY(bcp==0))
+ goto truncate;
+ else if ((bcp1) || ((ap[0] & (MPFR_LIMB_ONE<<sh)) != 0))
+ goto sub_one_ulp;
+ else
+ goto truncate;
+ }
+
+ /* Update rounding mode */
+ MPFR_UPDATE_RND_MODE(rnd_mode, MPFR_IS_NEG(a));
+ if (rnd_mode == MPFR_RNDZ && (MPFR_LIKELY(bcp || bcp1)))
+ goto sub_one_ulp;
+ goto truncate;
+ }
+ MPFR_RET_NEVER_GO_HERE ();
+
+ /* Sub one ulp to the result */
+ sub_one_ulp:
+ mpn_sub_1 (ap, ap, n, MPFR_LIMB_ONE << sh);
+ /* Result should be smaller than exact value: inexact=-1 */
+ inexact = -1;
+ /* Check normalisation */
+ if (MPFR_UNLIKELY(MPFR_LIMB_MSB(ap[n-1]) == 0))
+ {
+ /* ap was a power of 2, and we lose a bit */
+ /* Now it is 0111111111111111111[00000 */
+ mpn_lshift(ap, ap, n, 1);
+ bx--;
+ /* And the lost bit x depends on Cp+1, and Cp */
+ /* Compute Cp+1 if it isn't already compute (ie d==1) */
+ /* FIXME: Is this case possible? */
+ if (MPFR_UNLIKELY(d == 1))
+ bbcp = 0;
+ DEBUG( printf("(SubOneUlp)Cp=%d, Cp+1=%d C'p+1=%d\n", bcp!=0,bbcp!=0,bcp1!=0));
+ /* Compute the last bit (Since we have shifted the mantissa)
+ we need one more bit!*/
+ MPFR_ASSERTN(bbcp != (mp_limb_t) -1);
+ if ( (rnd_mode == MPFR_RNDZ && bcp==0)
+ || (rnd_mode==MPFR_RNDN && bbcp==0)
+ || (bcp && bcp1==0) ) /*Exact result*/
+ {
+ ap[0] |= MPFR_LIMB_ONE<<sh;
+ if (rnd_mode == MPFR_RNDN)
+ inexact = 1;
+ DEBUG( printf("(SubOneUlp) Last bit set\n") );
+ }
+ /* Result could be exact if C'p+1 = 0 and rnd == Zero
+ since we have had one more bit to the result */
+ /* Fixme: rnd_mode == MPFR_RNDZ needed ? */
+ if (bcp1==0 && rnd_mode==MPFR_RNDZ)
+ {
+ DEBUG( printf("(SubOneUlp) Exact result\n") );
+ inexact = 0;
+ }
+ }
+
+ goto end_of_sub;
+
+ truncate:
+ /* Check if the result is an exact power of 2: 100000000000
+ in which cases, we could have to do sub_one_ulp due to some nasty reasons:
+ If Result is a Power of 2:
+ + If rnd = AWAY,
+ | If Cp=-1 and C'p+1 = 0, SubOneUlp and the result is EXACT.
+ If Cp=-1 and C'p+1 =-1, SubOneUlp and the result is above.
+ Otherwise truncate
+ + If rnd = NEAREST,
+ If Cp= 0 and Cp+1 =-1 and C'p+2=-1, SubOneUlp and the result is above
+ If cp=-1 and C'p+1 = 0, SubOneUlp and the result is exact.
+ Otherwise truncate.
+ X bit should always be set if SubOneUlp*/
+ if (MPFR_UNLIKELY(ap[n-1] == MPFR_LIMB_HIGHBIT))
+ {
+ mp_size_t k = n-1;
+ do {
+ k--;
+ } while (k>=0 && ap[k]==0);
+ if (MPFR_UNLIKELY(k<0))
+ {
+ /* It is a power of 2! */
+ /* Compute Cp+1 if it isn't already compute (ie d==1) */
+ /* FIXME: Is this case possible? */
+ if (d == 1)
+ bbcp=0;
+ DEBUG( printf("(Truncate) Cp=%d, Cp+1=%d C'p+1=%d C'p+2=%d\n", \
+ bcp!=0, bbcp!=0, bcp1!=0, bbcp1!=0) );
+ MPFR_ASSERTN(bbcp != (mp_limb_t) -1);
+ MPFR_ASSERTN((rnd_mode != MPFR_RNDN) || (bcp != 0) || (bbcp == 0) || (bbcp1 != (mp_limb_t) -1));
+ if (((rnd_mode != MPFR_RNDZ) && bcp)
+ ||
+ ((rnd_mode == MPFR_RNDN) && (bcp == 0) && (bbcp) && (bbcp1)))
+ {
+ DEBUG( printf("(Truncate) Do sub\n") );
+ mpn_sub_1 (ap, ap, n, MPFR_LIMB_ONE << sh);
+ mpn_lshift(ap, ap, n, 1);
+ ap[0] |= MPFR_LIMB_ONE<<sh;
+ bx--;
+ /* FIXME: Explain why it works (or why not)... */
+ inexact = (bcp1 == 0) ? 0 : (rnd_mode==MPFR_RNDN) ? -1 : 1;
+ goto end_of_sub;
+ }
+ }
+ }
+
+ /* Calcul of Inexact flag.*/
+ inexact = MPFR_LIKELY(bcp || bcp1) ? 1 : 0;
+
+ end_of_sub:
+ /* Update Expo */
+ /* FIXME: Is this test really useful?
+ If d==0 : Exact case. This is never called.
+ if 1 < d < p : bx=MPFR_EXP(b) or MPFR_EXP(b)-1 > MPFR_EXP(c) > emin
+ if d == 1 : bx=MPFR_EXP(b). If we could lose any bits, the exact
+ normalisation is called.
+ if d >= p : bx=MPFR_EXP(b) >= MPFR_EXP(c) + p > emin
+ After SubOneUlp, we could have one bit less.
+ if 1 < d < p : bx >= MPFR_EXP(b)-2 >= MPFR_EXP(c) > emin
+ if d == 1 : bx >= MPFR_EXP(b)-1 = MPFR_EXP(c) > emin.
+ if d >= p : bx >= MPFR_EXP(b)-1 > emin since p>=2.
+ */
+ MPFR_ASSERTD( bx >= __gmpfr_emin);
+ /*
+ if (MPFR_UNLIKELY(bx < __gmpfr_emin))
+ {
+ DEBUG( printf("(Final Underflow)\n") );
+ if (rnd_mode == MPFR_RNDN &&
+ (bx < __gmpfr_emin - 1 ||
+ (inexact >= 0 && mpfr_powerof2_raw (a))))
+ rnd_mode = MPFR_RNDZ;
+ MPFR_TMP_FREE(marker);
+ return mpfr_underflow (a, rnd_mode, MPFR_SIGN(a));
+ }
+ */
+ MPFR_SET_EXP (a, bx);
+
+ MPFR_TMP_FREE(marker);
+ MPFR_RET (inexact * MPFR_INT_SIGN (a));
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sub_d.c b/Build/source/libs/mpfr/mpfr-src/src/sub_d.c
new file mode 100644
index 00000000000..1050f6b8016
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sub_d.c
@@ -0,0 +1,51 @@
+/* mpfr_sub_d -- subtract a machine double precision float from
+ a multiple precision floating-point number
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_sub_d (mpfr_ptr a, mpfr_srcptr b, double c, mpfr_rnd_t rnd_mode)
+{
+ int inexact;
+ mpfr_t d;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("b[%Pu]=%.*Rg c=%.20g rnd=%d",
+ mpfr_get_prec (b), mpfr_log_prec, b, c, rnd_mode),
+ ("a[%Pu]=%.*Rg", mpfr_get_prec (a), mpfr_log_prec, a));
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ inexact = mpfr_set_d (d, c, rnd_mode);
+ MPFR_ASSERTN (inexact == 0);
+
+ mpfr_clear_flags ();
+ inexact = mpfr_sub (a, b, d, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+
+ mpfr_clear(d);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (a, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sub_ui.c b/Build/source/libs/mpfr/mpfr-src/src/sub_ui.c
new file mode 100644
index 00000000000..798fb1e6fc6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sub_ui.c
@@ -0,0 +1,60 @@
+/* mpfr_sub_ui -- subtract a floating-point number and a machine integer
+
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_sub_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode)
+{
+ if (MPFR_LIKELY (u != 0)) /* if u=0, do nothing */
+ {
+ mpfr_t uu;
+ mp_limb_t up[1];
+ unsigned long cnt;
+ int inex;
+
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg u=%lu rnd=%d",
+ mpfr_get_prec(x), mpfr_log_prec, x, u, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec(y), mpfr_log_prec, y, inex));
+
+ MPFR_TMP_INIT1 (up, uu, GMP_NUMB_BITS);
+ MPFR_ASSERTN (u == (mp_limb_t) u);
+ count_leading_zeros (cnt, (mp_limb_t) u);
+ *up = (mp_limb_t) u << cnt;
+
+ /* Optimization note: Exponent save/restore operations may be
+ removed if mpfr_sub works even when uu is out-of-range. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
+ inex = mpfr_sub (y, x, uu, rnd_mode);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex, rnd_mode);
+ }
+ else
+ return mpfr_set (y, x, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/subnormal.c b/Build/source/libs/mpfr/mpfr-src/src/subnormal.c
new file mode 100644
index 00000000000..0f7150c06e7
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/subnormal.c
@@ -0,0 +1,163 @@
+/* mpfr_subnormalize -- Subnormalize a floating point number
+ emulating sub-normal numbers.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* For MPFR_RNDN, we can have a problem of double rounding.
+ In such a case, this table helps to conclude what to do (y positive):
+ Rounding Bit | Sticky Bit | inexact | Action | new inexact
+ 0 | ? | ? | Trunc | sticky
+ 1 | 0 | 1 | Trunc |
+ 1 | 0 | 0 | Trunc if even |
+ 1 | 0 | -1 | AddOneUlp |
+ 1 | 1 | ? | AddOneUlp |
+
+ For other rounding mode, there isn't such a problem.
+ Just round it again and merge the ternary values.
+
+ Set the inexact flag if the returned ternary value is non-zero.
+ Set the underflow flag if a second rounding occurred (whether this
+ rounding is exact or not). See
+ https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00000.html
+ https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00008.html
+ https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00010.html
+*/
+
+int
+mpfr_subnormalize (mpfr_ptr y, int old_inexact, mpfr_rnd_t rnd)
+{
+ int sign;
+
+ /* The subnormal exponent range is [ emin, emin + MPFR_PREC(y) - 2 ] */
+ if (MPFR_LIKELY (MPFR_IS_SINGULAR (y)
+ || (MPFR_GET_EXP (y) >=
+ __gmpfr_emin + (mpfr_exp_t) MPFR_PREC (y) - 1)))
+ MPFR_RET (old_inexact);
+
+ mpfr_set_underflow ();
+ sign = MPFR_SIGN (y);
+
+ /* We have to emulate one bit rounding if EXP(y) = emin */
+ if (MPFR_GET_EXP (y) == __gmpfr_emin)
+ {
+ /* If this is a power of 2, we don't need rounding.
+ It handles cases when |y| = 0.1 * 2^emin */
+ if (mpfr_powerof2_raw (y))
+ MPFR_RET (old_inexact);
+
+ /* We keep the same sign for y.
+ Assuming Y is the real value and y the approximation
+ and since y is not a power of 2: 0.5*2^emin < Y < 1*2^emin
+ We also know the direction of the error thanks to ternary value. */
+
+ if (rnd == MPFR_RNDN)
+ {
+ mp_limb_t *mant, rb ,sb;
+ mp_size_t s;
+ /* We need the rounding bit and the sticky bit. Read them
+ and use the previous table to conclude. */
+ s = MPFR_LIMB_SIZE (y) - 1;
+ mant = MPFR_MANT (y) + s;
+ rb = *mant & (MPFR_LIMB_HIGHBIT >> 1);
+ if (rb == 0)
+ goto set_min;
+ sb = *mant & ((MPFR_LIMB_HIGHBIT >> 1) - 1);
+ while (sb == 0 && s-- != 0)
+ sb = *--mant;
+ if (sb != 0)
+ goto set_min_p1;
+ /* Rounding bit is 1 and sticky bit is 0.
+ We need to examine old inexact flag to conclude. */
+ if ((old_inexact > 0 && sign > 0) ||
+ (old_inexact < 0 && sign < 0))
+ goto set_min;
+ /* If inexact != 0, return 0.1*2^(emin+1).
+ Otherwise, rounding bit = 1, sticky bit = 0 and inexact = 0
+ So we have 0.1100000000000000000000000*2^emin exactly.
+ We return 0.1*2^(emin+1) according to the even-rounding
+ rule on subnormals. */
+ goto set_min_p1;
+ }
+ else if (MPFR_IS_LIKE_RNDZ (rnd, MPFR_IS_NEG (y)))
+ {
+ set_min:
+ mpfr_setmin (y, __gmpfr_emin);
+ MPFR_RET (-sign);
+ }
+ else
+ {
+ set_min_p1:
+ /* Note: mpfr_setmin will abort if __gmpfr_emax == __gmpfr_emin. */
+ mpfr_setmin (y, __gmpfr_emin + 1);
+ MPFR_RET (sign);
+ }
+ }
+ else /* Hard case: It is more or less the same problem than mpfr_cache */
+ {
+ mpfr_t dest;
+ mpfr_prec_t q;
+ int inexact, inex2;
+
+ MPFR_ASSERTD (MPFR_GET_EXP (y) > __gmpfr_emin);
+
+ /* Compute the intermediary precision */
+ q = (mpfr_uexp_t) MPFR_GET_EXP (y) - __gmpfr_emin + 1;
+ MPFR_ASSERTD (q >= MPFR_PREC_MIN && q < MPFR_PREC (y));
+
+ /* TODO: perform the rounding in place. */
+ mpfr_init2 (dest, q);
+ /* Round y in dest */
+ MPFR_SET_EXP (dest, MPFR_GET_EXP (y));
+ MPFR_SET_SIGN (dest, sign);
+ MPFR_RNDRAW_EVEN (inexact, dest,
+ MPFR_MANT (y), MPFR_PREC (y), rnd, sign,
+ MPFR_SET_EXP (dest, MPFR_GET_EXP (dest) + 1));
+ if (MPFR_LIKELY (old_inexact != 0))
+ {
+ if (MPFR_UNLIKELY (rnd == MPFR_RNDN &&
+ (inexact == MPFR_EVEN_INEX ||
+ inexact == -MPFR_EVEN_INEX)))
+ {
+ /* if both roundings are in the same direction, we have to go
+ back in the other direction */
+ if (SAME_SIGN (inexact, old_inexact))
+ {
+ if (SAME_SIGN (inexact, MPFR_INT_SIGN (y)))
+ mpfr_nexttozero (dest);
+ else
+ mpfr_nexttoinf (dest);
+ inexact = -inexact;
+ }
+ }
+ else if (MPFR_UNLIKELY (inexact == 0))
+ inexact = old_inexact;
+ }
+
+ inex2 = mpfr_set (y, dest, rnd);
+ MPFR_ASSERTN (inex2 == 0);
+ MPFR_ASSERTN (MPFR_IS_PURE_FP (y));
+ mpfr_clear (dest);
+
+ MPFR_RET (inexact);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/sum.c b/Build/source/libs/mpfr/mpfr-src/src/sum.c
new file mode 100644
index 00000000000..9cbcbfac7f0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/sum.c
@@ -0,0 +1,316 @@
+/* Sum -- efficiently sum a list of floating-point numbers
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Reference: James Demmel and Yozo Hida, Fast and accurate floating-point
+ summation with application to computational geometry, Numerical Algorithms,
+ volume 37, number 1-4, pages 101--112, 2004. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* I would really like to use "mpfr_srcptr const []" but the norm is buggy:
+ it doesn't automaticaly cast a "mpfr_ptr []" to "mpfr_srcptr const []"
+ if necessary. So the choice are:
+ mpfr_s ** : ok
+ mpfr_s *const* : ok
+ mpfr_s **const : ok
+ mpfr_s *const*const : ok
+ const mpfr_s *const* : no
+ const mpfr_s **const : no
+ const mpfr_s *const*const: no
+ VL: this is not a bug, but a feature. See the reason here:
+ http://c-faq.com/ansi/constmismatch.html
+*/
+static void heap_sort (mpfr_srcptr *const, unsigned long, mpfr_srcptr *);
+static void count_sort (mpfr_srcptr *const, unsigned long, mpfr_srcptr *,
+ mpfr_exp_t, mpfr_uexp_t);
+
+/* Either sort the tab in perm and returns 0
+ Or returns 1 for +INF, -1 for -INF and 2 for NAN */
+int
+mpfr_sum_sort (mpfr_srcptr *const tab, unsigned long n, mpfr_srcptr *perm)
+{
+ mpfr_exp_t min, max;
+ mpfr_uexp_t exp_num;
+ unsigned long i;
+ int sign_inf;
+
+ sign_inf = 0;
+ min = MPFR_EMIN_MAX;
+ max = MPFR_EMAX_MIN;
+ for (i = 0; i < n; i++)
+ {
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (tab[i])))
+ {
+ if (MPFR_IS_NAN (tab[i]))
+ return 2; /* Return NAN code */
+ else if (MPFR_IS_INF (tab[i]))
+ {
+ if (sign_inf == 0) /* No previous INF */
+ sign_inf = MPFR_SIGN (tab[i]);
+ else if (sign_inf != MPFR_SIGN (tab[i]))
+ return 2; /* Return NAN */
+ }
+ }
+ else
+ {
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (tab[i]));
+ if (MPFR_GET_EXP (tab[i]) < min)
+ min = MPFR_GET_EXP(tab[i]);
+ if (MPFR_GET_EXP (tab[i]) > max)
+ max = MPFR_GET_EXP(tab[i]);
+ }
+ }
+ if (MPFR_UNLIKELY (sign_inf != 0))
+ return sign_inf;
+
+ exp_num = max - min + 1;
+ /* FIXME : better test */
+ if (exp_num > n * MPFR_INT_CEIL_LOG2 (n))
+ heap_sort (tab, n, perm);
+ else
+ count_sort (tab, n, perm, min, exp_num);
+ return 0;
+}
+
+#define GET_EXP1(x) (MPFR_IS_ZERO (x) ? min : MPFR_GET_EXP (x))
+/* Performs a count sort of the entries */
+static void
+count_sort (mpfr_srcptr *const tab, unsigned long n,
+ mpfr_srcptr *perm, mpfr_exp_t min, mpfr_uexp_t exp_num)
+{
+ unsigned long *account;
+ unsigned long target_rank, i;
+ MPFR_TMP_DECL(marker);
+
+ /* Reserve a place for potential 0 (with EXP min-1)
+ If there is no zero, we only lose one unused entry */
+ min--;
+ exp_num++;
+
+ /* Performs a counting sort of the entries */
+ MPFR_TMP_MARK (marker);
+ account = (unsigned long *) MPFR_TMP_ALLOC (exp_num * sizeof *account);
+ for (i = 0; i < exp_num; i++)
+ account[i] = 0;
+ for (i = 0; i < n; i++)
+ account[GET_EXP1 (tab[i]) - min]++;
+ for (i = exp_num - 1; i >= 1; i--)
+ account[i - 1] += account[i];
+ for (i = 0; i < n; i++)
+ {
+ target_rank = --account[GET_EXP1 (tab[i]) - min];
+ perm[target_rank] = tab[i];
+ }
+ MPFR_TMP_FREE (marker);
+}
+
+
+#define GET_EXP2(x) (MPFR_IS_ZERO (x) ? MPFR_EMIN_MIN : MPFR_GET_EXP (x))
+
+/* Performs a heap sort of the entries */
+static void
+heap_sort (mpfr_srcptr *const tab, unsigned long n, mpfr_srcptr *perm)
+{
+ unsigned long dernier_traite;
+ unsigned long i, pere;
+ mpfr_srcptr tmp;
+ unsigned long fils_gauche, fils_droit, fils_indigne;
+ /* Reminder of a heap structure :
+ node(i) has for left son node(2i +1) and right son node(2i)
+ and father(node(i)) = node((i - 1) / 2)
+ */
+
+ /* initialize the permutation to identity */
+ for (i = 0; i < n; i++)
+ perm[i] = tab[i];
+
+ /* insertion phase */
+ for (dernier_traite = 1; dernier_traite < n; dernier_traite++)
+ {
+ i = dernier_traite;
+ while (i > 0)
+ {
+ pere = (i - 1) / 2;
+ if (GET_EXP2 (perm[pere]) > GET_EXP2 (perm[i]))
+ {
+ tmp = perm[pere];
+ perm[pere] = perm[i];
+ perm[i] = tmp;
+ i = pere;
+ }
+ else
+ break;
+ }
+ }
+
+ /* extraction phase */
+ for (dernier_traite = n - 1; dernier_traite > 0; dernier_traite--)
+ {
+ tmp = perm[0];
+ perm[0] = perm[dernier_traite];
+ perm[dernier_traite] = tmp;
+
+ i = 0;
+ while (1)
+ {
+ fils_gauche = 2 * i + 1;
+ fils_droit = fils_gauche + 1;
+ if (fils_gauche < dernier_traite)
+ {
+ if (fils_droit < dernier_traite)
+ {
+ if (GET_EXP2(perm[fils_droit]) < GET_EXP2(perm[fils_gauche]))
+ fils_indigne = fils_droit;
+ else
+ fils_indigne = fils_gauche;
+
+ if (GET_EXP2 (perm[i]) > GET_EXP2 (perm[fils_indigne]))
+ {
+ tmp = perm[i];
+ perm[i] = perm[fils_indigne];
+ perm[fils_indigne] = tmp;
+ i = fils_indigne;
+ }
+ else
+ break;
+ }
+ else /* on a un fils gauche, pas de fils droit */
+ {
+ if (GET_EXP2 (perm[i]) > GET_EXP2 (perm[fils_gauche]))
+ {
+ tmp = perm[i];
+ perm[i] = perm[fils_gauche];
+ perm[fils_gauche] = tmp;
+ }
+ break;
+ }
+ }
+ else /* on n'a pas de fils */
+ break;
+ }
+ }
+}
+
+
+/* Sum a list of float with order given by permutation perm,
+ * intermediate size set to F.
+ * Internal use function.
+ */
+static int
+sum_once (mpfr_ptr ret, mpfr_srcptr *const tab, unsigned long n, mpfr_prec_t F)
+{
+ mpfr_t sum;
+ unsigned long i;
+ int error_trap;
+
+ MPFR_ASSERTD (n >= 2);
+
+ mpfr_init2 (sum, F);
+ error_trap = mpfr_set (sum, tab[0], MPFR_RNDN);
+ for (i = 1; i < n - 1; i++)
+ {
+ MPFR_ASSERTD (!MPFR_IS_NAN (sum) && !MPFR_IS_INF (sum));
+ error_trap |= mpfr_add (sum, sum, tab[i], MPFR_RNDN);
+ }
+ error_trap |= mpfr_add (ret, sum, tab[n - 1], MPFR_RNDN);
+ mpfr_clear (sum);
+ return error_trap;
+}
+
+/* Sum a list of floating-point numbers.
+ */
+
+int
+mpfr_sum (mpfr_ptr ret, mpfr_ptr *const tab_p, unsigned long n, mpfr_rnd_t rnd)
+{
+ mpfr_t cur_sum;
+ mpfr_prec_t prec;
+ mpfr_srcptr *perm, *const tab = (mpfr_srcptr *) tab_p;
+ int k, error_trap;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_TMP_DECL (marker);
+
+ if (MPFR_UNLIKELY (n <= 1))
+ {
+ if (n < 1)
+ {
+ MPFR_SET_ZERO (ret);
+ MPFR_SET_POS (ret);
+ return 0;
+ }
+ else
+ return mpfr_set (ret, tab[0], rnd);
+ }
+
+ /* Sort and treat special cases */
+ MPFR_TMP_MARK (marker);
+ perm = (mpfr_srcptr *) MPFR_TMP_ALLOC (n * sizeof *perm);
+ error_trap = mpfr_sum_sort (tab, n, perm);
+ /* Check if there was a NAN or a INF */
+ if (MPFR_UNLIKELY (error_trap != 0))
+ {
+ MPFR_TMP_FREE (marker);
+ if (error_trap == 2)
+ {
+ MPFR_SET_NAN (ret);
+ MPFR_RET_NAN;
+ }
+ MPFR_SET_INF (ret);
+ MPFR_SET_SIGN (ret, error_trap);
+ MPFR_RET (0);
+ }
+
+ /* Initial precision */
+ prec = MAX (MPFR_PREC (tab[0]), MPFR_PREC (ret));
+ k = MPFR_INT_CEIL_LOG2 (n) + 1;
+ prec += k + 2;
+ mpfr_init2 (cur_sum, prec);
+
+ /* Ziv Loop */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ error_trap = sum_once (cur_sum, perm, n, prec + k);
+ if (MPFR_LIKELY (error_trap == 0 ||
+ (!MPFR_IS_ZERO (cur_sum) &&
+ mpfr_can_round (cur_sum,
+ MPFR_GET_EXP (cur_sum) - prec + 2,
+ MPFR_RNDN, rnd, MPFR_PREC (ret)))))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (cur_sum, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+ MPFR_TMP_FREE (marker);
+
+ error_trap |= mpfr_set (ret, cur_sum, rnd);
+ mpfr_clear (cur_sum);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ error_trap |= mpfr_check_range (ret, 0, rnd);
+ return error_trap; /* It doesn't return the ternary value */
+}
+
+/* __END__ */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/swap.c b/Build/source/libs/mpfr/mpfr-src/src/swap.c
new file mode 100644
index 00000000000..99f2a507af6
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/swap.c
@@ -0,0 +1,54 @@
+/* mpfr_swap (U, V) -- Swap U and V.
+
+Copyright 2000-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Using memcpy is a few slower than swapping by hand. */
+
+void
+mpfr_swap (mpfr_ptr u, mpfr_ptr v)
+{
+ mpfr_prec_t p1, p2;
+ mpfr_sign_t s1, s2;
+ mpfr_exp_t e1, e2;
+ mp_limb_t *m1, *m2;
+
+ p1 = MPFR_PREC(u);
+ p2 = MPFR_PREC(v);
+ MPFR_PREC(v) = p1;
+ MPFR_PREC(u) = p2;
+
+ s1 = MPFR_SIGN(u);
+ s2 = MPFR_SIGN(v);
+ MPFR_SIGN(v) = s1;
+ MPFR_SIGN(u) = s2;
+
+ e1 = MPFR_EXP(u);
+ e2 = MPFR_EXP(v);
+ MPFR_EXP(v) = e1;
+ MPFR_EXP(u) = e2;
+
+ m1 = MPFR_MANT(u);
+ m2 = MPFR_MANT(v);
+ MPFR_MANT(v) = m1;
+ MPFR_MANT(u) = m2;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/tan.c b/Build/source/libs/mpfr/mpfr-src/src/tan.c
new file mode 100644
index 00000000000..d4274cb4466
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/tan.c
@@ -0,0 +1,89 @@
+/* mpfr_tan -- tangent of a floating-point number
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* computes tan(x) = sign(x)*sqrt(1/cos(x)^2-1) */
+int
+mpfr_tan (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_prec_t precy, m;
+ int inexact;
+ mpfr_t s, c;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_GROUP_DECL (group);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
+ {
+ if (MPFR_IS_NAN(x) || MPFR_IS_INF(x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else /* x is zero */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(x));
+ MPFR_SET_ZERO(y);
+ MPFR_SET_SAME_SIGN(y, x);
+ MPFR_RET(0);
+ }
+ }
+
+ /* tan(x) = x + x^3/3 + ... so the error is < 2^(3*EXP(x)-1) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -2 * MPFR_GET_EXP (x), 1, 1,
+ rnd_mode, {});
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Compute initial precision */
+ precy = MPFR_PREC (y);
+ m = precy + MPFR_INT_CEIL_LOG2 (precy) + 13;
+ MPFR_ASSERTD (m >= 2); /* needed for the error analysis in algorithms.tex */
+
+ MPFR_GROUP_INIT_2 (group, m, s, c);
+ MPFR_ZIV_INIT (loop, m);
+ for (;;)
+ {
+ /* The only way to get an overflow is to get ~ Pi/2
+ But the result will be ~ 2^Prec(y). */
+ mpfr_sin_cos (s, c, x, MPFR_RNDN); /* err <= 1/2 ulp on s and c */
+ mpfr_div (c, s, c, MPFR_RNDN); /* err <= 4 ulps */
+ MPFR_ASSERTD (!MPFR_IS_SINGULAR (c));
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (c, m - 2, precy, rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, m);
+ MPFR_GROUP_REPREC_2 (group, m, s, c);
+ }
+ MPFR_ZIV_FREE (loop);
+ inexact = mpfr_set (y, c, rnd_mode);
+ MPFR_GROUP_CLEAR (group);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/tanh.c b/Build/source/libs/mpfr/mpfr-src/src/tanh.c
new file mode 100644
index 00000000000..077dd2e7498
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/tanh.c
@@ -0,0 +1,153 @@
+/* mpfr_tanh -- hyperbolic tangent
+
+Copyright 2001-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_tanh (mpfr_ptr y, mpfr_srcptr xt , mpfr_rnd_t rnd_mode)
+{
+ /****** Declaration ******/
+ mpfr_t x;
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (xt), mpfr_log_prec, xt, rnd_mode),
+ ("y[%Pu]=%.*Rg inexact=%d",
+ mpfr_get_prec (y), mpfr_log_prec, y, inexact));
+
+ /* Special value checking */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (xt)))
+ {
+ if (MPFR_IS_NAN (xt))
+ {
+ MPFR_SET_NAN (y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (xt))
+ {
+ /* tanh(inf) = 1 && tanh(-inf) = -1 */
+ return mpfr_set_si (y, MPFR_INT_SIGN (xt), rnd_mode);
+ }
+ else /* tanh (0) = 0 and xt is zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO(xt));
+ MPFR_SET_ZERO (y);
+ MPFR_SET_SAME_SIGN (y, xt);
+ MPFR_RET (0);
+ }
+ }
+
+ /* tanh(x) = x - x^3/3 + ... so the error is < 2^(3*EXP(x)-1) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, xt, -2 * MPFR_GET_EXP (xt), 1, 0,
+ rnd_mode, {});
+
+ MPFR_TMP_INIT_ABS (x, xt);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* General case */
+ {
+ /* Declaration of the intermediary variable */
+ mpfr_t t, te;
+ mpfr_exp_t d;
+
+ /* Declaration of the size variable */
+ mpfr_prec_t Ny = MPFR_PREC(y); /* target precision */
+ mpfr_prec_t Nt; /* working precision */
+ long int err; /* error */
+ int sign = MPFR_SIGN (xt);
+ MPFR_ZIV_DECL (loop);
+ MPFR_GROUP_DECL (group);
+
+ /* First check for BIG overflow of exp(2*x):
+ For x > 0, exp(2*x) > 2^(2*x)
+ If 2 ^(2*x) > 2^emax or x>emax/2, there is an overflow */
+ if (MPFR_UNLIKELY (mpfr_cmp_si (x, __gmpfr_emax/2) >= 0)) {
+ /* initialise of intermediary variables
+ since 'set_one' label assumes the variables have been
+ initialize */
+ MPFR_GROUP_INIT_2 (group, MPFR_PREC_MIN, t, te);
+ goto set_one;
+ }
+
+ /* Compute the precision of intermediary variable */
+ /* The optimal number of bits: see algorithms.tex */
+ Nt = Ny + MPFR_INT_CEIL_LOG2 (Ny) + 4;
+ /* if x is small, there will be a cancellation in exp(2x)-1 */
+ if (MPFR_GET_EXP (x) < 0)
+ Nt += -MPFR_GET_EXP (x);
+
+ /* initialise of intermediary variable */
+ MPFR_GROUP_INIT_2 (group, Nt, t, te);
+
+ MPFR_ZIV_INIT (loop, Nt);
+ for (;;) {
+ /* tanh = (exp(2x)-1)/(exp(2x)+1) */
+ mpfr_mul_2ui (te, x, 1, MPFR_RNDN); /* 2x */
+ /* since x > 0, we can only have an overflow */
+ mpfr_exp (te, te, MPFR_RNDN); /* exp(2x) */
+ if (MPFR_UNLIKELY (MPFR_IS_INF (te))) {
+ set_one:
+ inexact = MPFR_FROM_SIGN_TO_INT (sign);
+ mpfr_set4 (y, __gmpfr_one, MPFR_RNDN, sign);
+ if (MPFR_IS_LIKE_RNDZ (rnd_mode, MPFR_IS_NEG_SIGN (sign)))
+ {
+ inexact = -inexact;
+ mpfr_nexttozero (y);
+ }
+ break;
+ }
+ d = MPFR_GET_EXP (te); /* For Error calculation */
+ mpfr_add_ui (t, te, 1, MPFR_RNDD); /* exp(2x) + 1*/
+ mpfr_sub_ui (te, te, 1, MPFR_RNDU); /* exp(2x) - 1*/
+ d = d - MPFR_GET_EXP (te);
+ mpfr_div (t, te, t, MPFR_RNDN); /* (exp(2x)-1)/(exp(2x)+1)*/
+
+ /* Calculation of the error */
+ d = MAX(3, d + 1);
+ err = Nt - (d + 1);
+
+ if (MPFR_LIKELY ((d <= Nt / 2) && MPFR_CAN_ROUND (t, err, Ny, rnd_mode)))
+ {
+ inexact = mpfr_set4 (y, t, rnd_mode, sign);
+ break;
+ }
+
+ /* if t=1, we still can round since |sinh(x)| < 1 */
+ if (MPFR_GET_EXP (t) == 1)
+ goto set_one;
+
+ /* Actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, Nt);
+ MPFR_GROUP_REPREC_2 (group, Nt, t, te);
+ }
+ MPFR_ZIV_FREE (loop);
+ MPFR_GROUP_CLEAR (group);
+ }
+ MPFR_SAVE_EXPO_FREE (expo);
+ inexact = mpfr_check_range (y, inexact, rnd_mode);
+
+ return inexact;
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/uceil_exp2.c b/Build/source/libs/mpfr/mpfr-src/src/uceil_exp2.c
new file mode 100644
index 00000000000..64cb017cbcc
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/uceil_exp2.c
@@ -0,0 +1,65 @@
+/* __gmpfr_ceil_exp2 - returns y >= 2^d
+
+Copyright 1999-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* returns y >= 2^d, assuming that d <= 1024
+ for d integer, returns exactly 2^d
+*/
+double
+__gmpfr_ceil_exp2 (double d)
+{
+ long exp;
+#if _GMP_IEEE_FLOATS
+ union ieee_double_extract x;
+#else
+ struct {double d;} x;
+#endif
+
+ MPFR_ASSERTN(d <= 1024.0);
+ exp = (long) d;
+ if (d != (double) exp)
+ exp++;
+ /* now exp = ceil(d) */
+ x.d = 1.0;
+#if _GMP_IEEE_FLOATS
+ x.s.exp = exp <= -1022 ? 1 : 1023 + exp;
+#else
+ if (exp >= 0)
+ {
+ while (exp != 0)
+ {
+ x.d *= 2.0;
+ exp--;
+ }
+ }
+ else
+ {
+ while (exp != 0)
+ {
+ x.d *= (1.0 / 2.0);
+ exp++;
+ }
+ }
+#endif
+ return x.d;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/uceil_log2.c b/Build/source/libs/mpfr/mpfr-src/src/uceil_log2.c
new file mode 100644
index 00000000000..417df9dde04
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/uceil_log2.c
@@ -0,0 +1,63 @@
+/* __gmpfr_ceil_log2 - returns ceil(log(d)/log(2))
+
+Copyright 1999-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* returns ceil(log(d)/log(2)) if d > 0,
+ -1023 if d = +0,
+ and floor(log(-d)/log(2))+1 if d < 0*/
+long
+__gmpfr_ceil_log2 (double d)
+{
+ long exp;
+#if _GMP_IEEE_FLOATS
+ union ieee_double_extract x;
+
+ x.d = d;
+ exp = x.s.exp - 1023;
+ x.s.exp = 1023; /* value for 1 <= d < 2 */
+ if (x.d != 1.0) /* d: not a power of two? */
+ exp++;
+ return exp;
+#else
+ double m;
+
+ if (d < 0.0)
+ return __gmpfr_floor_log2(-d)+1;
+ else if (d == 0.0)
+ return -1023;
+ else if (d >= 1.0)
+ {
+ exp = 0;
+ for( m= 1.0 ; m < d ; m *=2.0 )
+ exp++;
+ }
+ else
+ {
+ exp = 1;
+ for( m= 1.0 ; m >= d ; m *= (1.0/2.0) )
+ exp--;
+ }
+#endif
+ return exp;
+}
+
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ufloor_log2.c b/Build/source/libs/mpfr/mpfr-src/src/ufloor_log2.c
new file mode 100644
index 00000000000..0ad6d8522d2
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ufloor_log2.c
@@ -0,0 +1,53 @@
+/* __gmpfr_floor_log2 - returns floor(log(d)/log(2))
+
+Copyright 1999-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* returns floor(log2(d)) */
+long
+__gmpfr_floor_log2 (double d)
+{
+#if _GMP_IEEE_FLOATS
+ union ieee_double_extract x;
+
+ x.d = d;
+ return (long) x.s.exp - 1023;
+#else
+ long exp;
+ double m;
+
+ MPFR_ASSERTD (d >= 0);
+ if (d >= 1.0)
+ {
+ exp = -1;
+ for( m= 1.0 ; m <= d ; m *=2.0 )
+ exp++;
+ }
+ else
+ {
+ exp = 0;
+ for( m= 1.0 ; m > d ; m *= (1.0/2.0) )
+ exp--;
+ }
+ return exp;
+#endif
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ui_div.c b/Build/source/libs/mpfr/mpfr-src/src/ui_div.c
new file mode 100644
index 00000000000..ac1efb3b984
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ui_div.c
@@ -0,0 +1,113 @@
+/* mpfr_ui_div -- divide a machine integer by a floating-point number
+ mpfr_si_div -- divide a machine number by a floating-point number
+
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_ui_div (mpfr_ptr y, unsigned long int u, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ MPFR_LOG_FUNC
+ (("u=%lu x[%Pu]=%.*Rg rnd=%d",
+ u, mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg", mpfr_get_prec(y), mpfr_log_prec, y));
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
+ {
+ if (MPFR_IS_NAN(x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(x)) /* u/Inf = 0 */
+ {
+ MPFR_SET_ZERO(y);
+ MPFR_SET_SAME_SIGN(y,x);
+ MPFR_RET(0);
+ }
+ else /* u / 0 */
+ {
+ MPFR_ASSERTD(MPFR_IS_ZERO(x));
+ if (u)
+ {
+ /* u > 0, so y = sign(x) * Inf */
+ MPFR_SET_SAME_SIGN(y, x);
+ MPFR_SET_INF(y);
+ mpfr_set_divby0 ();
+ MPFR_RET(0);
+ }
+ else
+ {
+ /* 0 / 0 */
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ }
+ }
+ else if (MPFR_LIKELY(u != 0))
+ {
+ mpfr_t uu;
+ mp_limb_t up[1];
+ int cnt;
+ int inex;
+
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_TMP_INIT1(up, uu, GMP_NUMB_BITS);
+ MPFR_ASSERTN(u == (mp_limb_t) u);
+ count_leading_zeros(cnt, (mp_limb_t) u);
+ up[0] = (mp_limb_t) u << cnt;
+
+ /* Optimization note: Exponent save/restore operations may be
+ removed if mpfr_div works even when uu is out-of-range. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
+ inex = mpfr_div (y, uu, x, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inex, rnd_mode);
+ }
+ else /* u = 0, and x != 0 */
+ {
+ MPFR_SET_ZERO(y); /* if u=0, then set y to 0 */
+ MPFR_SET_SAME_SIGN(y, x); /* u considered as +0: sign(+0/x) = sign(x) */
+ MPFR_RET(0);
+ }
+}
+
+
+int
+mpfr_si_div (mpfr_ptr y, long int u, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ int res;
+
+ if (u >= 0)
+ res = mpfr_ui_div (y, u, x, rnd_mode);
+ else
+ {
+ res = -mpfr_ui_div (y, -u, x, MPFR_INVERT_RND(rnd_mode));
+ MPFR_CHANGE_SIGN (y);
+ }
+ return res;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ui_pow.c b/Build/source/libs/mpfr/mpfr-src/src/ui_pow.c
new file mode 100644
index 00000000000..b8b982184b0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ui_pow.c
@@ -0,0 +1,41 @@
+/* mpfr_ui_pow -- power of n function n^x
+
+Copyright 2001-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_ui_pow (mpfr_ptr y, unsigned long int n, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t t;
+ int inexact;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpfr_init2 (t, sizeof(n) * CHAR_BIT);
+ inexact = mpfr_set_ui (t, n, MPFR_RNDN);
+ MPFR_ASSERTN (!inexact);
+ inexact = mpfr_pow (y, t, x, rnd_mode);
+ mpfr_clear (t);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ui_pow_ui.c b/Build/source/libs/mpfr/mpfr-src/src/ui_pow_ui.c
new file mode 100644
index 00000000000..eabb1fba8b8
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ui_pow_ui.c
@@ -0,0 +1,95 @@
+/* mpfr_ui_pow_ui -- compute the power beetween two machine integer
+
+Copyright 1999-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+int
+mpfr_ui_pow_ui (mpfr_ptr x, unsigned long int y, unsigned long int n,
+ mpfr_rnd_t rnd)
+{
+ mpfr_exp_t err;
+ unsigned long m;
+ mpfr_t res;
+ mpfr_prec_t prec;
+ int size_n;
+ int inexact;
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ if (MPFR_UNLIKELY (n <= 1))
+ {
+ if (n == 1)
+ return mpfr_set_ui (x, y, rnd); /* y^1 = y */
+ else
+ return mpfr_set_ui (x, 1, rnd); /* y^0 = 1 for any y */
+ }
+ else if (MPFR_UNLIKELY (y <= 1))
+ {
+ if (y == 1)
+ return mpfr_set_ui (x, 1, rnd); /* 1^n = 1 for any n > 0 */
+ else
+ return mpfr_set_ui (x, 0, rnd); /* 0^n = 0 for any n > 0 */
+ }
+
+ for (size_n = 0, m = n; m; size_n++, m >>= 1);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ prec = MPFR_PREC (x) + 3 + size_n;
+ mpfr_init2 (res, prec);
+
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ int i = size_n;
+
+ inexact = mpfr_set_ui (res, y, MPFR_RNDU);
+ err = 1;
+ /* now 2^(i-1) <= n < 2^i: i=1+floor(log2(n)) */
+ for (i -= 2; i >= 0; i--)
+ {
+ inexact |= mpfr_mul (res, res, res, MPFR_RNDU);
+ err++;
+ if (n & (1UL << i))
+ inexact |= mpfr_mul_ui (res, res, y, MPFR_RNDU);
+ }
+ /* since the loop is executed floor(log2(n)) times,
+ we have err = 1+floor(log2(n)).
+ Since prec >= MPFR_PREC(x) + 4 + floor(log2(n)), prec > err */
+ err = prec - err;
+
+ if (MPFR_LIKELY (inexact == 0
+ || MPFR_CAN_ROUND (res, err, MPFR_PREC (x), rnd)))
+ break;
+
+ /* Actualisation of the precision */
+ MPFR_ZIV_NEXT (loop, prec);
+ mpfr_set_prec (res, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inexact = mpfr_set (x, res, rnd);
+
+ mpfr_clear (res);
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (x, inexact, rnd);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/ui_sub.c b/Build/source/libs/mpfr/mpfr-src/src/ui_sub.c
new file mode 100644
index 00000000000..bb8166ef234
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/ui_sub.c
@@ -0,0 +1,78 @@
+/* mpfr_ui_sub -- subtract a floating-point number from an integer
+
+Copyright 2000-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_ui_sub (mpfr_ptr y, unsigned long int u, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
+{
+ MPFR_LOG_FUNC
+ (("u=%lu x[%Pu]=%.*Rg rnd=%d",
+ u, mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode),
+ ("y[%Pu]=%.*Rg", mpfr_get_prec(y), mpfr_log_prec, y));
+
+ if (MPFR_UNLIKELY (u == 0))
+ return mpfr_neg (y, x, rnd_mode);
+
+ if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
+ {
+ if (MPFR_IS_NAN(x))
+ {
+ MPFR_SET_NAN(y);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF(x))
+ {
+ /* u - Inf = -Inf and u - -Inf = +Inf */
+ MPFR_SET_INF(y);
+ MPFR_SET_OPPOSITE_SIGN(y,x);
+ MPFR_RET(0); /* +/-infinity is exact */
+ }
+ else /* x is zero */
+ /* u - 0 = u */
+ return mpfr_set_ui(y, u, rnd_mode);
+ }
+ else
+ {
+ mpfr_t uu;
+ mp_limb_t up[1];
+ int cnt;
+ int inex;
+
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_TMP_INIT1 (up, uu, GMP_NUMB_BITS);
+ MPFR_ASSERTN(u == (mp_limb_t) u);
+ count_leading_zeros (cnt, (mp_limb_t) u);
+ up[0] = (mp_limb_t) u << cnt;
+
+ /* Optimization note: Exponent save/restore operations may be
+ removed if mpfr_sub works even when uu is out-of-range. */
+ MPFR_SAVE_EXPO_MARK (expo);
+ MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
+ inex = mpfr_sub (y, uu, x, rnd_mode);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range(y, inex, rnd_mode);
+ }
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/urandom.c b/Build/source/libs/mpfr/mpfr-src/src/urandom.c
new file mode 100644
index 00000000000..0610eb1dbd4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/urandom.c
@@ -0,0 +1,147 @@
+/* mpfr_urandom (rop, state, rnd_mode) -- Generate a uniform pseudorandom
+ real number between 0 and 1 (exclusive) and round it to the precision of rop
+ according to the given rounding mode.
+
+Copyright 2000-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+
+/* generate one random bit */
+static int
+random_rounding_bit (gmp_randstate_t rstate)
+{
+ mp_limb_t r;
+
+ mpfr_rand_raw (&r, rstate, 1);
+ return r & MPFR_LIMB_ONE;
+}
+
+
+int
+mpfr_urandom (mpfr_ptr rop, gmp_randstate_t rstate, mpfr_rnd_t rnd_mode)
+{
+ mpfr_limb_ptr rp;
+ mpfr_prec_t nbits;
+ mp_size_t nlimbs;
+ mp_size_t n;
+ mpfr_exp_t exp;
+ mpfr_exp_t emin;
+ int cnt;
+ int inex;
+
+ rp = MPFR_MANT (rop);
+ nbits = MPFR_PREC (rop);
+ nlimbs = MPFR_LIMB_SIZE (rop);
+ MPFR_SET_POS (rop);
+ exp = 0;
+ emin = mpfr_get_emin ();
+ if (MPFR_UNLIKELY (emin > 0))
+ {
+ if (rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDA
+ || (emin == 1 && rnd_mode == MPFR_RNDN
+ && random_rounding_bit (rstate)))
+ {
+ mpfr_set_ui_2exp (rop, 1, emin - 1, rnd_mode);
+ return +1;
+ }
+ else
+ {
+ MPFR_SET_ZERO (rop);
+ return -1;
+ }
+ }
+
+ /* Exponent */
+#define DRAW_BITS 8 /* we draw DRAW_BITS at a time */
+ cnt = DRAW_BITS;
+ MPFR_ASSERTN(DRAW_BITS <= GMP_NUMB_BITS);
+ while (cnt == DRAW_BITS)
+ {
+ /* generate DRAW_BITS in rp[0] */
+ mpfr_rand_raw (rp, rstate, DRAW_BITS);
+ if (MPFR_UNLIKELY (rp[0] == 0))
+ cnt = DRAW_BITS;
+ else
+ {
+ count_leading_zeros (cnt, rp[0]);
+ cnt -= GMP_NUMB_BITS - DRAW_BITS;
+ }
+
+ if (MPFR_UNLIKELY (exp < emin + cnt))
+ {
+ /* To get here, we have been drawing more than -emin zeros
+ in a row, then return 0 or the smallest representable
+ positive number.
+
+ The rounding to nearest mode is subtle:
+ If exp - cnt == emin - 1, the rounding bit is set, except
+ if cnt == DRAW_BITS in which case the rounding bit is
+ outside rp[0] and must be generated. */
+ if (rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDA
+ || (rnd_mode == MPFR_RNDN && cnt == exp - emin - 1
+ && (cnt != DRAW_BITS || random_rounding_bit (rstate))))
+ {
+ mpfr_set_ui_2exp (rop, 1, emin - 1, rnd_mode);
+ return +1;
+ }
+ else
+ {
+ MPFR_SET_ZERO (rop);
+ return -1;
+ }
+ }
+ exp -= cnt;
+ }
+ MPFR_EXP (rop) = exp; /* Warning: may be outside the current
+ exponent range */
+
+
+ /* Significand: we need generate only nbits-1 bits, since the most
+ significant is 1 */
+ mpfr_rand_raw (rp, rstate, nbits - 1);
+ n = nlimbs * GMP_NUMB_BITS - nbits;
+ if (MPFR_LIKELY (n != 0)) /* this will put the low bits to zero */
+ mpn_lshift (rp, rp, nlimbs, n);
+
+ /* Set the msb to 1 since it was fixed by the exponent choice */
+ rp[nlimbs - 1] |= MPFR_LIMB_HIGHBIT;
+
+ /* Rounding */
+ if (rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDA
+ || (rnd_mode == MPFR_RNDN && random_rounding_bit (rstate)))
+ {
+ /* Take care of the exponent range: it may have been reduced */
+ if (exp < emin)
+ mpfr_set_ui_2exp (rop, 1, emin - 1, rnd_mode);
+ else if (exp > mpfr_get_emax ())
+ mpfr_set_inf (rop, +1); /* overflow, flag set by mpfr_check_range */
+ else
+ mpfr_nextabove (rop);
+ inex = +1;
+ }
+ else
+ inex = -1;
+
+ return mpfr_check_range (rop, inex, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/urandomb.c b/Build/source/libs/mpfr/mpfr-src/src/urandomb.c
new file mode 100644
index 00000000000..3d1c12bf93c
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/urandomb.c
@@ -0,0 +1,110 @@
+/* mpfr_urandomb (rop, state, nbits) -- Generate a uniform pseudorandom
+ real number between 0 (inclusive) and 1 (exclusive) of size NBITS,
+ using STATE as the random state previously initialized by a call to
+ gmp_randinit_lc_2exp_size().
+
+Copyright 2000-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/* generate nbits random bits into mp[], assuming mp was allocated to contain
+ a sufficient number of limbs */
+void
+mpfr_rand_raw (mpfr_limb_ptr mp, gmp_randstate_t rstate,
+ mpfr_prec_t nbits)
+{
+ mpz_t z;
+
+ MPFR_ASSERTN (nbits >= 1);
+ /* To be sure to avoid the potential allocation of mpz_urandomb */
+ ALLOC(z) = SIZ(z) = MPFR_PREC2LIMBS (nbits);
+ PTR(z) = mp;
+#if __MPFR_GMP(5,0,0)
+ /* Check for integer overflow (unless mp_bitcnt_t is signed,
+ but according to the GMP manual, this shouldn't happen).
+ Note: mp_bitcnt_t has been introduced in GMP 5.0.0. */
+ MPFR_ASSERTN ((mp_bitcnt_t) -1 < 0 || nbits <= (mp_bitcnt_t) -1);
+#endif
+ mpz_urandomb (z, rstate, nbits);
+}
+
+int
+mpfr_urandomb (mpfr_ptr rop, gmp_randstate_t rstate)
+{
+ mpfr_limb_ptr rp;
+ mpfr_prec_t nbits;
+ mp_size_t nlimbs;
+ mp_size_t k; /* number of high zero limbs */
+ mpfr_exp_t exp;
+ int cnt;
+
+ rp = MPFR_MANT (rop);
+ nbits = MPFR_PREC (rop);
+ nlimbs = MPFR_LIMB_SIZE (rop);
+ MPFR_SET_POS (rop);
+ cnt = nlimbs * GMP_NUMB_BITS - nbits;
+
+ /* Uniform non-normalized significand */
+ /* generate exactly nbits so that the random generator stays in the same
+ state, independent of the machine word size GMP_NUMB_BITS */
+ mpfr_rand_raw (rp, rstate, nbits);
+ if (MPFR_LIKELY (cnt != 0)) /* this will put the low bits to zero */
+ mpn_lshift (rp, rp, nlimbs, cnt);
+
+ /* Count the null significant limbs and remaining limbs */
+ exp = 0;
+ k = 0;
+ while (nlimbs != 0 && rp[nlimbs - 1] == 0)
+ {
+ k ++;
+ nlimbs --;
+ exp -= GMP_NUMB_BITS;
+ }
+
+ if (MPFR_LIKELY (nlimbs != 0)) /* otherwise value is zero */
+ {
+ count_leading_zeros (cnt, rp[nlimbs - 1]);
+ /* Normalization */
+ if (mpfr_set_exp (rop, exp - cnt))
+ {
+ /* If the exponent is not in the current exponent range, we
+ choose to return a NaN as this is probably a user error.
+ Indeed this can happen only if the exponent range has been
+ reduced to a very small interval and/or the precision is
+ huge (very unlikely). */
+ MPFR_SET_NAN (rop);
+ __gmpfr_flags |= MPFR_FLAGS_NAN; /* Can't use MPFR_RET_NAN */
+ return 1;
+ }
+ if (cnt != 0)
+ mpn_lshift (rp + k, rp, nlimbs, cnt);
+ else if (k != 0)
+ MPN_COPY (rp + k, rp, nlimbs);
+ if (k != 0)
+ MPN_ZERO (rp, k);
+ }
+ else
+ MPFR_SET_ZERO (rop);
+
+ return 0;
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/vasprintf.c b/Build/source/libs/mpfr/mpfr-src/src/vasprintf.c
new file mode 100644
index 00000000000..2d209dc1a6d
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/vasprintf.c
@@ -0,0 +1,2090 @@
+/* mpfr_vasprintf -- main function for the printf functions family
+ plus helper macros & functions.
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* The mpfr_printf-like functions are defined only if <stdarg.h> exists */
+#ifdef HAVE_STDARG
+
+#include <stdarg.h>
+
+#ifndef HAVE_VA_COPY
+# ifdef HAVE___VA_COPY
+# define va_copy(dst,src) __va_copy(dst, src)
+# else
+/* autoconf manual advocates this fallback.
+ This is also the solution chosen by gmp */
+# define va_copy(dst,src) \
+ do { memcpy(&(dst), &(src), sizeof(va_list)); } while (0)
+# endif /* HAVE___VA_COPY */
+#endif /* HAVE_VA_COPY */
+
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+
+#if defined (__cplusplus)
+#include <cstddef>
+#define __STDC_LIMIT_MACROS /* SIZE_MAX defined with <stdint.h> inclusion */
+#else
+#include <stddef.h> /* for ptrdiff_t */
+#endif
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-intmax.h"
+#include "mpfr-impl.h"
+
+/* Define a length modifier corresponding to mpfr_prec_t.
+ We use literal string instead of literal character so as to permit future
+ extension to long long int ("ll"). */
+#if _MPFR_PREC_FORMAT == 1
+#define MPFR_PREC_FORMAT_TYPE "h"
+#define MPFR_PREC_FORMAT_SIZE 1
+#elif _MPFR_PREC_FORMAT == 2
+#define MPFR_PREC_FORMAT_TYPE ""
+#define MPFR_PREC_FORMAT_SIZE 0
+#elif _MPFR_PREC_FORMAT == 3
+#define MPFR_PREC_FORMAT_TYPE "l"
+#define MPFR_PREC_FORMAT_SIZE 1
+#else
+#error "mpfr_prec_t size not supported"
+#endif
+
+/* Output for special values defined in the C99 standard */
+#define MPFR_NAN_STRING_LC "nan"
+#define MPFR_NAN_STRING_UC "NAN"
+#define MPFR_NAN_STRING_LENGTH 3
+#define MPFR_INF_STRING_LC "inf"
+#define MPFR_INF_STRING_UC "INF"
+#define MPFR_INF_STRING_LENGTH 3
+
+/* The implicit \0 is useless, but we do not write num_to_text[16]
+ otherwise g++ complains. */
+static const char num_to_text[] = "0123456789abcdef";
+
+/* some macro and functions for parsing format string */
+
+/* Read an integer; saturate to INT_MAX. */
+#define READ_INT(ap, format, specinfo, field, label_out) \
+ do { \
+ while (*(format)) \
+ { \
+ int _i; \
+ switch (*(format)) \
+ { \
+ case '0': \
+ case '1': \
+ case '2': \
+ case '3': \
+ case '4': \
+ case '5': \
+ case '6': \
+ case '7': \
+ case '8': \
+ case '9': \
+ specinfo.field = (specinfo.field <= INT_MAX / 10) ? \
+ specinfo.field * 10 : INT_MAX; \
+ _i = *(format) - '0'; \
+ MPFR_ASSERTN (_i >= 0 && _i <= 9); \
+ specinfo.field = (specinfo.field <= INT_MAX - _i) ? \
+ specinfo.field + _i : INT_MAX; \
+ ++(format); \
+ break; \
+ case '*': \
+ specinfo.field = va_arg ((ap), int); \
+ ++(format); \
+ default: \
+ goto label_out; \
+ } \
+ } \
+ } while (0)
+
+/* arg_t contains all the types described by the 'type' field of the
+ format string */
+enum arg_t
+ {
+ NONE,
+ CHAR_ARG,
+ SHORT_ARG,
+ LONG_ARG,
+ LONG_LONG_ARG,
+ INTMAX_ARG,
+ SIZE_ARG,
+ PTRDIFF_ARG,
+ LONG_DOUBLE_ARG,
+ MPF_ARG,
+ MPQ_ARG,
+ MP_LIMB_ARG,
+ MP_LIMB_ARRAY_ARG,
+ MPZ_ARG,
+ MPFR_PREC_ARG,
+ MPFR_ARG,
+ UNSUPPORTED
+ };
+
+/* Each conversion specification of the format string will be translated in a
+ printf_spec structure by the parser.
+ This structure is adapted from the GNU libc one. */
+struct printf_spec
+{
+ unsigned int alt:1; /* # flag */
+ unsigned int space:1; /* Space flag */
+ unsigned int left:1; /* - flag */
+ unsigned int showsign:1; /* + flag */
+ unsigned int group:1; /* ' flag */
+
+ int width; /* Width */
+ int prec; /* Precision */
+
+ enum arg_t arg_type; /* Type of argument */
+ mpfr_rnd_t rnd_mode; /* Rounding mode */
+ char spec; /* Conversion specifier */
+
+ char pad; /* Padding character */
+};
+
+static void
+specinfo_init (struct printf_spec *specinfo)
+{
+ specinfo->alt = 0;
+ specinfo->space = 0;
+ specinfo->left = 0;
+ specinfo->showsign = 0;
+ specinfo->group = 0;
+ specinfo->width = 0;
+ specinfo->prec = 0;
+ specinfo->arg_type = NONE;
+ specinfo->rnd_mode = MPFR_RNDN;
+ specinfo->spec = '\0';
+ specinfo->pad = ' ';
+}
+
+#define FLOATING_POINT_ARG_TYPE(at) \
+ ((at) == MPFR_ARG || (at) == MPF_ARG || (at) == LONG_DOUBLE_ARG)
+
+#define INTEGER_LIKE_ARG_TYPE(at) \
+ ((at) == SHORT_ARG || (at) == LONG_ARG || (at) == LONG_LONG_ARG \
+ || (at) == INTMAX_ARG || (at) == MPFR_PREC_ARG || (at) == MPZ_ARG \
+ || (at) == MPQ_ARG || (at) == MP_LIMB_ARG || (at) == MP_LIMB_ARRAY_ARG \
+ || (at) == CHAR_ARG || (at) == SIZE_ARG || (at) == PTRDIFF_ARG)
+
+static int
+specinfo_is_valid (struct printf_spec spec)
+{
+ switch (spec.spec)
+ {
+ case 'n':
+ return -1;
+
+ case 'a': case 'A':
+ case 'e': case 'E':
+ case 'f': case 'F':
+ case 'g': case 'G':
+ return (spec.arg_type == NONE
+ || FLOATING_POINT_ARG_TYPE (spec.arg_type));
+
+ case 'b':
+ return spec.arg_type == MPFR_ARG;
+
+ case 'd': case 'i':
+ case 'u': case 'o':
+ case 'x': case 'X':
+ return (spec.arg_type == NONE
+ || INTEGER_LIKE_ARG_TYPE (spec.arg_type));
+
+ case 'c':
+ case 's':
+ return (spec.arg_type == NONE || spec.arg_type == LONG_ARG);
+
+ case 'p':
+ return spec.arg_type == NONE;
+
+ default:
+ return 0;
+ }
+}
+
+static const char *
+parse_flags (const char *format, struct printf_spec *specinfo)
+{
+ while (*format)
+ {
+ switch (*format)
+ {
+ case '0':
+ specinfo->pad = '0';
+ ++format;
+ break;
+ case '#':
+ specinfo->alt = 1;
+ ++format;
+ break;
+ case '+':
+ specinfo->showsign = 1;
+ ++format;
+ break;
+ case ' ':
+ specinfo->space = 1;
+ ++format;
+ break;
+ case '-':
+ specinfo->left = 1;
+ ++format;
+ break;
+ case '\'':
+ /* Single UNIX Specification for thousand separator */
+ specinfo->group = 1;
+ ++format;
+ break;
+ default:
+ return format;
+ }
+ }
+ return format;
+}
+
+static const char *
+parse_arg_type (const char *format, struct printf_spec *specinfo)
+{
+ switch (*format)
+ {
+ case '\0':
+ break;
+ case 'h':
+ if (*++format == 'h')
+#ifndef NPRINTF_HH
+ {
+ ++format;
+ specinfo->arg_type = CHAR_ARG;
+ }
+#else
+ specinfo->arg_type = UNSUPPORTED;
+#endif
+ else
+ specinfo->arg_type = SHORT_ARG;
+ break;
+ case 'l':
+ if (*++format == 'l')
+ {
+ ++format;
+#if defined (HAVE_LONG_LONG) && !defined(NPRINTF_LL)
+ specinfo->arg_type = LONG_LONG_ARG;
+#else
+ specinfo->arg_type = UNSUPPORTED;
+#endif
+ break;
+ }
+ else
+ {
+ specinfo->arg_type = LONG_ARG;
+ break;
+ }
+ case 'j':
+ ++format;
+#if defined(_MPFR_H_HAVE_INTMAX_T) && !defined(NPRINTF_J)
+ specinfo->arg_type = INTMAX_ARG;
+#else
+ specinfo->arg_type = UNSUPPORTED;
+#endif
+ break;
+ case 'z':
+ ++format;
+ specinfo->arg_type = SIZE_ARG;
+ break;
+ case 't':
+ ++format;
+#ifndef NPRINTF_T
+ specinfo->arg_type = PTRDIFF_ARG;
+#else
+ specinfo->arg_type = UNSUPPORTED;
+#endif
+ break;
+ case 'L':
+ ++format;
+#ifndef NPRINTF_L
+ specinfo->arg_type = LONG_DOUBLE_ARG;
+#else
+ specinfo->arg_type = UNSUPPORTED;
+#endif
+ break;
+ case 'F':
+ ++format;
+ specinfo->arg_type = MPF_ARG;
+ break;
+ case 'Q':
+ ++format;
+ specinfo->arg_type = MPQ_ARG;
+ break;
+ case 'M':
+ ++format;
+ /* The 'M' specifier was added in gmp 4.2.0 */
+ specinfo->arg_type = MP_LIMB_ARG;
+ break;
+ case 'N':
+ ++format;
+ specinfo->arg_type = MP_LIMB_ARRAY_ARG;
+ break;
+ case 'Z':
+ ++format;
+ specinfo->arg_type = MPZ_ARG;
+ break;
+
+ /* mpfr specific specifiers */
+ case 'P':
+ ++format;
+ specinfo->arg_type = MPFR_PREC_ARG;
+ break;
+ case 'R':
+ ++format;
+ specinfo->arg_type = MPFR_ARG;
+ }
+ return format;
+}
+
+
+/* some macros and functions filling the buffer */
+
+/* CONSUME_VA_ARG removes from va_list AP the type expected by SPECINFO */
+
+/* With a C++ compiler wchar_t and enumeration in va_list are converted to
+ integer type : int, unsigned int, long or unsigned long (unfortunately,
+ this is implementation dependent).
+ We follow gmp which assumes in print/doprnt.c that wchar_t is converted
+ to int (because wchar_t <= int).
+ For wint_t, we assume that the case WINT_MAX < INT_MAX yields an
+ integer promotion. */
+#ifdef HAVE_WCHAR_H
+#if defined(WINT_MAX) && WINT_MAX < INT_MAX
+typedef int mpfr_va_wint; /* integer promotion */
+#else
+typedef wint_t mpfr_va_wint;
+#endif
+#define CASE_LONG_ARG(specinfo, ap) \
+ case LONG_ARG: \
+ if (((specinfo).spec == 'd') || ((specinfo).spec == 'i') \
+ || ((specinfo).spec == 'o') || ((specinfo).spec == 'u') \
+ || ((specinfo).spec == 'x') || ((specinfo).spec == 'X')) \
+ (void) va_arg ((ap), long); \
+ else if ((specinfo).spec == 'c') \
+ (void) va_arg ((ap), mpfr_va_wint); \
+ else if ((specinfo).spec == 's') \
+ (void) va_arg ((ap), int); /* we assume integer promotion */ \
+ break;
+#else
+#define CASE_LONG_ARG(specinfo, ap) \
+ case LONG_ARG: \
+ (void) va_arg ((ap), long); \
+ break;
+#endif
+
+#if defined(_MPFR_H_HAVE_INTMAX_T)
+#define CASE_INTMAX_ARG(specinfo, ap) \
+ case INTMAX_ARG: \
+ (void) va_arg ((ap), intmax_t); \
+ break;
+#else
+#define CASE_INTMAX_ARG(specinfo, ap)
+#endif
+
+#ifdef HAVE_LONG_LONG
+#define CASE_LONG_LONG_ARG(specinfo, ap) \
+ case LONG_LONG_ARG: \
+ (void) va_arg ((ap), long long); \
+ break;
+#else
+#define CASE_LONG_LONG_ARG(specinfo, ap)
+#endif
+
+#define CONSUME_VA_ARG(specinfo, ap) \
+ do { \
+ switch ((specinfo).arg_type) \
+ { \
+ case CHAR_ARG: \
+ case SHORT_ARG: \
+ (void) va_arg ((ap), int); \
+ break; \
+ CASE_LONG_ARG (specinfo, ap) \
+ CASE_LONG_LONG_ARG (specinfo, ap) \
+ CASE_INTMAX_ARG (specinfo, ap) \
+ case SIZE_ARG: \
+ (void) va_arg ((ap), size_t); \
+ break; \
+ case PTRDIFF_ARG: \
+ (void) va_arg ((ap), ptrdiff_t); \
+ break; \
+ case LONG_DOUBLE_ARG: \
+ (void) va_arg ((ap), long double); \
+ break; \
+ case MPF_ARG: \
+ (void) va_arg ((ap), mpf_srcptr); \
+ break; \
+ case MPQ_ARG: \
+ (void) va_arg ((ap), mpq_srcptr); \
+ break; \
+ case MP_LIMB_ARG: \
+ (void) va_arg ((ap), mp_limb_t); \
+ break; \
+ case MP_LIMB_ARRAY_ARG: \
+ (void) va_arg ((ap), mpfr_limb_ptr); \
+ (void) va_arg ((ap), mp_size_t); \
+ break; \
+ case MPZ_ARG: \
+ (void) va_arg ((ap), mpz_srcptr); \
+ break; \
+ default: \
+ switch ((specinfo).spec) \
+ { \
+ case 'd': \
+ case 'i': \
+ case 'o': \
+ case 'u': \
+ case 'x': \
+ case 'X': \
+ case 'c': \
+ (void) va_arg ((ap), int); \
+ break; \
+ case 'f': \
+ case 'F': \
+ case 'e': \
+ case 'E': \
+ case 'g': \
+ case 'G': \
+ case 'a': \
+ case 'A': \
+ (void) va_arg ((ap), double); \
+ break; \
+ case 's': \
+ (void) va_arg ((ap), char *); \
+ break; \
+ case 'p': \
+ (void) va_arg ((ap), void *); \
+ } \
+ } \
+ } while (0)
+
+/* process the format part which does not deal with mpfr types,
+ jump to external label 'error' if gmp_asprintf return -1. */
+#define FLUSH(flag, start, end, ap, buf_ptr) \
+ do { \
+ const size_t n = (end) - (start); \
+ if ((flag)) \
+ /* previous specifiers are understood by gmp_printf */ \
+ { \
+ MPFR_TMP_DECL (marker); \
+ char *fmt_copy; \
+ MPFR_TMP_MARK (marker); \
+ fmt_copy = (char*) MPFR_TMP_ALLOC (n + 1); \
+ strncpy (fmt_copy, (start), n); \
+ fmt_copy[n] = '\0'; \
+ if (sprntf_gmp ((buf_ptr), (fmt_copy), (ap)) == -1) \
+ { \
+ MPFR_TMP_FREE (marker); \
+ goto error; \
+ } \
+ (flag) = 0; \
+ MPFR_TMP_FREE (marker); \
+ } \
+ else if ((start) != (end)) \
+ /* no conversion specification, just simple characters */ \
+ buffer_cat ((buf_ptr), (start), n); \
+ } while (0)
+
+struct string_buffer
+{
+ char *start; /* beginning of the buffer */
+ char *curr; /* null terminating character */
+ size_t size; /* buffer capacity */
+};
+
+static void
+buffer_init (struct string_buffer *b, size_t s)
+{
+ b->start = (char *) (*__gmp_allocate_func) (s);
+ b->start[0] = '\0';
+ b->curr = b->start;
+ b->size = s;
+}
+
+/* Increase buffer size by a number of character being the least multiple of
+ 4096 greater than LEN+1. */
+static void
+buffer_widen (struct string_buffer *b, size_t len)
+{
+ const size_t pos = b->curr - b->start;
+ const size_t n = 0x1000 + (len & ~((size_t) 0xfff));
+ MPFR_ASSERTD (pos < b->size);
+
+ MPFR_ASSERTN ((len & ~((size_t) 4095)) <= (size_t)(SIZE_MAX - 4096));
+ MPFR_ASSERTN (b->size < SIZE_MAX - n);
+
+ b->start =
+ (char *) (*__gmp_reallocate_func) (b->start, b->size, b->size + n);
+ b->size += n;
+ b->curr = b->start + pos;
+
+ MPFR_ASSERTD (pos < b->size);
+ MPFR_ASSERTD (*b->curr == '\0');
+}
+
+/* Concatenate the LEN first characters of the string S to the buffer B and
+ expand it if needed. */
+static void
+buffer_cat (struct string_buffer *b, const char *s, size_t len)
+{
+ MPFR_ASSERTD (len != 0);
+ MPFR_ASSERTD (len <= strlen (s));
+
+ if (MPFR_UNLIKELY ((b->curr + len) >= (b->start + b->size)))
+ buffer_widen (b, len);
+
+ strncat (b->curr, s, len);
+ b->curr += len;
+
+ MPFR_ASSERTD (b->curr < b->start + b->size);
+ MPFR_ASSERTD (*b->curr == '\0');
+}
+
+/* Add N characters C to the end of buffer B */
+static void
+buffer_pad (struct string_buffer *b, const char c, const size_t n)
+{
+ MPFR_ASSERTD (n != 0);
+
+ MPFR_ASSERTN (b->size < SIZE_MAX - n - 1);
+ if (MPFR_UNLIKELY ((b->curr + n + 1) > (b->start + b->size)))
+ buffer_widen (b, n);
+
+ if (n == 1)
+ *b->curr = c;
+ else
+ memset (b->curr, c, n);
+ b->curr += n;
+ *b->curr = '\0';
+
+ MPFR_ASSERTD (b->curr < b->start + b->size);
+}
+
+/* Form a string by concatenating the first LEN characters of STR to TZ
+ zero(s), insert into one character C each 3 characters starting from end
+ to begining and concatenate the result to the buffer B. */
+static void
+buffer_sandwich (struct string_buffer *b, char *str, size_t len,
+ const size_t tz, const char c)
+{
+ const size_t step = 3;
+ const size_t size = len + tz;
+ const size_t r = size % step == 0 ? step : size % step;
+ const size_t q = size % step == 0 ? size / step - 1 : size / step;
+ size_t i;
+
+ MPFR_ASSERTD (size != 0);
+ if (c == '\0')
+ {
+ buffer_cat (b, str, len);
+ buffer_pad (b, '0', tz);
+ return;
+ }
+
+ MPFR_ASSERTN (b->size < SIZE_MAX - size - 1 - q);
+ MPFR_ASSERTD (len <= strlen (str));
+ if (MPFR_UNLIKELY ((b->curr + size + 1 + q) > (b->start + b->size)))
+ buffer_widen (b, size + q);
+
+ /* first R significant digits */
+ memcpy (b->curr, str, r);
+ b->curr += r;
+ str += r;
+ len -= r;
+
+ /* blocks of thousands. Warning: STR might end in the middle of a block */
+ for (i = 0; i < q; ++i)
+ {
+ *b->curr++ = c;
+ if (MPFR_LIKELY (len > 0))
+ {
+ if (MPFR_LIKELY (len >= step))
+ /* step significant digits */
+ {
+ memcpy (b->curr, str, step);
+ len -= step;
+ }
+ else
+ /* last digits in STR, fill up thousand block with zeros */
+ {
+ memcpy (b->curr, str, len);
+ memset (b->curr + len, '0', step - len);
+ len = 0;
+ }
+ }
+ else
+ /* trailing zeros */
+ memset (b->curr, '0', step);
+
+ b->curr += step;
+ str += step;
+ }
+
+ *b->curr = '\0';
+
+ MPFR_ASSERTD (b->curr < b->start + b->size);
+}
+
+/* let gmp_xprintf process the part it can understand */
+static int
+sprntf_gmp (struct string_buffer *b, const char *fmt, va_list ap)
+{
+ int length;
+ char *s;
+
+ length = gmp_vasprintf (&s, fmt, ap);
+ if (length > 0)
+ buffer_cat (b, s, length);
+
+ mpfr_free_str (s);
+ return length;
+}
+
+/* Helper struct and functions for temporary strings management */
+/* struct for easy string clearing */
+struct string_list
+{
+ char *string;
+ struct string_list *next; /* NULL in last node */
+};
+
+/* initialisation */
+static void
+init_string_list (struct string_list *sl)
+{
+ sl->string = NULL;
+ sl->next = NULL;
+}
+
+/* clear all strings in the list */
+static void
+clear_string_list (struct string_list *sl)
+{
+ struct string_list *n;
+
+ while (sl)
+ {
+ if (sl->string)
+ mpfr_free_str (sl->string);
+ n = sl->next;
+ (*__gmp_free_func) (sl, sizeof(struct string_list));
+ sl = n;
+ }
+}
+
+/* add a string in the list */
+static char *
+register_string (struct string_list *sl, char *new_string)
+{
+ /* look for the last node */
+ while (sl->next)
+ sl = sl->next;
+
+ sl->next = (struct string_list*)
+ (*__gmp_allocate_func) (sizeof (struct string_list));
+
+ sl = sl->next;
+ sl->next = NULL;
+ return sl->string = new_string;
+}
+
+/* padding type: where are the padding characters */
+enum pad_t
+ {
+ LEFT, /* spaces in left hand side for right justification */
+ LEADING_ZEROS, /* padding with '0' characters in integral part */
+ RIGHT /* spaces in right hand side for left justification */
+ };
+
+/* number_parts details how much characters are needed in each part of a float
+ print. */
+struct number_parts
+{
+ enum pad_t pad_type; /* Padding type */
+ size_t pad_size; /* Number of padding characters */
+
+ char sign; /* Sign character */
+
+ char *prefix_ptr; /* Pointer to prefix part */
+ size_t prefix_size; /* Number of characters in *prefix_ptr */
+
+ char thousands_sep; /* Thousands separator (only with style 'f') */
+
+ char *ip_ptr; /* Pointer to integral part characters*/
+ size_t ip_size; /* Number of digits in *ip_ptr */
+ int ip_trailing_zeros; /* Number of additional null digits in integral
+ part */
+
+ char point; /* Decimal point character */
+
+ int fp_leading_zeros; /* Number of additional leading zeros in fractional
+ part */
+ char *fp_ptr; /* Pointer to fractional part characters */
+ size_t fp_size; /* Number of digits in *fp_ptr */
+ int fp_trailing_zeros; /* Number of additional trailing zeros in fractional
+ part */
+
+ char *exp_ptr; /* Pointer to exponent part */
+ size_t exp_size; /* Number of characters in *exp_ptr */
+
+ struct string_list *sl; /* List of string buffers in use: we need such a
+ mechanism because fp_ptr may point into the same
+ string as ip_ptr */
+};
+
+/* For a real non zero number x, what is the base exponent f when rounding x
+ with rounding mode r to r(x) = m*b^f, where m is a digit and 1 <= m < b ?
+ Return non zero value if x is rounded up to b^f, return zero otherwise */
+static int
+next_base_power_p (mpfr_srcptr x, int base, mpfr_rnd_t rnd)
+{
+ mpfr_prec_t nbits;
+ mp_limb_t pm;
+ mp_limb_t xm;
+
+ MPFR_ASSERTD (MPFR_IS_PURE_FP (x));
+ MPFR_ASSERTD (base == 2 || base == 16);
+
+ /* Warning: the decimal point is AFTER THE FIRST DIGIT in this output
+ representation. */
+ nbits = base == 2 ? 1 : 4;
+
+ if (rnd == MPFR_RNDZ
+ || (rnd == MPFR_RNDD && MPFR_IS_POS (x))
+ || (rnd == MPFR_RNDU && MPFR_IS_NEG (x))
+ || MPFR_PREC (x) <= nbits)
+ /* no rounding when printing x with 1 digit */
+ return 0;
+
+ xm = MPFR_MANT (x) [MPFR_LIMB_SIZE (x) - 1];
+ pm = MPFR_LIMB_MASK (GMP_NUMB_BITS - nbits);
+ if ((xm & ~pm) ^ ~pm)
+ /* do no round up if some of the nbits first bits are 0s. */
+ return 0;
+
+ if (rnd == MPFR_RNDN)
+ /* mask for rounding bit */
+ pm = (MPFR_LIMB_ONE << (GMP_NUMB_BITS - nbits - 1));
+
+ /* round up if some remaining bits are 1 */
+ /* warning: the return value must be an int */
+ return xm & pm ? 1 : 0;
+}
+
+/* Record information from mpfr_get_str() so as to avoid multiple
+ calls to this expensive function. */
+struct decimal_info
+{
+ mpfr_exp_t exp;
+ char *str;
+};
+
+/* For a real non zero number x, what is the exponent f so that
+ 10^f <= x < 10^(f+1). */
+static mpfr_exp_t
+floor_log10 (mpfr_srcptr x)
+{
+ mpfr_t y;
+ mpfr_exp_t exp;
+
+ /* make sure first that y can represent a mpfr_exp_t exactly
+ and can compare with x */
+ mpfr_prec_t prec = sizeof (mpfr_exp_t) * CHAR_BIT;
+ mpfr_init2 (y, MAX (prec, MPFR_PREC (x)));
+
+ exp = mpfr_ceil_mul (MPFR_GET_EXP (x), 10, 1) - 1;
+ mpfr_set_exp_t (y, exp, MPFR_RNDU);
+ /* The following call to mpfr_ui_pow should be fast: y is an integer
+ (not too large), so that mpfr_pow_z will be used internally. */
+ mpfr_ui_pow (y, 10, y, MPFR_RNDU);
+ if (mpfr_cmpabs (x, y) < 0)
+ exp--;
+
+ mpfr_clear (y);
+ return exp;
+}
+
+/* Determine the different parts of the string representation of the regular
+ number P when SPEC.SPEC is 'a', 'A', or 'b'.
+
+ return -1 if some field > INT_MAX */
+static int
+regular_ab (struct number_parts *np, mpfr_srcptr p,
+ const struct printf_spec spec)
+{
+ int uppercase;
+ int base;
+ char *str;
+ mpfr_exp_t exp;
+
+ uppercase = spec.spec == 'A';
+
+ /* sign */
+ if (MPFR_IS_NEG (p))
+ np->sign = '-';
+ else if (spec.showsign || spec.space)
+ np->sign = spec.showsign ? '+' : ' ';
+
+ if (spec.spec == 'a' || spec.spec == 'A')
+ /* prefix part */
+ {
+ np->prefix_size = 2;
+ str = (char *) (*__gmp_allocate_func) (1 + np->prefix_size);
+ str[0] = '0';
+ str[1] = uppercase ? 'X' : 'x';
+ str[2] = '\0';
+ np->prefix_ptr = register_string (np->sl, str);
+ }
+
+ /* integral part */
+ np->ip_size = 1;
+ base = (spec.spec == 'b') ? 2 : 16;
+
+ if (spec.prec != 0)
+ {
+ size_t nsd;
+
+ /* Number of significant digits:
+ - if no given precision, let mpfr_get_str determine it;
+ - if a non-zero precision is specified, then one digit before decimal
+ point plus SPEC.PREC after it. */
+ nsd = spec.prec < 0 ? 0 : spec.prec + np->ip_size;
+ str = mpfr_get_str (0, &exp, base, nsd, p, spec.rnd_mode);
+ register_string (np->sl, str);
+ np->ip_ptr = MPFR_IS_NEG (p) ? ++str : str; /* skip sign if any */
+
+ if (base == 16)
+ /* EXP is the exponent for radix sixteen with decimal point BEFORE the
+ first digit, we want the exponent for radix two and the decimal
+ point AFTER the first digit. */
+ {
+ /* An integer overflow is normally not possible since MPFR_EXP_MIN
+ is twice as large as MPFR_EMIN_MIN. */
+ MPFR_ASSERTN (exp > (MPFR_EXP_MIN + 3) / 4);
+ exp = (exp - 1) * 4;
+ }
+ else
+ /* EXP is the exponent for decimal point BEFORE the first digit, we
+ want the exponent for decimal point AFTER the first digit. */
+ {
+ /* An integer overflow is normally not possible since MPFR_EXP_MIN
+ is twice as large as MPFR_EMIN_MIN. */
+ MPFR_ASSERTN (exp > MPFR_EXP_MIN);
+ --exp;
+ }
+ }
+ else if (next_base_power_p (p, base, spec.rnd_mode))
+ {
+ str = (char *)(*__gmp_allocate_func) (2);
+ str[0] = '1';
+ str[1] = '\0';
+ np->ip_ptr = register_string (np->sl, str);
+
+ exp = MPFR_GET_EXP (p);
+ }
+ else if (base == 2)
+ {
+ str = (char *)(*__gmp_allocate_func) (2);
+ str[0] = '1';
+ str[1] = '\0';
+ np->ip_ptr = register_string (np->sl, str);
+
+ exp = MPFR_GET_EXP (p) - 1;
+ }
+ else
+ {
+ int digit;
+ mp_limb_t msl = MPFR_MANT (p)[MPFR_LIMB_SIZE (p) - 1];
+ int rnd_bit = GMP_NUMB_BITS - 5;
+
+ /* pick up the 4 first bits */
+ digit = msl >> (rnd_bit+1);
+ if (spec.rnd_mode == MPFR_RNDA
+ || (spec.rnd_mode == MPFR_RNDU && MPFR_IS_POS (p))
+ || (spec.rnd_mode == MPFR_RNDD && MPFR_IS_NEG (p))
+ || (spec.rnd_mode == MPFR_RNDN
+ && (msl & (MPFR_LIMB_ONE << rnd_bit))))
+ digit++;
+ MPFR_ASSERTD ((0 <= digit) && (digit <= 15));
+
+ str = (char *)(*__gmp_allocate_func) (1 + np->ip_size);
+ str[0] = num_to_text [digit];
+ str[1] = '\0';
+ np->ip_ptr = register_string (np->sl, str);
+
+ exp = MPFR_GET_EXP (p) - 4;
+ }
+
+ if (uppercase)
+ /* All digits in upper case */
+ {
+ char *s1 = str;
+ while (*s1)
+ {
+ switch (*s1)
+ {
+ case 'a':
+ *s1 = 'A';
+ break;
+ case 'b':
+ *s1 = 'B';
+ break;
+ case 'c':
+ *s1 = 'C';
+ break;
+ case 'd':
+ *s1 = 'D';
+ break;
+ case 'e':
+ *s1 = 'E';
+ break;
+ case 'f':
+ *s1 = 'F';
+ break;
+ }
+ s1++;
+ }
+ }
+
+ if (spec.spec == 'b' || spec.prec != 0)
+ /* compute the number of digits in fractional part */
+ {
+ char *ptr;
+ size_t str_len;
+
+ /* the sign has been skipped, skip also the first digit */
+ ++str;
+ str_len = strlen (str);
+ ptr = str + str_len - 1; /* points to the end of str */
+
+ if (spec.prec < 0)
+ /* remove trailing zeros, if any */
+ {
+ while ((*ptr == '0') && (str_len != 0))
+ {
+ --ptr;
+ --str_len;
+ }
+ }
+
+ if (str_len > INT_MAX)
+ /* too many digits in fractional part */
+ return -1;
+
+ if (str_len != 0)
+ /* there are some non-zero digits in fractional part */
+ {
+ np->fp_ptr = str;
+ np->fp_size = str_len;
+ if ((int) str_len < spec.prec)
+ np->fp_trailing_zeros = spec.prec - str_len;
+ }
+ }
+
+ /* decimal point */
+ if ((np->fp_size != 0) || spec.alt)
+ np->point = MPFR_DECIMAL_POINT;
+
+ /* the exponent part contains the character 'p', or 'P' plus the sign
+ character plus at least one digit and only as many more digits as
+ necessary to represent the exponent.
+ We assume that |EXP| < 10^INT_MAX. */
+ np->exp_size = 3;
+ {
+ mpfr_uexp_t x;
+
+ x = SAFE_ABS (mpfr_uexp_t, exp);
+ while (x > 9)
+ {
+ np->exp_size++;
+ x /= 10;
+ }
+ }
+ str = (char *) (*__gmp_allocate_func) (1 + np->exp_size);
+ np->exp_ptr = register_string (np->sl, str);
+ {
+ char exp_fmt[8]; /* contains at most 7 characters like in "p%+.1i",
+ or "P%+.2li" */
+
+ exp_fmt[0] = uppercase ? 'P' : 'p';
+ exp_fmt[1] = '\0';
+ strcat (exp_fmt, "%+.1" MPFR_EXP_FSPEC "d");
+
+ if (sprintf (str, exp_fmt, (mpfr_eexp_t) exp) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+/* Determine the different parts of the string representation of the regular
+ number P when spec.spec is 'e', 'E', 'g', or 'G'.
+ DEC_INFO contains the previously computed exponent and string or is NULL.
+
+ return -1 if some field > INT_MAX */
+static int
+regular_eg (struct number_parts *np, mpfr_srcptr p,
+ const struct printf_spec spec, struct decimal_info *dec_info)
+{
+ char *str;
+ mpfr_exp_t exp;
+
+ const int uppercase = spec.spec == 'E' || spec.spec == 'G';
+ const int spec_g = spec.spec == 'g' || spec.spec == 'G';
+ const int keep_trailing_zeros = (spec_g && spec.alt)
+ || (!spec_g && (spec.prec > 0));
+
+ /* sign */
+ if (MPFR_IS_NEG (p))
+ np->sign = '-';
+ else if (spec.showsign || spec.space)
+ np->sign = spec.showsign ? '+' : ' ';
+
+ /* integral part */
+ np->ip_size = 1;
+ if (dec_info == NULL)
+ {
+ size_t nsd;
+
+ /* Number of significant digits:
+ - if no given precision, then let mpfr_get_str determine it,
+ - if a precision is specified, then one digit before decimal point
+ plus SPEC.PREC after it.
+ We use the fact here that mpfr_get_str allows us to ask for only one
+ significant digit when the base is not a power of 2. */
+ nsd = (spec.prec < 0) ? 0 : spec.prec + np->ip_size;
+ str = mpfr_get_str (0, &exp, 10, nsd, p, spec.rnd_mode);
+ register_string (np->sl, str);
+ }
+ else
+ {
+ exp = dec_info->exp;
+ str = dec_info->str;
+ }
+ np->ip_ptr = MPFR_IS_NEG (p) ? ++str : str; /* skip sign if any */
+
+ if (spec.prec != 0)
+ /* compute the number of digits in fractional part */
+ {
+ char *ptr;
+ size_t str_len;
+
+ /* the sign has been skipped, skip also the first digit */
+ ++str;
+ str_len = strlen (str);
+ ptr = str + str_len - 1; /* points to the end of str */
+
+ if (!keep_trailing_zeros)
+ /* remove trailing zeros, if any */
+ {
+ while ((*ptr == '0') && (str_len != 0))
+ {
+ --ptr;
+ --str_len;
+ }
+ }
+
+ if (str_len > INT_MAX)
+ /* too many digits in fractional part */
+ return -1;
+
+ if (str_len != 0)
+ /* there are some non-zero digits in fractional part */
+ {
+ np->fp_ptr = str;
+ np->fp_size = str_len;
+ if ((!spec_g || spec.alt) && (spec.prec > 0)
+ && ((int)str_len < spec.prec))
+ /* add missing trailing zeros */
+ np->fp_trailing_zeros = spec.prec - str_len;
+ }
+ }
+
+ /* decimal point */
+ if (np->fp_size != 0 || spec.alt)
+ np->point = MPFR_DECIMAL_POINT;
+
+ /* EXP is the exponent for decimal point BEFORE the first digit, we want
+ the exponent for decimal point AFTER the first digit.
+ Here, no possible overflow because exp < MPFR_EXP (p) / 3 */
+ exp--;
+
+ /* the exponent part contains the character 'e', or 'E' plus the sign
+ character plus at least two digits and only as many more digits as
+ necessary to represent the exponent.
+ We assume that |EXP| < 10^INT_MAX. */
+ np->exp_size = 3;
+ {
+ mpfr_uexp_t x;
+
+ x = SAFE_ABS (mpfr_uexp_t, exp);
+ while (x > 9)
+ {
+ np->exp_size++;
+ x /= 10;
+ }
+ }
+ if (np->exp_size < 4)
+ np->exp_size = 4;
+
+ str = (char *) (*__gmp_allocate_func) (1 + np->exp_size);
+ np->exp_ptr = register_string (np->sl, str);
+
+ {
+ char exp_fmt[8]; /* e.g. "e%+.2i", or "E%+.2li" */
+
+ exp_fmt[0] = uppercase ? 'E' : 'e';
+ exp_fmt[1] = '\0';
+ strcat (exp_fmt, "%+.2" MPFR_EXP_FSPEC "d");
+
+ if (sprintf (str, exp_fmt, (mpfr_eexp_t) exp) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+/* Determine the different parts of the string representation of the regular
+ number P when spec.spec is 'f', 'F', 'g', or 'G'.
+ DEC_INFO contains the previously computed exponent and string or is NULL.
+
+ return -1 if some field of number_parts is greater than INT_MAX */
+static int
+regular_fg (struct number_parts *np, mpfr_srcptr p,
+ const struct printf_spec spec, struct decimal_info *dec_info)
+{
+ mpfr_exp_t exp;
+ char * str;
+ const int spec_g = (spec.spec == 'g' || spec.spec == 'G');
+ const int keep_trailing_zeros = !spec_g || spec.alt;
+
+ /* WARNING: an empty precision field is forbidden (it means precision = 6
+ and it should have been changed to 6 before the function call) */
+ MPFR_ASSERTD (spec.prec >= 0);
+
+ /* sign */
+ if (MPFR_IS_NEG (p))
+ np->sign = '-';
+ else if (spec.showsign || spec.space)
+ np->sign = spec.showsign ? '+' : ' ';
+
+ if (MPFR_GET_EXP (p) <= 0)
+ /* 0 < |p| < 1 */
+ {
+ /* Most of the time, integral part is 0 */
+ np->ip_size = 1;
+ str = (char *) (*__gmp_allocate_func) (1 + np->ip_size);
+ str[0] = '0';
+ str[1] = '\0';
+ np->ip_ptr = register_string (np->sl, str);
+
+ if (spec.prec == 0)
+ /* only two possibilities: either 1 or 0. */
+ {
+ mpfr_t y;
+ /* y = abs(p) */
+ MPFR_ALIAS (y, p, 1, MPFR_EXP (p));
+
+ if (spec.rnd_mode == MPFR_RNDA
+ || (spec.rnd_mode == MPFR_RNDD && MPFR_IS_NEG (p))
+ || (spec.rnd_mode == MPFR_RNDU && MPFR_IS_POS (p))
+ || (spec.rnd_mode == MPFR_RNDN && mpfr_cmp_d (y, 0.5) > 0))
+ /* rounded up to 1: one digit '1' in integral part.
+ note that 0.5 is rounded to 0 with RNDN (round ties to even) */
+ np->ip_ptr[0] = '1';
+ }
+ else
+ {
+ /* exp = position of the most significant decimal digit. */
+ exp = floor_log10 (p);
+ MPFR_ASSERTD (exp < 0);
+
+ if (exp < -spec.prec)
+ /* only the last digit may be non zero */
+ {
+ int round_away;
+ switch (spec.rnd_mode)
+ {
+ case MPFR_RNDA:
+ round_away = 1;
+ break;
+ case MPFR_RNDD:
+ round_away = MPFR_IS_NEG (p);
+ break;
+ case MPFR_RNDU:
+ round_away = MPFR_IS_POS (p);
+ break;
+ case MPFR_RNDN:
+ {
+ /* compare |p| to y = 0.5*10^(-spec.prec) */
+ mpfr_t y;
+ mpfr_exp_t e = MAX (MPFR_PREC (p), 56);
+ mpfr_init2 (y, e + 8);
+ do
+ {
+ /* find a lower approximation of
+ 0.5*10^(-spec.prec) different from |p| */
+ e += 8;
+ mpfr_set_prec (y, e);
+ mpfr_set_si (y, -spec.prec, MPFR_RNDN);
+ mpfr_exp10 (y, y, MPFR_RNDD);
+ mpfr_div_2ui (y, y, 1, MPFR_RNDN);
+ } while (mpfr_cmpabs (y, p) == 0);
+
+ round_away = mpfr_cmpabs (y, p) < 0;
+ mpfr_clear (y);
+ }
+ break;
+ default:
+ round_away = 0;
+ }
+
+ if (round_away)
+ /* round away from zero: the last output digit is '1' */
+ {
+ np->fp_leading_zeros = spec.prec - 1;
+
+ np->fp_size = 1;
+ str =
+ (char *) (*__gmp_allocate_func) (1 + np->fp_size);
+ str[0] = '1';
+ str[1] = '\0';
+ np->fp_ptr = register_string (np->sl, str);
+ }
+ else
+ /* only zeros in fractional part */
+ {
+ MPFR_ASSERTD (!spec_g);
+ np->fp_leading_zeros = spec.prec;
+ }
+ }
+ else
+ /* the most significant digits are the last
+ spec.prec + exp + 1 digits in fractional part */
+ {
+ char *ptr;
+ size_t str_len;
+ if (dec_info == NULL)
+ {
+ size_t nsd = spec.prec + exp + 1;
+ /* WARNING: nsd may equal 1, but here we use the
+ fact that mpfr_get_str can return one digit with
+ base ten (undocumented feature, see comments in
+ get_str.c) */
+
+ str = mpfr_get_str (NULL, &exp, 10, nsd, p, spec.rnd_mode);
+ register_string (np->sl, str);
+ }
+ else
+ {
+ exp = dec_info->exp;
+ str = dec_info->str;
+ }
+ if (MPFR_IS_NEG (p))
+ /* skip sign */
+ ++str;
+ if (exp == 1)
+ /* round up to 1 */
+ {
+ MPFR_ASSERTD (str[0] == '1');
+ np->ip_ptr[0] = '1';
+ if (!spec_g || spec.alt)
+ np->fp_leading_zeros = spec.prec;
+ }
+ else
+ {
+ np->fp_ptr = str;
+ np->fp_leading_zeros = -exp;
+ MPFR_ASSERTD (exp <= 0);
+
+ str_len = strlen (str); /* the sign has been skipped */
+ ptr = str + str_len - 1; /* points to the end of str */
+
+ if (!keep_trailing_zeros)
+ /* remove trailing zeros, if any */
+ {
+ while ((*ptr == '0') && str_len)
+ {
+ --ptr;
+ --str_len;
+ }
+ }
+
+ if (str_len > INT_MAX)
+ /* too many digits in fractional part */
+ return -1;
+
+ MPFR_ASSERTD (str_len > 0);
+ np->fp_size = str_len;
+
+ if ((!spec_g || spec.alt)
+ && spec.prec > 0
+ && (np->fp_leading_zeros + np->fp_size < spec.prec))
+ /* add missing trailing zeros */
+ np->fp_trailing_zeros = spec.prec - np->fp_leading_zeros
+ - np->fp_size;
+ }
+ }
+ }
+
+ if (spec.alt || np->fp_leading_zeros != 0 || np->fp_size != 0
+ || np->fp_trailing_zeros != 0)
+ np->point = MPFR_DECIMAL_POINT;
+ }
+ else
+ /* 1 <= |p| */
+ {
+ size_t str_len;
+
+ /* Determine the position of the most significant decimal digit. */
+ exp = floor_log10 (p);
+ MPFR_ASSERTD (exp >= 0);
+ if (exp > INT_MAX)
+ /* P is too large to print all its integral part digits */
+ return -1;
+
+ if (dec_info == NULL)
+ { /* this case occurs with mpfr_printf ("%.0RUf", x) with x=9.5 */
+ str =
+ mpfr_get_str (NULL, &exp, 10, spec.prec+exp+1, p, spec.rnd_mode);
+ register_string (np->sl, str);
+ }
+ else
+ {
+ exp = dec_info->exp;
+ str = dec_info->str;
+ }
+ np->ip_ptr = MPFR_IS_NEG (p) ? ++str : str; /* skip sign */
+ str_len = strlen (str);
+
+ /* integral part */
+ if (exp > str_len)
+ /* mpfr_get_str gives no trailing zero when p is rounded up to the next
+ power of 10 (p integer, so no fractional part) */
+ {
+ np->ip_trailing_zeros = exp - str_len;
+ np->ip_size = str_len;
+ }
+ else
+ np->ip_size = exp;
+
+ if (spec.group)
+ /* thousands separator in integral part */
+ np->thousands_sep = MPFR_THOUSANDS_SEPARATOR;
+
+ /* fractional part */
+ str += np->ip_size;
+ str_len -= np->ip_size;
+ if (!keep_trailing_zeros)
+ /* remove trailing zeros, if any */
+ {
+ char *ptr = str + str_len - 1; /* pointer to the last digit of
+ str */
+ while ((*ptr == '0') && (str_len != 0))
+ {
+ --ptr;
+ --str_len;
+ }
+ }
+
+ if (str_len > 0)
+ /* some nonzero digits in fractional part */
+ {
+ if (str_len > INT_MAX)
+ /* too many digits in fractional part */
+ return -1;
+
+ np->point = MPFR_DECIMAL_POINT;
+ np->fp_ptr = str;
+ np->fp_size = str_len;
+ }
+
+ if (keep_trailing_zeros && str_len < spec.prec)
+ /* add missing trailing zeros */
+ {
+ np->point = MPFR_DECIMAL_POINT;
+ np->fp_trailing_zeros = spec.prec - np->fp_size;
+ }
+
+ if (spec.alt)
+ /* add decimal point even if no digits follow it */
+ np->point = MPFR_DECIMAL_POINT;
+ }
+
+ return 0;
+}
+
+/* partition_number determines the different parts of the string
+ representation of the number p according to the given specification.
+ partition_number initializes the given structure np, so all previous
+ information in that variable is lost.
+ return the total number of characters to be written.
+ return -1 if an error occured, in that case np's fields are in an undefined
+ state but all string buffers have been freed. */
+static int
+partition_number (struct number_parts *np, mpfr_srcptr p,
+ struct printf_spec spec)
+{
+ char *str;
+ long total;
+ int uppercase;
+
+ /* WARNING: left justification means right space padding */
+ np->pad_type = spec.left ? RIGHT : spec.pad == '0' ? LEADING_ZEROS : LEFT;
+ np->pad_size = 0;
+ np->sign = '\0';
+ np->prefix_ptr =NULL;
+ np->prefix_size = 0;
+ np->thousands_sep = '\0';
+ np->ip_ptr = NULL;
+ np->ip_size = 0;
+ np->ip_trailing_zeros = 0;
+ np->point = '\0';
+ np->fp_leading_zeros = 0;
+ np->fp_ptr = NULL;
+ np->fp_size = 0;
+ np->fp_trailing_zeros = 0;
+ np->exp_ptr = NULL;
+ np->exp_size = 0;
+ np->sl = (struct string_list *)
+ (*__gmp_allocate_func) (sizeof (struct string_list));
+ init_string_list (np->sl);
+
+ uppercase = spec.spec == 'A' || spec.spec == 'E' || spec.spec == 'F'
+ || spec.spec == 'G';
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (p)))
+ {
+ if (MPFR_IS_NAN (p))
+ {
+ if (np->pad_type == LEADING_ZEROS)
+ /* don't want "0000nan", change to right justification padding
+ with left spaces instead */
+ np->pad_type = LEFT;
+
+ if (uppercase)
+ {
+ np->ip_size = MPFR_NAN_STRING_LENGTH;
+ str = (char *) (*__gmp_allocate_func) (1 + np->ip_size);
+ strcpy (str, MPFR_NAN_STRING_UC);
+ np->ip_ptr = register_string (np->sl, str);
+ }
+ else
+ {
+ np->ip_size = MPFR_NAN_STRING_LENGTH;
+ str = (char *) (*__gmp_allocate_func) (1 + np->ip_size);
+ strcpy (str, MPFR_NAN_STRING_LC);
+ np->ip_ptr = register_string (np->sl, str);
+ }
+ }
+ else if (MPFR_IS_INF (p))
+ {
+ if (np->pad_type == LEADING_ZEROS)
+ /* don't want "0000inf", change to right justification padding
+ with left spaces instead */
+ np->pad_type = LEFT;
+
+ if (MPFR_IS_NEG (p))
+ np->sign = '-';
+
+ if (uppercase)
+ {
+ np->ip_size = MPFR_INF_STRING_LENGTH;
+ str = (char *) (*__gmp_allocate_func) (1 + np->ip_size);
+ strcpy (str, MPFR_INF_STRING_UC);
+ np->ip_ptr = register_string (np->sl, str);
+ }
+ else
+ {
+ np->ip_size = MPFR_INF_STRING_LENGTH;
+ str = (char *) (*__gmp_allocate_func) (1 + np->ip_size);
+ strcpy (str, MPFR_INF_STRING_LC);
+ np->ip_ptr = register_string (np->sl, str);
+ }
+ }
+ else
+ /* p == 0 */
+ {
+ /* note: for 'g' spec, zero is always displayed with 'f'-style with
+ precision spec.prec - 1 and the trailing zeros are removed unless
+ the flag '#' is used. */
+ if (MPFR_IS_NEG (p))
+ /* signed zero */
+ np->sign = '-';
+ else if (spec.showsign || spec.space)
+ np->sign = spec.showsign ? '+' : ' ';
+
+ if (spec.spec == 'a' || spec.spec == 'A')
+ /* prefix part */
+ {
+ np->prefix_size = 2;
+ str = (char *) (*__gmp_allocate_func) (1 + np->prefix_size);
+ str[0] = '0';
+ str[1] = uppercase ? 'X' : 'x';
+ str[2] = '\0';
+ np->prefix_ptr = register_string (np->sl, str);
+ }
+
+ /* integral part */
+ np->ip_size = 1;
+ str = (char *) (*__gmp_allocate_func) (1 + np->ip_size);
+ str[0] = '0';
+ str[1] = '\0';
+ np->ip_ptr = register_string (np->sl, str);
+
+ if (spec.prec > 0
+ && ((spec.spec != 'g' && spec.spec != 'G') || spec.alt))
+ /* fractional part */
+ {
+ np->point = MPFR_DECIMAL_POINT;
+ np->fp_trailing_zeros = (spec.spec == 'g' || spec.spec == 'G') ?
+ spec.prec - 1 : spec.prec;
+ }
+ else if (spec.alt)
+ np->point = MPFR_DECIMAL_POINT;
+
+ if (spec.spec == 'a' || spec.spec == 'A' || spec.spec == 'b'
+ || spec.spec == 'e' || spec.spec == 'E')
+ /* exponent part */
+ {
+ np->exp_size = (spec.spec == 'e' || spec.spec == 'E') ? 4 : 3;
+ str = (char *) (*__gmp_allocate_func) (1 + np->exp_size);
+ if (spec.spec == 'e' || spec.spec == 'E')
+ strcpy (str, uppercase ? "E+00" : "e+00");
+ else
+ strcpy (str, uppercase ? "P+0" : "p+0");
+ np->exp_ptr = register_string (np->sl, str);
+ }
+ }
+ }
+ else
+ /* regular p, p != 0 */
+ {
+ if (spec.spec == 'a' || spec.spec == 'A' || spec.spec == 'b')
+ {
+ if (regular_ab (np, p, spec) == -1)
+ goto error;
+ }
+ else if (spec.spec == 'f' || spec.spec == 'F')
+ {
+ if (spec.prec == -1)
+ spec.prec = 6;
+ if (regular_fg (np, p, spec, NULL) == -1)
+ goto error;
+ }
+ else if (spec.spec == 'e' || spec.spec == 'E')
+ {
+ if (regular_eg (np, p, spec, NULL) == -1)
+ goto error;
+ }
+ else
+ /* %g case */
+ {
+ /* Use the C99 rules:
+ if T > X >= -4 then the conversion is with style 'f'/'F' and
+ precision T-(X+1).
+ otherwise, the conversion is with style 'e'/'E' and
+ precision T-1.
+ where T is the threshold computed below and X is the exponent
+ that would be displayed with style 'e' and precision T-1. */
+ int threshold;
+ mpfr_exp_t x;
+ struct decimal_info dec_info;
+
+ threshold = (spec.prec < 0) ? 6 : (spec.prec == 0) ? 1 : spec.prec;
+ dec_info.str = mpfr_get_str (NULL, &dec_info.exp, 10, threshold,
+ p, spec.rnd_mode);
+ register_string (np->sl, dec_info.str);
+ /* mpfr_get_str corresponds to a significand between 0.1 and 1,
+ whereas here we want a significand between 1 and 10. */
+ x = dec_info.exp - 1;
+
+ if (threshold > x && x >= -4)
+ {
+ /* the conversion is with style 'f' */
+ spec.prec = threshold - x - 1;
+
+ if (regular_fg (np, p, spec, &dec_info) == -1)
+ goto error;
+ }
+ else
+ {
+ spec.prec = threshold - 1;
+
+ if (regular_eg (np, p, spec, &dec_info) == -1)
+ goto error;
+ }
+ }
+ }
+
+ /* compute the number of characters to be written verifying it is not too
+ much */
+ total = np->sign ? 1 : 0;
+ total += np->prefix_size;
+ total += np->ip_size;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+ total += np->ip_trailing_zeros;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+ if (np->thousands_sep)
+ /* ' flag, style f and the thousands separator in current locale is not
+ reduced to the null character */
+ total += (np->ip_size + np->ip_trailing_zeros) / 3;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+ if (np->point)
+ ++total;
+ total += np->fp_leading_zeros;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+ total += np->fp_size;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+ total += np->fp_trailing_zeros;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+ total += np->exp_size;
+ if (MPFR_UNLIKELY (total < 0 || total > INT_MAX))
+ goto error;
+
+ if (spec.width > total)
+ /* pad with spaces or zeros depending on np->pad_type */
+ {
+ np->pad_size = spec.width - total;
+ total += np->pad_size; /* here total == spec.width,
+ so 0 < total < INT_MAX */
+ }
+
+ return total;
+
+ error:
+ clear_string_list (np->sl);
+ np->prefix_ptr = NULL;
+ np->ip_ptr = NULL;
+ np->fp_ptr = NULL;
+ np->exp_ptr = NULL;
+ return -1;
+}
+
+/* sprnt_fp prints a mpfr_t according to spec.spec specification.
+
+ return the size of the string (not counting the terminating '\0')
+ return -1 if the built string is too long (i.e. has more than
+ INT_MAX characters). */
+static int
+sprnt_fp (struct string_buffer *buf, mpfr_srcptr p,
+ const struct printf_spec spec)
+{
+ int length;
+ struct number_parts np;
+
+ length = partition_number (&np, p, spec);
+ if (length < 0)
+ return -1;
+
+ /* right justification padding with left spaces */
+ if (np.pad_type == LEFT && np.pad_size != 0)
+ buffer_pad (buf, ' ', np.pad_size);
+
+ /* sign character (may be '-', '+', or ' ') */
+ if (np.sign)
+ buffer_pad (buf, np.sign, 1);
+
+ /* prefix part */
+ if (np.prefix_ptr)
+ buffer_cat (buf, np.prefix_ptr, np.prefix_size);
+
+ /* right justification padding with leading zeros */
+ if (np.pad_type == LEADING_ZEROS && np.pad_size != 0)
+ buffer_pad (buf, '0', np.pad_size);
+
+ /* integral part (may also be "nan" or "inf") */
+ MPFR_ASSERTN (np.ip_ptr != NULL); /* never empty */
+ if (MPFR_UNLIKELY (np.thousands_sep))
+ buffer_sandwich (buf, np.ip_ptr, np.ip_size, np.ip_trailing_zeros,
+ np.thousands_sep);
+ else
+ {
+ buffer_cat (buf, np.ip_ptr, np.ip_size);
+
+ /* trailing zeros in integral part */
+ if (np.ip_trailing_zeros != 0)
+ buffer_pad (buf, '0', np.ip_trailing_zeros);
+ }
+
+ /* decimal point */
+ if (np.point)
+ buffer_pad (buf, np.point, 1);
+
+ /* leading zeros in fractional part */
+ if (np.fp_leading_zeros != 0)
+ buffer_pad (buf, '0', np.fp_leading_zeros);
+
+ /* significant digits in fractional part */
+ if (np.fp_ptr)
+ buffer_cat (buf, np.fp_ptr, np.fp_size);
+
+ /* trailing zeros in fractional part */
+ if (np.fp_trailing_zeros != 0)
+ buffer_pad (buf, '0', np.fp_trailing_zeros);
+
+ /* exponent part */
+ if (np.exp_ptr)
+ buffer_cat (buf, np.exp_ptr, np.exp_size);
+
+ /* left justication padding with right spaces */
+ if (np.pad_type == RIGHT && np.pad_size != 0)
+ buffer_pad (buf, ' ', np.pad_size);
+
+ clear_string_list (np.sl);
+ return length;
+}
+
+int
+mpfr_vasprintf (char **ptr, const char *fmt, va_list ap)
+{
+ struct string_buffer buf;
+ size_t nbchar;
+
+ /* informations on the conversion specification filled by the parser */
+ struct printf_spec spec;
+ /* flag raised when previous part of fmt need to be processed by
+ gmp_vsnprintf */
+ int xgmp_fmt_flag;
+ /* beginning and end of the previous unprocessed part of fmt */
+ const char *start, *end;
+ /* pointer to arguments for gmp_vasprintf */
+ va_list ap2;
+
+ MPFR_SAVE_EXPO_DECL (expo);
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ nbchar = 0;
+ buffer_init (&buf, 4096);
+ xgmp_fmt_flag = 0;
+ va_copy (ap2, ap);
+ start = fmt;
+ while (*fmt)
+ {
+ /* Look for the next format specification */
+ while ((*fmt) && (*fmt != '%'))
+ ++fmt;
+
+ if (*fmt == '\0')
+ break;
+
+ if (*++fmt == '%')
+ /* %%: go one step further otherwise the second '%' would be
+ considered as a new conversion specification introducing
+ character */
+ {
+ ++fmt;
+ xgmp_fmt_flag = 1;
+ continue;
+ }
+
+ end = fmt - 1;
+
+ /* format string analysis */
+ specinfo_init (&spec);
+ fmt = parse_flags (fmt, &spec);
+
+ READ_INT (ap, fmt, spec, width, width_analysis);
+ width_analysis:
+ if (spec.width < 0)
+ {
+ spec.left = 1;
+ spec.width = -spec.width;
+ MPFR_ASSERTN (spec.width < INT_MAX);
+ }
+ if (*fmt == '.')
+ {
+ const char *f = ++fmt;
+ READ_INT (ap, fmt, spec, prec, prec_analysis);
+ prec_analysis:
+ if (f == fmt)
+ spec.prec = -1;
+ }
+ else
+ spec.prec = -1;
+
+ fmt = parse_arg_type (fmt, &spec);
+ if (spec.arg_type == UNSUPPORTED)
+ /* the current architecture doesn't support this type */
+ {
+ goto error;
+ }
+ else if (spec.arg_type == MPFR_ARG)
+ {
+ switch (*fmt)
+ {
+ case '\0':
+ break;
+ case '*':
+ ++fmt;
+ spec.rnd_mode = (mpfr_rnd_t) va_arg (ap, int);
+ break;
+ case 'D':
+ ++fmt;
+ spec.rnd_mode = MPFR_RNDD;
+ break;
+ case 'U':
+ ++fmt;
+ spec.rnd_mode = MPFR_RNDU;
+ break;
+ case 'Y':
+ ++fmt;
+ spec.rnd_mode = MPFR_RNDA;
+ break;
+ case 'Z':
+ ++fmt;
+ spec.rnd_mode = MPFR_RNDZ;
+ break;
+ case 'N':
+ ++fmt;
+ default:
+ spec.rnd_mode = MPFR_RNDN;
+ }
+ }
+
+ spec.spec = *fmt;
+ if (!specinfo_is_valid (spec))
+ goto error;
+
+ if (*fmt)
+ fmt++;
+
+ /* Format processing */
+ if (spec.spec == '\0')
+ /* end of the format string */
+ break;
+ else if (spec.spec == 'n')
+ /* put the number of characters written so far in the location pointed
+ by the next va_list argument; the types of pointer accepted are the
+ same as in GMP (except unsupported quad_t) plus pointer to a mpfr_t
+ so as to be able to accept the same format strings. */
+ {
+ void *p;
+ size_t nchar;
+
+ p = va_arg (ap, void *);
+ FLUSH (xgmp_fmt_flag, start, end, ap2, &buf);
+ va_end (ap2);
+ start = fmt;
+ nchar = buf.curr - buf.start;
+
+ switch (spec.arg_type)
+ {
+ case CHAR_ARG:
+ *(char *) p = (char) nchar;
+ break;
+ case SHORT_ARG:
+ *(short *) p = (short) nchar;
+ break;
+ case LONG_ARG:
+ *(long *) p = (long) nchar;
+ break;
+#ifdef HAVE_LONG_LONG
+ case LONG_LONG_ARG:
+ *(long long *) p = (long long) nchar;
+ break;
+#endif
+#ifdef _MPFR_H_HAVE_INTMAX_T
+ case INTMAX_ARG:
+ *(intmax_t *) p = (intmax_t) nchar;
+ break;
+#endif
+ case SIZE_ARG:
+ *(size_t *) p = nchar;
+ break;
+ case PTRDIFF_ARG:
+ *(ptrdiff_t *) p = (ptrdiff_t) nchar;
+ break;
+ case MPF_ARG:
+ mpf_set_ui ((mpf_ptr) p, (unsigned long) nchar);
+ break;
+ case MPQ_ARG:
+ mpq_set_ui ((mpq_ptr) p, (unsigned long) nchar, 1L);
+ break;
+ case MP_LIMB_ARG:
+ *(mp_limb_t *) p = (mp_limb_t) nchar;
+ break;
+ case MP_LIMB_ARRAY_ARG:
+ {
+ mp_limb_t *q = (mp_limb_t *) p;
+ mp_size_t n;
+ n = va_arg (ap, mp_size_t);
+ if (n < 0)
+ n = -n;
+ else if (n == 0)
+ break;
+
+ /* we assume here that mp_limb_t is wider than int */
+ *q = (mp_limb_t) nchar;
+ while (--n != 0)
+ {
+ q++;
+ *q = (mp_limb_t) 0;
+ }
+ }
+ break;
+ case MPZ_ARG:
+ mpz_set_ui ((mpz_ptr) p, (unsigned long) nchar);
+ break;
+
+ case MPFR_ARG:
+ mpfr_set_ui ((mpfr_ptr) p, (unsigned long) nchar,
+ spec.rnd_mode);
+ break;
+
+ default:
+ *(int *) p = (int) nchar;
+ }
+ va_copy (ap2, ap); /* after the switch, due to MP_LIMB_ARRAY_ARG
+ case */
+ }
+ else if (spec.arg_type == MPFR_PREC_ARG)
+ /* output mpfr_prec_t variable */
+ {
+ char *s;
+ char format[MPFR_PREC_FORMAT_SIZE + 6]; /* see examples below */
+ size_t length;
+ mpfr_prec_t prec;
+ prec = va_arg (ap, mpfr_prec_t);
+
+ FLUSH (xgmp_fmt_flag, start, end, ap2, &buf);
+ va_end (ap2);
+ va_copy (ap2, ap);
+ start = fmt;
+
+ /* construct format string, like "%*.*hd" "%*.*d" or "%*.*ld" */
+ format[0] = '%';
+ format[1] = '*';
+ format[2] = '.';
+ format[3] = '*';
+ format[4] = '\0';
+ strcat (format, MPFR_PREC_FORMAT_TYPE);
+ format[4 + MPFR_PREC_FORMAT_SIZE] = spec.spec;
+ format[5 + MPFR_PREC_FORMAT_SIZE] = '\0';
+ length = gmp_asprintf (&s, format, spec.width, spec.prec, prec);
+ if (buf.size <= INT_MAX - length)
+ {
+ buffer_cat (&buf, s, length);
+ mpfr_free_str (s);
+ }
+ else
+ {
+ mpfr_free_str (s);
+ goto overflow_error;
+ }
+ }
+ else if (spec.arg_type == MPFR_ARG)
+ /* output a mpfr_t variable */
+ {
+ mpfr_srcptr p;
+
+ p = va_arg (ap, mpfr_srcptr);
+
+ FLUSH (xgmp_fmt_flag, start, end, ap2, &buf);
+ va_end (ap2);
+ va_copy (ap2, ap);
+ start = fmt;
+
+ switch (spec.spec)
+ {
+ case 'a':
+ case 'A':
+ case 'b':
+ case 'e':
+ case 'E':
+ case 'f':
+ case 'F':
+ case 'g':
+ case 'G':
+ if (sprnt_fp (&buf, p, spec) < 0)
+ goto overflow_error;
+ break;
+
+ default:
+ /* unsupported specifier */
+ goto error;
+ }
+ }
+ else
+ /* gmp_printf specification, step forward in the va_list */
+ {
+ CONSUME_VA_ARG (spec, ap);
+ xgmp_fmt_flag = 1;
+ }
+ }
+
+ if (start != fmt)
+ FLUSH (xgmp_fmt_flag, start, fmt, ap2, &buf);
+
+ va_end (ap2);
+ nbchar = buf.curr - buf.start;
+ MPFR_ASSERTD (nbchar == strlen (buf.start));
+ buf.start =
+ (char *) (*__gmp_reallocate_func) (buf.start, buf.size, nbchar + 1);
+ buf.size = nbchar + 1; /* update needed for __gmp_free_func below when
+ nbchar is too large (overflow_error) */
+ *ptr = buf.start;
+
+ /* If nbchar is larger than INT_MAX, the ISO C99 standard is silent, but
+ POSIX says concerning the snprintf() function:
+ "[EOVERFLOW] The value of n is greater than {INT_MAX} or the
+ number of bytes needed to hold the output excluding the
+ terminating null is greater than {INT_MAX}." See:
+ http://www.opengroup.org/onlinepubs/009695399/functions/fprintf.html
+ But it doesn't say anything concerning the other printf-like functions.
+ A defect report has been submitted to austin-review-l (item 2532).
+ So, for the time being, we return a negative value and set the erange
+ flag, and set errno to EOVERFLOW in POSIX system. */
+ if (nbchar <= INT_MAX)
+ {
+ MPFR_SAVE_EXPO_FREE (expo);
+ return nbchar;
+ }
+
+ overflow_error:
+ MPFR_SAVE_EXPO_UPDATE_FLAGS(expo, MPFR_FLAGS_ERANGE);
+#ifdef EOVERFLOW
+ errno = EOVERFLOW;
+#endif
+
+ error:
+ MPFR_SAVE_EXPO_FREE (expo);
+ *ptr = NULL;
+ (*__gmp_free_func) (buf.start, buf.size);
+
+ return -1;
+}
+
+#endif /* HAVE_STDARG */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/version.c b/Build/source/libs/mpfr/mpfr-src/src/version.c
new file mode 100644
index 00000000000..96b2f614e67
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/version.c
@@ -0,0 +1,29 @@
+/* mpfr_get_version -- MPFR version
+
+Copyright 2004-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+const char *
+mpfr_get_version (void)
+{
+ return "3.1.3";
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/volatile.c b/Build/source/libs/mpfr/mpfr-src/src/volatile.c
new file mode 100644
index 00000000000..bb4e7da42e0
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/volatile.c
@@ -0,0 +1,36 @@
+/* __gmpfr_longdouble_volatile -- support for LONGDOUBLE_NAN_ACTION.
+
+ THE FUNCTIONS IN THIS FILE ARE FOR INTERNAL USE ONLY. THEY'RE ALMOST
+ CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN
+ FUTURE MPFR RELEASES.
+
+Copyright 2003-2004, 2006-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "mpfr-impl.h"
+
+/* Only needed sometimes. */
+#ifdef WANT_GMPFR_LONGDOUBLE_VOLATILE
+long double
+__gmpfr_longdouble_volatile (long double x)
+{
+ return x;
+}
+#endif
diff --git a/Build/source/libs/mpfr/mpfr-src/src/x86/core2/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/x86/core2/mparam.h
new file mode 100644
index 00000000000..3a3abe2e99e
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/x86/core2/mparam.h
@@ -0,0 +1,234 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.3.2 */
+/* gcc14.fsffrance.org (Intel(R) Xeon(R) CPU X5450 @ 3.00GHz) with gmp 5.0.2
+ configured with ABI=32 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,0,10,10,0, \
+ 11,11,0,13,13,0,0,17,17,16,19,19,19,18,18,22, \
+ 20,18,19,26,26,28,23,24,28,29,26,28,29,28,30,32, \
+ 29,30,38,30,34,32,33,37,34,36,37,38,38,38,38,38, \
+ 38,44,36,52,44,48,52,56,51,52,56,56,52,52,56,58, \
+ 52,60,60,56,60,55,52,68,60,68,68,68,68,72,72,67, \
+ 68,68,68,76,76,68,75,75,68,72,76,68,68,75,72,72, \
+ 78,73,74,72,76,74,76,72,76,74,76,72,76,76,75,76, \
+ 75,74,76,76,99,99,104,76,76,111,104,102,99,99,99,104, \
+ 93,105,99,104,99,104,99,99,99,96,102,99,104,104,104,108, \
+ 104,105,111,110,110,111,111,111,109,111,110,111,111,114,108,111, \
+ 111,111,105,105,111,108,111,110,111,110,111,111,110,111,110,134, \
+ 111,141,153,153,153,140,141,165,141,153,151,153,153,153,152,152, \
+ 153,165,153,152,153,153,153,163,165,164,165,153,153,164,163,164, \
+ 165,165,153,168,168,173,174,165,176,177,177,164,176,177,165,165, \
+ 165,172,164,165,165,165,168,177,175,176,177,176,165,175,176,176, \
+ 165,177,176,177,204,204,204,204,204,203,177,218,217,220,204,219, \
+ 220,217,220,220,220,218,219,220,220,220,220,217,217,219,220,220, \
+ 217,204,217,219,220,220,217,218,218,219,220,219,220,219,219,220, \
+ 220,220,220,220,219,220,220,220,220,251,220,219,220,220,220,236, \
+ 249,220,251,250,249,249,251,248,251,251,251,250,251,251,251,249, \
+ 248,248,240,250,250,250,249,251,246,251,250,251,251,251,250,250, \
+ 251,249,249,250,251,251,249,251,250,306,305,306,306,306,306,306, \
+ 306,306,306,251,306,306,305,305,306,306,305,305,306,306,306,305, \
+ 330,305,306,305,306,306,306,330,306,306,305,305,330,330,327,330, \
+ 330,330,306,329,330,330,330,330,330,329,330,306,330,330,329,329, \
+ 329,330,329,330,330,330,330,330,330,327,328,329,330,329,329,330, \
+ 330,329,330,330,328,330,330,330,330,330,354,330,329,330,330,354, \
+ 330,329,330,353,354,330,354,354,330,353,354,354,354,354,354,354, \
+ 354,354,353,354,352,354,354,354,330,354,354,353,354,354,354,378, \
+ 353,408,408,408,408,407,408,407,407,408,408,408,408,407,408,408, \
+ 407,407,407,440,407,408,408,407,439,408,408,408,407,408,440,440, \
+ 440,440,440,440,440,439,440,437,439,440,439,439,440,440,439,440, \
+ 439,439,440,439,440,440,440,439,438,439,440,440,439,440,438,439, \
+ 440,440,440,439,440,440,440,440,438,440,439,439,440,440,440,439, \
+ 440,440,440,440,440,440,439,440,440,471,472,471,439,440,439,472, \
+ 472,472,472,472,472,472,440,472,439,440,471,472,471,471,439,472, \
+ 496,496,496,472,440,471,472,480,495,496,496,495,472,534,536,534, \
+ 534,536,536,536,536,536,536,536,536,536,535,536,536,536,536,536, \
+ 534,535,536,536,536,535,534,534,535,536,536,534,535,536,536,535, \
+ 536,536,536,536,535,536,536,536,536,536,535,536,568,535,536,536, \
+ 536,535,536,568,536,536,568,536,568,568,568,536,568,536,536,566, \
+ 567,567,535,568,568,536,535,536,535,536,536,536,567,536,568,536, \
+ 568,567,568,568,567,600,597,568,567,567,568,600,568,568,568,598, \
+ 566,567,568,568,566,568,568,568,567,568,567,568,568,568,568,568, \
+ 600,567,568,600,568,600,568,568,568,568,568,600,599,566,568,600, \
+ 568,568,600,567,568,599,567,600,599,600,568,600,567,599,600,599, \
+ 568,597,600,598,600,599,599,599,600,600,598,600,598,600,597,600, \
+ 600,600,600,600,600,599,600,600,598,599,600,599,600,639,600,600, \
+ 600,600,568,639,600,568,567,568,568,568,600,640,600,599,600,599, \
+ 600,600,600,598,600,599,568,600,598,600,600,599,600,597,639,598, \
+ 600,600,600,600,599,600,600,600,600,600,600,687,736,598,599,600, \
+ 736,600,600,688,736,736,600,688,735,736,736,734,736,736,735,736, \
+ 640,734,735,736,734,733,736,736,731,735,736,736,736,736,736,736, \
+ 736,735,736,736,736,736,784,735,784,735,784,783,783,736,736,735, \
+ 784,784,784,736,783,784,784,784,784,783,783,784,784,784,784,784, \
+ 781,782,782,784,784,784,784,784,784,734,784,783,784,784,784,736, \
+ 808,783,784,784,784,783,784,783,784,783,784,783,784,832,832,829, \
+ 832,824,823,832,824,784,784,824,831,832,784,783,784,783,784,832, \
+ 784,784,784,783,784,784,781,784,784,784,784,783,824,832,831,784, \
+ 832,831,832,830,832,807,784,832,830,784,832,808,832,824,823,832, \
+ 824,808,831,824,824,824,832,823,832,824,832,831,832,832,829,830, \
+ 831,832,832,832,831,831,832,832,830,832,832,832,832,831,831,832, \
+ 879,832,832,880,832,831,832,831,832,832,832,832,832,832,832,831 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,-1,-1,-1,-1,-1,-1,-1,8,8,8,9,9, \
+ 10,10,11,13,13,14,15,16,14,16,17,16,18,17,19,18, \
+ 20,18,19,22,21,22,23,22,23,22,25,24,25,24,25,26, \
+ 27,26,29,27,28,29,30,34,34,36,36,38,38,40,40,42, \
+ 34,44,42,46,38,42,44,38,38,44,40,42,42,50,44,46, \
+ 50,48,48,44,50,52,52,46,50,46,52,50,52,50,50,52, \
+ 52,54,52,52,54,58,58,54,57,58,58,58,56,58,58,58, \
+ 68,58,64,68,72,60,64,72,68,64,72,64,72,68,72,68, \
+ 76,76,72,76,80,76,76,76,84,80,76,88,84,84,84,84, \
+ 88,84,87,88,88,92,92,92,88,96,92,96,96,92,96,96, \
+ 100,100,100,100,96,84,92,92,88,96,92,88,99,92,96,91, \
+ 92,96,100,100,99,100,100,100,100,96,98,96,100,98,100,100, \
+ 100,100,100,117,100,123,123,135,122,123,124,129,126,122,135,123, \
+ 129,135,135,133,134,135,141,140,135,126,140,135,129,129,129,132, \
+ 146,134,129,147,150,135,152,140,135,140,141,141,147,141,147,147, \
+ 147,150,141,147,152,147,141,150,141,151,153,146,147,152,147,147, \
+ 147,152,147,153,151,153,147,147,153,150,147,152,153,150,150,152, \
+ 153,150,153,152,153,150,147,164,150,187,188,148,187,180,152,196, \
+ 187,196,180,186,187,188,196,187,196,188,196,180,195,196,188,188, \
+ 188,196,196,188,192,194,195,196,196,196,195,204,211,212,203,204, \
+ 204,196,196,203,204,220,212,203,196,204,195,204,196,187,216,188, \
+ 200,195,196,204,219,203,195,196,188,203,204,195,203,204,219,195, \
+ 196,211,212,220,196,203,196,212,204,204,220,196,203,220,220,211, \
+ 203,212,212,211,212,212,216,218,220,211,211,218,220,219,220,220, \
+ 220,220,220,220,220,220,219,220,282,282,219,276,276,282,282,275, \
+ 276,282,269,276,258,294,276,282,282,294,294,270,282,294,258,270, \
+ 258,270,294,270,258,270,282,276,306,282,282,282,282,282,276,270, \
+ 282,282,282,281,282,281,281,294,282,276,282,282,282,294,294,282, \
+ 306,306,294,282,294,282,294,294,305,288,306,294,294,294,306,294, \
+ 306,305,318,306,306,318,312,306,306,318,305,306,306,306,317,312, \
+ 311,318,311,312,324,318,317,330,330,318,318,330,323,330,329,330, \
+ 324,330,329,324,342,330,342,329,330,336,341,318,294,329,341,306, \
+ 300,305,300,299,300,305,306,306,324,305,318,318,312,317,330,306, \
+ 306,306,306,306,318,317,318,318,318,324,330,329,324,318,318,318, \
+ 323,324,306,323,324,324,329,328,328,330,330,330,318,318,318,317, \
+ 317,336,330,342,342,341,330,330,330,342,330,340,330,330,318,341, \
+ 342,426,426,341,342,425,426,426,426,342,426,425,426,425,425,426, \
+ 426,426,318,426,425,450,426,425,378,378,378,426,426,450,450,450, \
+ 402,330,449,450,449,450,450,449,450,450,402,450,450,450,450,450, \
+ 426,401,402,450,450,426,426,450,474,472,474,450,426,426,426,474, \
+ 474,474,473,425,426,450,450,426,424,425,426,426,474,449,450,450, \
+ 450,426,474,449,426,450,450,448,449,498,450,498,450,426,450,449, \
+ 448,450,450,448,449,449,474,448,449,450,450,473,474,474,473,449, \
+ 449,474,450,474,450,450,473,474,450,473,474,474,474,474,521,498, \
+ 474,474,474,474,474,474,498,498,474,474,474,473,473,474,474,498, \
+ 498,474,498,498,498,498,498,519,498,522,522,498,498,520,498,498, \
+ 498,498,498,522,522,498,521,521,520,521,522,522,474,522,521,546, \
+ 520,522,546,522,516,546,546,521,522,522,522,521,522,522,521,474, \
+ 545,545,546,546,474,522,522,522,522,474,498,546,522,546,546,544, \
+ 545,545,522,521,546,546,546,522,546,545,522,498,546,546,522,520, \
+ 522,522,522,521,521,545,546,522,521,522,600,568,522,522,521,522, \
+ 600,522,521,521,522,522,519,599,521,522,545,546,522,545,546,545, \
+ 522,599,522,521,546,545,546,546,600,598,600,546,546,545,546,600, \
+ 568,546,600,546,598,600,600,632,632,545,546,599,600,546,546,545, \
+ 546,632,632,600,632,631,632,631,600,600,632,632,598,600,632,599, \
+ 599,599,600,599,599,600,600,600,600,596,600,631,599,600,600,599, \
+ 600,600,600,600,600,600,664,631,632,600,663,664,696,664,600,664, \
+ 663,631,696,662,600,693,696,695,663,696,696,664,631,632,688,630, \
+ 632,632,696,631,695,632,632,695,696,695,695,696,696,696,632,695, \
+ 696,695,696,696,632,695,696,631,664,664,695,663,663,664,696,687, \
+ 662,664,664,663,664,663,694,695,695,727,728,728,693,728,693,695, \
+ 696,696,696,696,696,694,695,696,696,695,696,694,727,696,696,688, \
+ 695,696,696,695,696,695,695,696,696,727,696,696,695,696,695,696, \
+ 696,695,696,695,696,696,696,728,728,696,720,728,728,728,726,728 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,9,10,9,10,11,14,13, \
+ 14,11,16,17,13,14,15,16,16,14,16,16,16,19,20,18, \
+ 23,18,22,19,24,25,27,23,23,24,24,23,27,28,27,28, \
+ 28,33,29,30,32,29,37,32,35,33,33,39,33,33,35,38, \
+ 39,38,38,37,38,39,37,37,48,40,39,40,40,50,51,46, \
+ 47,48,48,46,50,50,50,59,52,50,51,48,56,56,54,50, \
+ 51,54,53,58,58,58,56,59,61,58,62,59,62,67,62,67, \
+ 60,64,71,68,64,64,62,68,67,72,66,72,76,72,74,72, \
+ 67,72,72,74,76,70,74,74,76,76,76,76,76,76,74,76, \
+ 76,76,80,87,78,76,88,80,79,88,88,96,94,96,88,103, \
+ 104,104,104,100,103,102,104,104,104,96,104,104,112,112,104,104, \
+ 95,104,104,103,104,104,104,112,104,104,104,103,112,104,104,112, \
+ 104,104,112,104,104,112,104,112,112,112,111,112,120,104,112,116, \
+ 112,120,112,110,120,112,120,112,120,118,116,126,119,120,128,120, \
+ 136,128,120,120,136,120,120,136,152,136,136,136,143,136,128,140, \
+ 128,152,148,152,136,144,152,152,144,152,144,152,152,152,152,152, \
+ 134,152,152,136,136,136,140,152,152,143,152,144,152,152,152,152, \
+ 152,152,144,152,152,152,144,152,152,152,152,152,152,152,152,152, \
+ 152,152,152,152,152,152,150,151,152,152,152,152,156,152,160,160, \
+ 168,156,176,159,160,160,176,160,176,174,176,176,208,176,176,174, \
+ 176,183,176,208,208,176,208,208,208,208,192,208,208,208,208,208, \
+ 208,208,208,200,208,208,208,208,208,208,208,208,208,208,208,208, \
+ 208,208,208,208,208,208,222,208,209,208,208,208,208,208,208,222, \
+ 208,208,208,208,208,208,208,208,208,208,208,208,208,207,208,208, \
+ 208,208,208,208,208,208,208,208,208,222,220,220,222,208,221,216, \
+ 208,220,208,208,208,209,208,208,220,208,208,208,208,208,222,221, \
+ 222,220,220,224,220,216,216,220,216,220,221,222,216,224,224,222, \
+ 222,221,221,222,222,224,222,222,222,222,228,240,232,224,225,225, \
+ 304,228,272,256,231,248,240,234,232,272,288,234,270,256,264,240, \
+ 240,272,256,272,270,271,272,240,303,270,304,304,272,303,304,304, \
+ 304,304,272,270,272,304,288,287,257,303,304,304,288,304,304,272, \
+ 304,304,304,272,304,305,304,303,304,304,303,302,303,304,272,303, \
+ 304,304,304,303,304,304,272,304,304,288,288,304,304,304,305,282, \
+ 304,304,303,304,304,304,304,304,303,304,304,304,302,304,304,305, \
+ 303,302,287,302,304,304,304,305,304,304,302,302,303,303,304,288, \
+ 303,304,304,304,304,302,303,304,304,288,304,303,304,304,304,303, \
+ 304,304,303,303,304,304,304,304,304,304,304,303,304,303,304,304, \
+ 304,303,304,303,304,304,320,303,304,304,304,304,304,304,305,306, \
+ 320,312,320,320,320,320,320,320,320,320,320,320,320,320,352,320, \
+ 352,320,336,320,352,320,319,320,336,336,352,348,348,344,348,348, \
+ 352,348,351,351,351,352,352,354,350,352,352,352,360,353,416,359, \
+ 352,360,416,352,352,370,416,352,353,416,352,416,416,416,352,416, \
+ 352,416,416,416,416,352,408,416,416,384,416,352,416,392,416,416, \
+ 416,401,408,416,416,416,416,416,416,416,416,407,416,408,416,416, \
+ 416,408,408,416,416,416,416,432,416,416,416,436,440,416,416,440, \
+ 440,416,416,416,432,416,440,416,440,438,440,416,440,416,440,438, \
+ 440,444,416,448,416,440,440,440,416,448,448,415,447,440,416,440, \
+ 416,416,408,408,416,416,416,448,416,416,416,416,416,416,416,416, \
+ 416,416,416,416,416,416,440,416,417,416,416,416,416,416,416,416, \
+ 416,416,416,440,416,416,440,416,416,448,416,416,416,416,416,416, \
+ 448,416,416,416,448,416,416,416,416,416,440,416,416,416,432,440, \
+ 416,416,416,416,416,432,416,432,432,440,440,416,416,416,440,440, \
+ 440,448,448,438,440,433,440,439,440,448,440,440,440,439,440,447, \
+ 444,439,440,440,440,440,448,448,448,440,440,448,444,448,443,440, \
+ 440,440,440,440,440,448,448,440,448,439,440,444,447,448,448,448, \
+ 448,448,448,448,448,448,448,447,448,448,448,448,448,448,512,608, \
+ 480,608,464,480,608,456,464,608,608,480,608,480,608,480,480,480, \
+ 608,480,512,480,608,513,512,608,512,512,608,512,608,496,480,496, \
+ 608,516,496,608,480,512,608,512,608,512,512,608,608,608,608,608, \
+ 608,576,608,607,608,608,512,608,607,609,607,608,608,609,608,608, \
+ 609,608,608,608,607,608,607,608,607,608,608,608,608,608,608,607, \
+ 607,608,608,608,608,608,607,607,608,607,608,608,608,607,608,608, \
+ 608,608,609,609,608,608,609,608,608,608,606,606,608,608,609,607, \
+ 606,607,608,608,610,608,608,609,608,608,608,608,608,608,607,608 \
+
+#define MPFR_MUL_THRESHOLD 15 /* limbs */
+#define MPFR_SQR_THRESHOLD 18 /* limbs */
+#define MPFR_DIV_THRESHOLD 22 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 649 /* bits */
+#define MPFR_EXP_THRESHOLD 10653 /* bits */
+#define MPFR_SINCOS_THRESHOLD 36331 /* bits */
+#define MPFR_AI_THRESHOLD1 -21595 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 2333
+#define MPFR_AI_THRESHOLD3 33925
+/* Tuneup completed successfully, took 1155 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/x86/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/x86/mparam.h
new file mode 100644
index 00000000000..6f5f4917503
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/x86/mparam.h
@@ -0,0 +1,233 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.4.2 */
+/* contributed by Jim Cloos <cloos at jhcloos dot com> with GMP 5.0.2 on a
+ Pentium3-M, where __i386, __i686, __pentiumpro are defined */
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,-1,-1,-1,-1,-1,-1,-1,7,8,9,10,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,28,30,30,30,30,32, \
+ 32,32,34,34,34,32,34,34,34,36,36,36,36,40,40,40, \
+ 42,44,48,48,48,48,48,48,48,48,48,52,52,52,52,52, \
+ 52,52,56,56,60,56,60,60,60,60,60,64,64,64,64,64, \
+ 64,64,64,64,64,64,68,64,64,68,68,68,68,72,72,81, \
+ 81,80,81,81,87,87,87,87,87,87,87,87,87,87,93,87, \
+ 93,93,93,93,93,93,93,93,99,99,93,93,93,92,93,99, \
+ 99,99,99,99,99,99,99,99,105,105,99,105,105,104,105,105, \
+ 105,105,111,117,117,117,117,117,117,117,117,117,117,117,117,117, \
+ 123,123,123,123,141,141,141,141,141,141,141,141,141,141,141,141, \
+ 141,141,141,141,141,141,141,141,141,153,153,153,153,153,153,153, \
+ 153,153,153,153,153,165,165,165,153,165,165,165,165,165,165,165, \
+ 165,165,165,165,165,177,177,165,177,177,177,177,165,177,177,177, \
+ 177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, \
+ 177,177,189,204,189,204,204,204,204,204,204,189,204,189,204,204, \
+ 204,204,204,204,204,204,204,204,203,204,204,204,204,204,204,204, \
+ 220,204,220,220,220,220,220,220,220,220,220,220,220,220,220,220, \
+ 236,220,236,236,236,236,236,235,236,235,236,236,236,236,235,236, \
+ 236,236,236,236,236,236,236,236,236,252,252,252,252,252,252,252, \
+ 252,252,252,252,252,252,252,252,282,282,282,282,282,282,282,282, \
+ 282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282, \
+ 282,282,282,282,282,282,282,306,306,282,306,306,306,306,306,306, \
+ 306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, \
+ 306,306,306,306,306,330,330,330,329,330,330,330,330,330,330,330, \
+ 330,330,330,330,330,330,330,330,330,330,330,330,330,330,354,354, \
+ 354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, \
+ 354,354,354,354,354,354,354,354,354,378,378,378,378,378,378,378, \
+ 378,377,378,378,378,378,378,378,378,378,378,378,378,378,378,378, \
+ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,408,408,408,408,407,408,407,408,408,407,408,408,408,408, \
+ 408,408,439,408,440,440,439,440,440,440,440,439,440,440,439,440, \
+ 439,440,439,440,439,439,440,440,440,440,439,440,439,440,439,440, \
+ 440,440,439,439,440,440,472,440,472,439,440,439,440,440,440,472, \
+ 472,472,469,471,471,472,471,471,472,471,470,470,472,472,471,472, \
+ 472,504,504,463,471,455,438,501,462,497,501,503,459,471,451,467, \
+ 448,501,503,485,504,453,469,470,503,472,496,496,480,467,504,460, \
+ 504,488,488,532,535,497,480,470,504,497,504,492,497,498,536,468, \
+ 504,510,519,528,500,500,495,504,504,504,504,534,504,504,498,504, \
+ 504,511,504,504,504,503,504,563,504,511,504,504,504,504,504,504, \
+ 504,504,533,504,536,536,536,533,536,536,536,536,536,536,536,536, \
+ 536,536,536,536,536,536,536,536,536,536,536,536,536,536,566,536, \
+ 536,536,536,568,568,568,568,568,568,568,568,568,568,568,568,568, \
+ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,592,592, \
+ 592,592,592,592,592,592,592,592,640,592,640,592,640,639,640,640, \
+ 640,640,640,639,640,639,640,640,640,639,640,640,640,640,640,640, \
+ 640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640, \
+ 639,640,639,639,688,688,688,639,640,639,640,640,640,687,688,688, \
+ 688,687,687,688,688,688,688,688,688,688,688,687,688,736,688,688, \
+ 688,687,636,688,688,688,688,688,688,688,688,688,688,688,688,688, \
+ 688,688,688,688,688,688,688,688,688,688,687,688,688,688,688,688, \
+ 688,688,688,688,688,688,688,688,688,688,688,688,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,688,735,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,735,736,735,736,736, \
+ 736,735,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,735,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,784,736,784,784,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 784,736,784,784,784,784,784,784,736,784,736,784,784,784,784,736, \
+ 784,783,784,784,784,784,784,784,784,784,784,784,784,784,784,784, \
+ 784,784,784,784,784,784,784,784,784,784,784,832,784,784,784,784, \
+ 832,784,832,831,832,831,832,832,832,832,832,784,784,784,784,784, \
+ 832,784,832,784,832,832,832,832,832,832,832,832,832,832,832,832 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,-1,-1,-1,-1,5,6,6,7,7,8,8,9,9, \
+ 10,11,12,11,12,13,14,13,14,15,16,15,16,16,17,17, \
+ 18,19,19,19,20,20,21,22,23,22,23,24,25,24,25,26, \
+ 27,26,27,27,28,28,29,29,30,31,32,31,32,32,33,34, \
+ 35,34,35,36,36,38,38,38,39,40,40,40,41,41,41,41, \
+ 42,43,44,44,48,48,48,48,48,50,52,50,52,52,54,54, \
+ 56,56,58,54,54,54,56,56,56,56,58,58,60,60,62,64, \
+ 64,64,62,62,64,64,64,64,64,66,66,68,68,70,68,72, \
+ 70,72,74,72,74,72,72,72,74,74,76,72,72,72,74,74, \
+ 76,76,76,76,78,78,78,80,80,80,80,80,80,80,87,90, \
+ 87,90,90,93,93,90,90,90,90,93,93,93,90,96,96,93, \
+ 96,96,96,96,96,93,99,96,102,99,99,99,96,102,102,102, \
+ 108,102,105,105,105,108,111,111,108,111,111,111,111,111,111,117, \
+ 114,117,114,117,117,120,120,120,120,120,120,120,123,126,126,126, \
+ 126,129,129,129,129,129,132,132,132,135,135,135,141,141,141,141, \
+ 141,141,148,148,148,152,148,152,152,148,152,156,156,156,156,156, \
+ 160,135,141,152,141,141,141,141,141,141,141,141,141,141,141,141, \
+ 141,141,152,141,156,152,156,156,160,160,160,152,160,156,156,156, \
+ 160,160,156,168,160,168,164,164,168,160,168,176,172,168,168,172, \
+ 172,172,176,176,188,176,176,172,188,188,188,188,188,187,188,188, \
+ 188,188,188,188,196,188,196,196,196,196,196,204,204,204,204,204, \
+ 204,204,204,212,212,212,212,212,212,212,212,220,220,220,220,220, \
+ 220,220,220,219,220,220,220,228,220,228,220,220,228,228,220,220, \
+ 220,236,236,228,228,236,228,236,228,244,244,228,244,244,236,236, \
+ 258,236,258,258,258,258,258,258,258,264,258,264,264,264,264,264, \
+ 264,264,264,264,264,258,264,258,264,282,258,264,282,282,282,282, \
+ 282,264,264,282,282,276,264,264,282,294,282,282,282,282,282,282, \
+ 282,282,282,282,282,282,282,282,282,282,282,282,294,282,282,282, \
+ 282,282,282,306,282,282,306,306,282,306,306,306,306,318,306,318, \
+ 318,318,318,318,318,318,318,318,318,318,318,330,330,318,318,318, \
+ 330,318,318,330,330,318,318,318,318,318,318,330,342,330,330,330, \
+ 330,330,330,330,330,330,330,330,330,318,330,318,318,342,342,318, \
+ 342,318,318,342,318,330,330,330,330,330,318,330,330,318,330,318, \
+ 342,330,342,342,342,342,342,342,342,330,342,342,330,342,342,342, \
+ 342,354,342,342,342,342,342,342,342,354,342,342,354,354,354,342, \
+ 354,354,354,354,354,354,354,378,366,366,366,366,378,366,366,366, \
+ 378,408,366,378,378,378,378,378,378,378,378,378,378,424,424,424, \
+ 424,424,424,424,424,408,408,408,408,408,408,408,408,408,408,408, \
+ 408,408,424,424,408,424,408,424,424,408,408,424,424,424,424,424, \
+ 424,424,424,424,424,424,408,424,424,424,424,424,440,424,440,424, \
+ 424,440,424,424,424,424,440,440,440,440,424,424,440,440,424,424, \
+ 424,424,440,424,440,456,456,424,440,440,440,440,456,424,424,424, \
+ 440,440,456,440,472,456,440,440,472,440,456,440,440,440,456,440, \
+ 440,440,456,456,456,472,471,472,456,472,440,472,488,488,455,455, \
+ 456,456,488,456,472,488,504,472,456,504,488,488,456,472,472,471, \
+ 472,502,472,472,496,488,487,503,456,504,504,503,504,456,456,487, \
+ 488,488,504,488,487,504,503,503,504,504,503,503,503,504,502,503, \
+ 502,504,519,501,504,551,502,520,520,488,504,479,517,503,488,463, \
+ 472,456,504,503,487,519,552,534,485,480,486,502,499,552,504,534, \
+ 486,440,504,511,512,533,516,472,536,567,534,494,519,440,542,534, \
+ 528,592,468,536,516,485,472,583,550,509,537,471,493,533,526,446, \
+ 558,498,499,495,487,571,500,544,471,583,545,530,470,566,520,536, \
+ 558,463,504,544,534,494,520,542,522,520,552,520,514,483,434,607, \
+ 566,538,536,552,486,607,623,606,520,453,588,476,614,497,472,504, \
+ 504,566,552,504,504,504,504,504,504,504,504,504,504,552,520,504, \
+ 520,520,520,504,520,520,504,520,536,520,520,536,536,536,536,536, \
+ 536,536,536,586,536,536,520,555,504,565,520,552,536,552,552,552, \
+ 552,552,552,552,552,552,552,552,552,552,552,552,552,552,568,552, \
+ 568,552,568,568,568,568,559,560,568,552,552,568,568,552,568,584, \
+ 552,552,552,552,552,552,568,568,552,568,568,552,568,568,552,552, \
+ 584,568,568,568,568,568,568,568,568,568,552,568,584,584,568,552, \
+ 584,584,584,584,584,584,584,568,568,568,568,616,568,568,616,568, \
+ 600,584,600,600,600,632,616,600,584,616,616,632,632,584,632,616, \
+ 616,616,616,616,616,632,632,616,616,632,632,616,616,632,616,616 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,7,10,9,10,11,12,13, \
+ 14,15,16,17,18,16,14,16,16,19,19,18,20,19,20,18, \
+ 24,19,20,23,24,21,21,23,27,24,28,29,28,28,28,28, \
+ 31,31,30,28,34,29,32,32,33,34,35,31,34,38,38,34, \
+ 35,36,38,38,38,40,41,43,39,42,43,42,42,43,44,43, \
+ 45,48,49,48,51,50,50,48,50,48,51,50,51,52,53,50, \
+ 55,51,53,54,56,59,56,59,58,55,57,59,59,63,64,63, \
+ 63,64,64,59,64,64,67,64,63,67,67,71,67,67,71,66, \
+ 75,75,75,75,73,75,73,75,75,75,73,75,84,73,74,73, \
+ 76,76,75,81,76,79,81,84,81,83,84,84,84,84,88,86, \
+ 83,88,96,94,96,96,96,96,96,96,96,95,96,96,96,104, \
+ 96,100,100,104,104,104,96,96,96,104,100,96,102,96,104,104, \
+ 102,104,100,104,112,104,104,112,112,112,104,112,120,112,112,112, \
+ 112,120,110,118,118,118,119,112,120,118,120,112,118,127,128,128, \
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,136,128,136, \
+ 128,128,128,128,128,128,128,128,127,128,128,128,128,128,130,133, \
+ 134,136,136,135,136,136,150,136,136,138,148,140,136,143,148,150, \
+ 150,150,150,148,150,148,148,150,156,149,168,150,160,161,168,168, \
+ 168,168,168,162,168,162,167,168,168,168,168,168,162,174,168,168, \
+ 174,174,184,168,168,176,162,168,192,174,168,168,173,174,186,174, \
+ 174,168,192,174,168,174,168,168,186,192,192,180,174,176,192,192, \
+ 185,192,192,180,192,192,186,192,192,192,192,192,184,192,208,208, \
+ 208,208,190,192,190,192,192,191,186,192,192,208,192,192,192,192, \
+ 192,192,196,204,204,192,204,192,208,192,191,192,208,208,198,208, \
+ 205,220,197,218,222,208,216,199,207,220,206,224,214,204,208,219, \
+ 221,209,227,207,221,216,208,236,222,244,225,208,208,212,224,222, \
+ 229,230,225,221,222,256,227,240,221,224,240,216,240,231,224,263, \
+ 246,232,240,240,240,240,239,240,240,234,234,240,234,238,240,240, \
+ 240,240,256,256,240,256,240,240,240,234,256,240,240,256,234,256, \
+ 256,239,272,244,256,255,256,240,256,240,256,255,240,255,256,256, \
+ 256,254,254,256,244,256,256,256,256,256,256,256,256,253,272,255, \
+ 256,256,252,256,256,256,256,256,256,272,256,256,256,256,257,272, \
+ 272,272,272,272,264,270,272,288,272,280,282,282,280,280,270,282, \
+ 282,282,288,282,288,282,282,300,286,288,300,282,282,288,300,312, \
+ 300,298,306,300,304,304,304,300,300,300,316,306,300,288,306,311, \
+ 324,312,320,300,306,336,320,300,324,320,336,336,336,328,336,324, \
+ 336,336,328,336,322,328,336,336,336,336,312,336,336,336,336,336, \
+ 336,336,336,335,336,344,348,336,353,349,336,336,348,348,346,336, \
+ 352,320,336,336,336,336,352,336,336,336,336,336,336,336,336,336, \
+ 336,336,336,330,336,336,336,336,334,335,336,336,344,344,348,336, \
+ 348,336,352,336,336,348,336,348,336,348,352,351,348,336,336,336, \
+ 352,352,352,348,352,336,336,384,336,336,352,348,336,348,376,352, \
+ 352,372,384,352,384,352,352,352,348,384,348,349,384,351,384,353, \
+ 368,352,350,353,378,372,372,372,384,352,384,352,408,384,378,368, \
+ 383,384,408,356,371,368,372,371,384,376,384,408,384,407,372,384, \
+ 408,369,406,383,377,384,394,382,370,416,408,378,369,372,381,400, \
+ 378,408,376,402,417,408,376,384,382,384,384,408,384,384,384,408, \
+ 384,416,408,408,416,384,384,384,408,384,384,384,396,408,408,408, \
+ 408,408,408,406,408,408,416,416,408,408,408,408,408,416,408,416, \
+ 408,405,416,408,408,440,408,416,416,416,440,408,408,408,440,444, \
+ 408,440,440,408,415,419,440,440,444,443,436,436,440,447,448,440, \
+ 440,416,440,439,440,444,440,444,468,448,440,416,440,416,465,465, \
+ 468,436,468,440,472,439,440,468,472,448,465,468,464,439,440,480, \
+ 480,472,439,468,440,440,468,440,468,468,444,440,448,480,438,440, \
+ 504,439,440,467,480,468,448,465,466,440,468,464,440,472,448,468, \
+ 468,469,456,465,448,460,472,472,468,469,465,480,480,468,472,512, \
+ 468,464,465,469,480,468,504,466,468,480,480,480,468,512,504,469, \
+ 466,466,472,468,480,480,512,469,472,480,480,480,504,477,500,466, \
+ 504,468,480,512,504,512,504,480,480,511,512,510,492,511,503,513, \
+ 503,502,504,512,504,512,504,512,504,512,504,512,513,503,512,504, \
+ 513,504,512,512,510,501,513,503,512,513,498,504,512,510,502,512, \
+ 501,500,552,497,516,511,503,513,497,511,502,509,564,509,504,512, \
+ 503,504,512,504,504,500,512,512,512,511,512,504,557,504,564,564, \
+ 512,564,514,512,516,512,560,564,560,564,564,512,564,564,564,560 \
+
+#define MPFR_MUL_THRESHOLD 15 /* limbs */
+#define MPFR_SQR_THRESHOLD 14 /* limbs */
+#define MPFR_DIV_THRESHOLD 27 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 562 /* bits */
+#define MPFR_EXP_THRESHOLD 9671 /* bits */
+#define MPFR_SINCOS_THRESHOLD 30620 /* bits */
+#define MPFR_AI_THRESHOLD1 -28021 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 2991
+#define MPFR_AI_THRESHOLD3 37474
+/* Tuneup completed successfully, took 6469 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/x86_64/core2/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/x86_64/core2/mparam.h
new file mode 100644
index 00000000000..5d40b40d96a
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/x86_64/core2/mparam.h
@@ -0,0 +1,236 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.3.2 */
+/* gcc14.fsffrance.org (Intel(R) Xeon(R) CPU X5450 @ 3.00GHz) with gmp 5.0.2 */
+
+/* very similar timings were obtained on 2012-01-25 with gcc 4.1.3
+ on gcc70.fsffrance.org (Intel(R) Xeon(TM) CPU 3.20GHz) with gmp 5.0.2,
+ where GMP defines -mtune=nocona, thus we share the parameters */
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,9, \
+ 10,10,12,12,13,13,13,13,14,16,16,17,18,19,20,24, \
+ 24,24,24,24,26,26,26,26,28,28,28,30,30,32,32,28, \
+ 28,30,30,32,32,32,32,32,32,32,32,34,36,48,38,36, \
+ 40,46,48,48,48,48,48,48,48,48,48,48,48,56,56,56, \
+ 56,48,48,48,56,60,60,60,64,64,56,56,56,60,60,60, \
+ 64,69,64,64,64,69,69,69,69,69,69,69,64,64,75,81, \
+ 81,80,80,80,81,81,81,81,81,81,87,81,87,87,92,93, \
+ 92,87,93,92,87,90,93,92,93,92,90,93,92,93,92,93, \
+ 92,93,93,93,104,93,99,93,99,104,105,104,105,104,105,104, \
+ 111,104,111,110,104,117,117,117,117,117,117,104,105,141,141,140, \
+ 141,141,141,141,141,141,141,141,141,141,141,141,141,140,141,141, \
+ 141,141,141,141,141,141,141,141,140,141,141,141,141,138,140,141, \
+ 141,141,140,141,141,141,141,141,141,141,141,141,165,141,153,141, \
+ 153,165,188,188,188,188,188,188,188,188,188,188,188,188,188,188, \
+ 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, \
+ 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, \
+ 188,188,204,204,188,203,188,188,204,204,188,188,216,220,220,220, \
+ 220,204,204,220,220,220,220,220,220,220,220,220,220,220,220,220, \
+ 220,220,220,235,236,219,220,220,236,236,236,236,236,236,236,236, \
+ 236,236,236,236,236,236,236,282,282,282,282,282,282,282,282,282, \
+ 282,282,282,282,282,282,282,282,282,281,282,280,282,282,282,282, \
+ 282,282,282,282,282,282,282,281,281,282,281,281,282,282,282,282, \
+ 282,282,282,282,282,282,282,282,282,282,282,281,282,280,281,282, \
+ 282,282,282,282,306,282,306,330,330,306,281,330,282,282,330,330, \
+ 330,282,330,329,330,330,330,330,330,330,330,330,330,330,330,330, \
+ 330,330,330,330,330,330,330,330,330,330,354,354,330,330,330,329, \
+ 330,330,330,330,330,330,330,329,330,330,354,354,330,330,330,330, \
+ 330,330,378,330,354,330,354,354,354,354,354,377,378,354,354,354, \
+ 378,354,378,378,354,353,354,378,354,378,378,377,378,378,378,408, \
+ 408,408,378,408,408,408,378,416,408,408,377,378,378,408,408,407, \
+ 408,408,408,408,408,408,408,440,408,440,440,440,439,440,440,440, \
+ 432,439,440,440,440,439,440,440,440,439,440,439,440,439,440,440, \
+ 440,440,440,439,440,440,440,440,440,439,440,440,440,440,439,440, \
+ 440,440,440,439,471,440,440,440,440,440,440,439,440,440,440,440, \
+ 440,440,440,440,440,440,472,440,440,439,440,440,440,439,440,440, \
+ 440,472,439,440,440,440,472,440,471,472,472,472,472,472,472,471, \
+ 471,472,471,472,472,472,504,504,504,504,504,504,504,504,472,471, \
+ 472,472,504,472,471,472,504,504,504,504,504,503,504,504,504,504, \
+ 504,503,504,504,504,504,503,504,504,504,504,504,503,504,504,504, \
+ 504,504,503,504,504,504,504,504,504,504,504,504,504,504,504,504, \
+ 504,504,504,504,544,544,544,544,544,544,544,544,544,544,544,544, \
+ 542,543,544,544,544,544,544,544,544,544,544,544,544,544,544,544, \
+ 543,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544, \
+ 544,592,544,544,592,592,544,592,592,591,592,592,632,631,592,592, \
+ 592,592,592,592,592,640,640,640,640,640,616,616,616,616,616,616, \
+ 632,592,616,616,632,630,631,632,632,632,616,632,640,632,632,640, \
+ 640,640,640,640,640,640,639,640,632,632,639,640,640,640,632,632, \
+ 640,639,640,640,632,640,640,640,640,640,640,640,640,640,640,640, \
+ 640,640,640,640,640,640,632,640,640,640,640,640,640,640,640,640, \
+ 640,640,640,640,640,640,640,640,640,640,632,688,640,640,632,632, \
+ 640,640,640,640,639,640,640,640,688,632,687,640,712,688,640,640, \
+ 640,640,640,712,640,640,640,712,736,640,640,640,711,712,736,736, \
+ 640,640,688,712,712,712,712,712,728,736,728,728,736,736,736,736, \
+ 736,736,736,736,734,736,728,736,736,736,728,736,736,736,736,736, \
+ 736,736,736,736,735,712,736,736,736,712,736,736,736,736,736,736, \
+ 736,736,736,712,736,736,712,736,728,712,736,712,736,736,736,736, \
+ 728,712,736,736,735,736,736,736,735,736,736,736,736,735,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,734,736,736, \
+ 736,736,735,736,736,736,735,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,735,736, \
+ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \
+ 824,824,832,832,832,832,824,832,832,832,832,832,824,831,832,832 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,0,0,0,0,0,0,5,6,6,7,8,8,8,10,9, \
+ 10,11,11,11,12,13,13,13,14,16,16,17,17,17,17,17, \
+ 18,19,20,21,20,23,24,21,26,23,23,24,24,24,25,28, \
+ 26,28,28,34,32,34,32,32,34,34,32,34,34,34,34,34, \
+ 34,36,40,38,38,36,42,42,40,40,40,40,42,42,42,42, \
+ 46,42,48,48,48,46,52,52,52,52,52,52,56,56,56,56, \
+ 64,56,64,64,64,64,68,56,64,64,64,68,63,64,64,68, \
+ 68,68,68,68,64,68,68,68,72,64,68,68,68,64,67,68, \
+ 68,68,68,68,68,68,72,84,80,72,72,72,72,72,76,76, \
+ 76,76,80,80,76,76,80,84,80,80,80,84,84,84,84,84, \
+ 84,84,84,96,84,84,92,92,96,96,96,99,92,92,92,95, \
+ 96,105,111,105,104,105,104,104,105,105,105,105,104,105,104,105, \
+ 99,114,105,116,117,117,117,123,117,123,116,123,116,111,123,123, \
+ 123,123,123,123,123,117,117,117,123,123,123,117,123,117,123,123, \
+ 123,123,123,123,117,123,123,123,156,123,123,141,123,123,135,135, \
+ 123,148,123,141,141,156,156,129,156,163,156,164,156,156,156,135, \
+ 156,141,155,164,156,156,164,148,148,147,141,164,164,164,164,156, \
+ 164,164,164,164,163,164,164,164,164,164,164,164,164,164,164,164, \
+ 164,156,164,164,156,164,164,164,188,163,164,164,164,164,187,188, \
+ 180,164,204,204,164,188,196,188,188,204,196,180,196,204,188,196, \
+ 220,187,204,220,204,180,220,220,204,204,196,204,220,204,220,220, \
+ 220,220,204,220,220,220,220,220,220,220,220,220,220,220,220,220, \
+ 252,220,220,220,220,220,252,220,252,220,220,220,220,252,252,252, \
+ 252,252,252,252,252,252,252,252,252,252,252,252,267,268,252,252, \
+ 252,250,252,252,252,268,251,252,268,252,268,268,268,252,252,252, \
+ 265,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268, \
+ 268,267,268,268,268,267,268,268,268,267,268,268,268,268,268,268, \
+ 268,268,252,268,252,268,268,268,268,268,268,265,268,268,268,268, \
+ 268,268,268,268,268,268,268,268,268,268,268,268,265,268,268,268, \
+ 252,268,268,266,268,268,268,328,265,282,312,268,268,268,268,268, \
+ 268,268,268,268,268,268,268,311,310,282,282,294,312,282,281,294, \
+ 282,268,312,312,268,311,312,268,268,312,268,312,312,268,312,327, \
+ 268,312,328,268,328,268,328,328,328,312,328,312,327,328,328,312, \
+ 327,328,328,327,325,327,327,359,328,328,327,328,328,328,328,328, \
+ 311,328,360,360,360,360,360,360,360,360,360,360,328,360,360,360, \
+ 328,312,328,360,327,328,328,359,360,328,359,328,312,360,360,327, \
+ 312,408,328,440,328,328,328,328,328,392,328,328,408,408,408,392, \
+ 407,408,408,408,392,407,408,408,407,407,408,408,408,392,408,408, \
+ 407,408,392,408,408,440,406,408,408,408,440,408,408,408,440,440, \
+ 440,440,440,392,440,392,440,440,440,440,440,440,440,440,440,440, \
+ 408,392,440,440,440,438,439,440,440,440,440,440,440,439,440,439, \
+ 440,440,440,504,408,504,408,408,408,472,408,408,407,408,440,439, \
+ 439,440,440,440,440,440,440,440,437,440,440,440,439,504,503,504, \
+ 504,503,504,504,440,502,504,503,503,504,504,503,504,504,504,504, \
+ 504,503,504,504,499,503,502,504,504,536,502,504,504,504,536,504, \
+ 504,504,503,504,504,503,536,504,502,536,503,504,504,504,536,536, \
+ 504,504,504,536,536,535,504,536,535,504,504,504,504,504,504,536, \
+ 536,536,503,536,504,503,536,536,504,535,536,536,504,535,520,536, \
+ 504,504,504,536,535,536,520,536,535,520,536,535,535,536,536,535, \
+ 504,536,536,535,536,535,535,536,536,536,536,536,535,504,536,536, \
+ 536,536,536,536,536,536,536,536,536,535,536,536,536,535,504,536, \
+ 536,536,536,536,504,535,536,536,536,535,535,536,536,536,536,536, \
+ 536,535,536,504,536,535,536,536,536,536,536,504,504,536,504,535, \
+ 536,504,536,535,536,504,504,504,536,536,504,536,504,536,504,536, \
+ 536,504,535,536,632,535,536,536,535,536,536,536,536,536,632,632, \
+ 536,631,536,536,535,536,536,536,536,535,536,536,536,631,632,632, \
+ 536,536,630,535,536,536,600,632,631,600,536,536,536,536,535,632, \
+ 536,598,536,600,536,631,600,568,632,568,568,568,568,568,664,566, \
+ 568,568,632,632,664,568,664,663,632,629,632,535,600,536,536,536, \
+ 632,536,536,599,536,630,536,632,631,632,600,600,600,664,600,664, \
+ 664,632,600,599,664,600,662,663,664,599,598,616,632,625,632,630, \
+ 628,627,630,631,632,663,632,631,632,630,632,631,632,626,632,632, \
+ 632,663,631,631,632,632,632,664,632,632,600,632,632,600,632,632, \
+ 600,600,632,632,632,662,663,663,663,600,664,632,664,663,664,632 \
+
+#define MPFR_DIVHIGH_TAB \
+ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,12,13, \
+ 14,15,16,13,14,14,14,15,15,17,17,17,19,19,19,19, \
+ 23,23,19,25,23,25,23,25,25,22,26,28,25,28,25,25, \
+ 28,27,31,27,29,28,33,31,32,33,31,32,33,33,35,35, \
+ 35,39,37,43,39,37,39,41,39,40,39,40,41,45,41,47, \
+ 45,45,47,43,44,45,50,54,49,46,53,47,55,56,52,55, \
+ 52,60,60,52,60,64,62,55,55,62,55,58,56,64,61,59, \
+ 63,63,64,59,60,60,63,64,64,63,64,64,68,68,66,66, \
+ 68,69,71,71,70,71,71,72,78,74,74,71,72,78,78,74, \
+ 76,77,78,79,78,80,79,79,84,83,80,80,82,95,96,83, \
+ 92,92,88,91,92,84,95,95,92,96,94,91,94,92,96,94, \
+ 96,96,96,104,94,94,112,112,104,112,112,112,96,112,112,112, \
+ 112,112,110,104,112,112,112,111,112,108,110,120,112,112,112,112, \
+ 112,112,120,112,120,120,112,120,120,120,120,120,128,120,120,116, \
+ 128,128,124,128,120,128,128,120,120,120,128,120,128,120,124,128, \
+ 128,128,128,127,128,128,126,128,128,128,128,127,136,128,138,137, \
+ 137,135,138,138,138,137,135,138,150,150,138,147,150,138,150,150, \
+ 150,150,160,160,156,150,156,148,150,158,162,160,161,160,150,160, \
+ 160,160,168,156,156,160,168,173,162,156,180,160,160,157,168,160, \
+ 160,160,162,168,168,160,184,162,184,162,160,160,174,160,184,180, \
+ 184,184,180,184,184,186,180,184,184,184,184,184,186,188,188,192, \
+ 185,184,184,186,192,192,192,186,182,192,192,185,184,184,192,208, \
+ 192,184,184,180,192,184,192,186,186,184,192,186,186,191,186,185, \
+ 192,216,192,192,208,192,191,192,192,192,204,192,207,192,216,208, \
+ 208,216,216,197,196,216,216,208,216,222,216,222,208,222,208,222, \
+ 224,208,209,216,216,209,224,207,216,222,224,224,208,223,224,224, \
+ 224,216,222,222,224,224,224,216,224,216,222,221,222,224,224,224, \
+ 224,224,224,232,224,222,224,232,225,233,224,240,224,232,256,240, \
+ 256,256,240,255,240,256,256,240,232,240,232,232,240,232,256,256, \
+ 256,256,256,256,256,256,255,256,256,240,256,240,256,240,254,252, \
+ 256,256,256,256,256,256,256,256,254,256,256,282,276,256,254,256, \
+ 256,255,282,256,255,256,255,256,255,288,256,264,264,256,274,276, \
+ 276,269,273,273,282,269,276,276,276,276,273,282,276,282,276,277, \
+ 280,312,282,281,288,282,276,282,276,276,288,312,276,288,300,276, \
+ 304,276,288,300,304,312,312,312,312,312,306,312,312,312,316,300, \
+ 324,312,320,320,300,312,312,312,312,324,312,330,300,320,312,312, \
+ 316,318,324,324,318,312,312,324,336,336,324,312,312,336,324,320, \
+ 312,336,312,324,336,336,336,368,324,348,312,336,368,312,312,320, \
+ 368,372,368,312,324,376,372,312,368,376,376,372,370,372,318,376, \
+ 320,372,372,368,372,324,376,376,376,376,368,372,376,376,376,376, \
+ 372,372,376,376,376,372,384,376,372,368,384,376,376,370,376,376, \
+ 376,371,372,368,384,336,370,370,376,372,376,376,368,376,376,372, \
+ 376,370,376,368,376,372,376,376,368,376,376,368,368,376,368,368, \
+ 370,370,372,368,372,376,376,376,376,368,370,368,368,372,376,376, \
+ 372,376,368,376,376,376,372,376,376,372,376,376,368,376,372,376, \
+ 372,368,376,370,376,372,376,372,376,376,372,370,376,376,370,372, \
+ 372,373,376,376,384,384,384,376,376,376,376,384,376,376,384,384, \
+ 384,416,384,384,408,384,416,384,384,384,384,408,416,416,416,432, \
+ 408,408,416,408,408,416,408,416,416,416,416,416,416,408,407,440, \
+ 432,408,416,408,416,440,416,408,416,416,432,416,416,440,416,416, \
+ 416,440,432,440,408,448,448,408,408,432,440,432,448,416,416,416, \
+ 440,432,432,416,448,432,465,440,432,440,480,448,416,448,432,432, \
+ 480,432,448,440,466,448,432,440,432,440,440,440,480,430,448,448, \
+ 448,439,440,432,438,447,448,440,440,440,448,448,480,432,448,448, \
+ 448,448,448,447,448,448,448,447,448,448,440,465,448,467,448,448, \
+ 448,448,464,464,448,448,466,480,480,480,468,480,448,464,480,464, \
+ 466,466,464,479,480,480,512,480,540,480,496,480,552,512,480,479, \
+ 504,480,552,552,512,480,504,552,564,512,480,480,504,561,564,564, \
+ 512,552,560,564,564,480,564,480,552,480,564,564,564,564,536,564, \
+ 540,564,552,564,564,564,564,552,564,552,564,480,564,552,552,564, \
+ 512,564,546,564,564,564,512,552,552,559,560,561,564,564,560,560, \
+ 552,561,564,564,560,564,561,564,564,564,564,564,564,564,564,560, \
+ 561,560,564,564,560,564,564,552,564,564,564,552,564,564,564,564, \
+ 564,563,564,564,564,564,560,564,564,564,564,552,564,564,560,564 \
+
+#define MPFR_MUL_THRESHOLD 7 /* limbs */
+#define MPFR_SQR_THRESHOLD 12 /* limbs */
+#define MPFR_DIV_THRESHOLD 20 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 1024 /* bits */
+#define MPFR_EXP_THRESHOLD 9670 /* bits */
+#define MPFR_SINCOS_THRESHOLD 23808 /* bits */
+#define MPFR_AI_THRESHOLD1 -13250 /* threshold for negative input of mpfr_ai */
+#define MPFR_AI_THRESHOLD2 1430
+#define MPFR_AI_THRESHOLD3 21190
+/* Tuneup completed successfully, took 770 seconds */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/x86_64/pentium4/mparam.h b/Build/source/libs/mpfr/mpfr-src/src/x86_64/pentium4/mparam.h
new file mode 100644
index 00000000000..19db0a4d670
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/x86_64/pentium4/mparam.h
@@ -0,0 +1,160 @@
+/* Various Thresholds of MPFR, not exported. -*- mode: C -*-
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Generated by MPFR's tuneup.c, 2009-02-09, gcc 4.3 */
+/* crumble.loria.fr with gmp-4.2.4 */
+
+
+#define MPFR_MULHIGH_TAB \
+ -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+ 0,0,0,19,20,20,24,26,0,0,24,26,28,27,26,28, \
+ 30,32,32,32,30,30,34,34,32,34,34,36,32,34,36,34, \
+ 35,0,0,36,36,0,37,48,0,0,48,48,51,0,48,52, \
+ 51,0,52,52,51,55,52,56,55,0,56,60,59,59,60,64, \
+ 63,63,64,64,67,67,68,72,63,71,72,60,67,67,60,72, \
+ 63,61,64,64,63,71,68,68,71,67,68,68,67,71,68,72, \
+ 68,68,72,72,76,76,69,69,72,72,71,103,104,72,73,96, \
+ 103,94,95,104,96,96,94,103,104,104,96,96,103,103,104,104, \
+ 120,120,103,103,104,104,120,111,103,112,104,104,120,120,109,103, \
+ 119,119,120,120,127,112,128,128,120,120,136,127,128,128,120,126, \
+ 121,129,126,134,135,135,136,120,113,113,114,118,127,127,136,120, \
+ 121,125,126,118,119,119,120,136,121,153,122,122,127,119,120,128, \
+ 165,153,162,134,163,159,136,136,153,153,134,158,135,135,136,136, \
+ 153,153,162,158,159,159,156,152,153,189,158,186,187,163,156,168, \
+ 189,159,165,165,176,176,172,172,183,173,164,174,165,165,176,176, \
+ 177,177,183,188,189,189,180,185,176,186,177,177,193,188,189,189, \
+ 200,200,201,201,177,207,188,198,199,189,200,200,186,201,207,207, \
+ 213,203,189,189,200,210,201,196,212,207,208,213,189,199,200,200, \
+ 203,209,216,204,199,223,206,200,213,225,208,208,203,203,216,204, \
+ 205,205,224,212,213,213,184,208,209,203,198,210,199,187,206,200, \
+ 201,189,208,208,203,185,216,198,187,199,200,212,213,213,202,208, \
+ 203,197,198,198,199,211,212,212,285,213,280,274,227,275,288,204, \
+ 284,284,278,285,307,216,273,308,309,309,275,219,213,311,305,284, \
+ 306,306,307,307,308,308,309,309,303,303,311,311,284,312,285,285, \
+ 307,286,287,308,309,309,303,303,304,332,305,305,306,299,328,300, \
+ 308,301,309,309,303,310,311,311,333,305,285,285,307,314,308,308, \
+ 321,305,354,322,331,355,332,308,309,333,334,334,303,303,304,312, \
+ 305,305,306,306,307,307,308,308,309,309,302,302,375,311,312,360, \
+ 353,305,330,354,307,355,380,308,357,309,358,358,359,311,312,312, \
+ 345,329,378,354,331,355,356,356,357,357,374,334,375,311,336,384, \
+ 356,329,330,357,331,358,404,332,369,333,334,334,335,353,354,354, \
+ 355,382,356,347,357,357,358,358,377,359,405,333,352,379,353,353, \
+ 354,354,355,355,356,356,357,357,358,376,359,377,369,360,379,370, \
+ 380,380,354,372,355,382,383,401,357,357,376,358,377,377,405,378, \
+ 379,379,380,380,381,381,402,402,353,403,404,404,405,405,376,376, \
+ 377,357,368,358,379,379,360,400,401,381,372,452,373,383,454,384, \
+ 405,405,456,356,357,357,358,378,379,379,490,370,381,381,492,402, \
+ 463,403,404,404,405,405,456,456,527,357,448,448,489,449,400,450, \
+ 453,453,454,454,455,455,456,456,468,490,491,491,492,404,405,482, \
+ 472,450,451,462,463,463,464,453,465,465,455,455,456,489,490,490, \
+ 491,491,492,492,405,526,483,527,484,484,452,452,486,453,454,454, \
+ 455,477,456,522,490,490,491,524,481,492,526,482,483,527,495,517, \
+ 521,533,522,474,499,523,524,524,489,489,490,526,527,527,528,528, \
+ 529,529,518,554,495,483,496,472,521,557,486,522,535,535,524,512, \
+ 525,561,526,526,491,527,528,528,529,517,518,554,531,519,544,520, \
+ 521,521,558,546,559,535,560,536,489,573,490,514,491,563,492,492, \
+ 528,489,555,555,491,491,492,596,597,545,546,546,560,599,600,600, \
+ 523,562,563,511,564,525,526,630,553,527,528,528,607,555,595,543, \
+ 544,531,532,571,559,559,599,560,535,535,562,562,563,537,564,564, \
+ 565,630,514,631,528,632,555,542,634,595,557,557,597,558,559,559, \
+ 571,599,530,530,559,545,546,616,561,547,548,534,633,563,564,564, \
+ 607,537,594,636,567,539,624,554,555,555,598,598,557,557,558,572, \
+ 559,559,560,574,603,561,562,632,563,563,578,592,593,607,580,608, \
+ 553,609,624,596,597,597,598,612,627,585,600,614,573,629,616,602, \
+ 599,599,585,585,616,616,587,632,603,603,634,634,635,605,636,621, \
+ 622,607,623,593,609,609,625,610,611,626,612,597,628,598,599,599, \
+ 600,630,631,616,602,632,633,603,634,634,635,635,636,636,607,637, \
+ 668,608,609,609,610,610,611,611,597,657,628,628,629,629,630,630, \
+ 609,625,562,626,627,563,564,628,629,629,630,630,631,599,664,632, \
+ 681,633,634,634,635,635,620,636,621,621,622,622,623,639,672,592, \
+ 609,641,594,594,595,627,596,564,629,597,598,598,631,599,600,600, \
+ 601,681,618,634,603,635,636,636,557,621,622,606,623,623,608,608 \
+
+#define MPFR_SQRHIGH_TAB \
+ -1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,8,8,9,9, \
+ 10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17, \
+ 18,18,19,19,20,20,21,21,22,22,23,23,26,24,25,25, \
+ 26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33, \
+ 34,34,35,35,36,36,37,38,39,39,39,39,40,40,41,41, \
+ 42,42,43,43,44,44,45,46,46,46,47,47,48,48,49,49, \
+ 50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57, \
+ 58,58,59,59,60,60,61,61,62,62,63,68,64,64,65,65, \
+ 66,68,67,69,68,68,71,69,70,75,76,76,72,72,73,73, \
+ 74,82,75,80,78,76,77,77,78,83,79,81,82,80,81,81, \
+ 82,82,83,85,84,84,85,85,86,86,87,87,88,88,89,89, \
+ 90,92,91,93,94,92,93,93,94,94,95,95,96,96,97,97, \
+ 98,98,99,99,100,100,101,101,102,102,103,103,104,104,105,105, \
+ 106,106,107,107,108,108,109,112,110,110,111,118,112,112,113,113, \
+ 114,114,115,122,123,116,117,117,118,118,119,119,120,120,121,121, \
+ 122,122,123,123,124,124,125,125,126,126,127,127,128,128,129,129, \
+ 130,154,135,131,132,132,133,133,134,134,135,135,136,140,151,137, \
+ 142,138,139,143,144,154,155,150,151,156,152,143,153,158,145,145, \
+ 165,146,147,147,152,162,149,149,150,150,151,151,152,171,153,153, \
+ 154,154,155,155,156,156,157,157,158,158,159,159,160,160,161,161, \
+ 162,162,163,163,164,164,165,165,166,166,167,167,168,168,169,169, \
+ 170,170,171,171,172,183,173,173,174,174,175,175,176,187,194,182, \
+ 183,178,179,179,180,180,181,181,182,182,183,183,195,184,185,185, \
+ 186,197,187,187,188,188,189,189,190,190,191,191,192,192,193,204, \
+ 207,200,201,208,209,196,197,203,204,198,199,199,200,200,201,201, \
+ 202,215,216,230,217,210,211,218,212,206,207,207,208,208,209,209, \
+ 210,230,231,231,232,225,226,226,227,227,228,242,222,257,217,217, \
+ 218,245,246,219,220,240,241,234,235,235,236,264,230,258,225,225, \
+ 226,226,227,227,228,228,229,260,261,230,231,270,247,232,233,233, \
+ 234,234,235,235,236,236,237,237,238,238,239,239,240,240,241,241, \
+ 242,242,243,243,244,244,245,245,246,246,247,247,248,248,249,249, \
+ 250,250,251,251,252,252,253,253,254,254,255,255,256,256,257,257, \
+ 258,258,259,259,260,260,261,261,262,262,263,263,264,264,265,265, \
+ 266,266,267,267,268,268,269,269,270,270,279,271,272,272,273,273, \
+ 274,274,275,275,276,276,277,277,278,278,279,279,280,280,281,281, \
+ 282,282,283,283,284,284,285,285,294,286,287,287,288,288,289,289, \
+ 290,290,291,291,292,292,293,293,294,294,295,295,296,296,297,297, \
+ 298,298,299,299,300,300,301,301,302,302,303,303,304,304,305,305, \
+ 306,306,307,307,308,308,309,309,310,310,311,311,312,312,313,313, \
+ 314,314,315,315,316,316,317,317,318,318,319,319,320,320,321,321, \
+ 322,322,323,323,324,324,325,325,326,326,327,337,349,338,329,329, \
+ 330,330,331,331,332,332,333,333,334,334,335,335,336,336,337,337, \
+ 338,338,339,360,340,340,341,341,342,342,343,343,344,354,355,345, \
+ 346,346,368,368,369,369,359,349,393,382,383,361,362,362,363,363, \
+ 365,365,366,390,367,391,380,404,358,393,406,382,383,395,396,396, \
+ 385,409,386,410,387,399,388,412,413,401,390,367,368,403,404,416, \
+ 417,405,382,406,407,407,408,408,409,409,410,410,435,411,412,412, \
+ 413,413,414,379,439,427,428,392,393,441,442,430,479,455,444,432, \
+ 437,386,451,387,465,439,427,389,390,454,455,455,404,417,444,444, \
+ 394,394,395,446,460,460,461,487,410,475,399,476,477,464,401,465, \
+ 402,492,403,403,404,404,405,405,406,406,407,419,408,408,409,409, \
+ 410,410,411,411,412,412,413,413,414,414,415,415,416,416,417,417, \
+ 418,418,419,419,420,420,421,421,422,422,423,423,424,424,425,508, \
+ 426,426,427,427,428,428,429,429,430,430,431,431,432,432,433,433, \
+ 434,434,435,435,436,436,437,437,438,438,439,536,440,440,441,441, \
+ 442,442,443,443,444,444,445,445,446,446,447,447,448,448,449,476, \
+ 450,450,451,451,452,452,482,453,454,454,455,455,456,456,457,457, \
+ 458,458,459,459,460,460,461,461,462,462,463,463,464,464,465,465, \
+ 466,466,467,467,468,468,469,469,470,470,471,471,472,472,473,473, \
+ 474,474,475,475,476,476,477,477,478,478,479,479,480,480,481,481, \
+ 482,482,483,483,484,484,485,485,486,486,487,487,488,488,489,489, \
+ 490,490,491,491,492,492,493,493,494,494,495,495,496,496,497,497, \
+ 498,498,499,499,500,500,501,501,502,502,503,503,504,504,505,505, \
+ 506,506,507,507,508,508,509,509,510,510,511,511,512,512,513,513 \
+
+#define MPFR_MUL_THRESHOLD 8 /* limbs */
+#define MPFR_EXP_2_THRESHOLD 519 /* bits */
+#define MPFR_EXP_THRESHOLD 6533 /* bits */
diff --git a/Build/source/libs/mpfr/mpfr-src/src/yn.c b/Build/source/libs/mpfr/mpfr-src/src/yn.c
new file mode 100644
index 00000000000..c2c6bc97ea4
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/yn.c
@@ -0,0 +1,426 @@
+/* mpfr_y0, mpfr_y1, mpfr_yn -- Bessel functions of 2nd kind, integer order.
+ http://www.opengroup.org/onlinepubs/009695399/functions/y0.html
+
+Copyright 2007-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+static int mpfr_yn_asympt (mpfr_ptr, long, mpfr_srcptr, mpfr_rnd_t);
+
+int
+mpfr_y0 (mpfr_ptr res, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ return mpfr_yn (res, 0, z, r);
+}
+
+int
+mpfr_y1 (mpfr_ptr res, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ return mpfr_yn (res, 1, z, r);
+}
+
+/* compute in s an approximation of S1 = sum((n-k)!/k!*y^k,k=0..n)
+ return e >= 0 the exponent difference between the maximal value of |s|
+ during the for loop and the final value of |s|.
+*/
+static mpfr_exp_t
+mpfr_yn_s1 (mpfr_ptr s, mpfr_srcptr y, unsigned long n)
+{
+ unsigned long k;
+ mpz_t f;
+ mpfr_exp_t e, emax;
+
+ mpz_init_set_ui (f, 1);
+ /* we compute n!*S1 = sum(a[k]*y^k,k=0..n) where a[k] = n!*(n-k)!/k!,
+ a[0] = (n!)^2, a[1] = n!*(n-1)!, ..., a[n-1] = n, a[n] = 1 */
+ mpfr_set_ui (s, 1, MPFR_RNDN); /* a[n] */
+ emax = MPFR_EXP(s);
+ for (k = n; k-- > 0;)
+ {
+ /* a[k]/a[k+1] = (n-k)!/k!/(n-(k+1))!*(k+1)! = (k+1)*(n-k) */
+ mpfr_mul (s, s, y, MPFR_RNDN);
+ mpz_mul_ui (f, f, n - k);
+ mpz_mul_ui (f, f, k + 1);
+ /* invariant: f = a[k] */
+ mpfr_add_z (s, s, f, MPFR_RNDN);
+ e = MPFR_EXP(s);
+ if (e > emax)
+ emax = e;
+ }
+ /* now we have f = (n!)^2 */
+ mpz_sqrt (f, f);
+ mpfr_div_z (s, s, f, MPFR_RNDN);
+ mpz_clear (f);
+ return emax - MPFR_EXP(s);
+}
+
+/* compute in s an approximation of
+ S3 = c*sum((h(k)+h(n+k))*y^k/k!/(n+k)!,k=0..infinity)
+ where h(k) = 1 + 1/2 + ... + 1/k
+ k=0: h(n)
+ k=1: 1+h(n+1)
+ k=2: 3/2+h(n+2)
+ Returns e such that the error is bounded by 2^e ulp(s).
+*/
+static mpfr_exp_t
+mpfr_yn_s3 (mpfr_ptr s, mpfr_srcptr y, mpfr_srcptr c, unsigned long n)
+{
+ unsigned long k, zz;
+ mpfr_t t, u;
+ mpz_t p, q; /* p/q will store h(k)+h(n+k) */
+ mpfr_exp_t exps, expU;
+
+ zz = mpfr_get_ui (y, MPFR_RNDU); /* y = z^2/4 */
+ MPFR_ASSERTN (zz < ULONG_MAX - 2);
+ zz += 2; /* z^2 <= 2^zz */
+ mpz_init_set_ui (p, 0);
+ mpz_init_set_ui (q, 1);
+ /* initialize p/q to h(n) */
+ for (k = 1; k <= n; k++)
+ {
+ /* p/q + 1/k = (k*p+q)/(q*k) */
+ mpz_mul_ui (p, p, k);
+ mpz_add (p, p, q);
+ mpz_mul_ui (q, q, k);
+ }
+ mpfr_init2 (t, MPFR_PREC(s));
+ mpfr_init2 (u, MPFR_PREC(s));
+ mpfr_fac_ui (t, n, MPFR_RNDN);
+ mpfr_div (t, c, t, MPFR_RNDN); /* c/n! */
+ mpfr_mul_z (u, t, p, MPFR_RNDN);
+ mpfr_div_z (s, u, q, MPFR_RNDN);
+ exps = MPFR_EXP (s);
+ expU = exps;
+ for (k = 1; ;k ++)
+ {
+ /* update t */
+ mpfr_mul (t, t, y, MPFR_RNDN);
+ mpfr_div_ui (t, t, k, MPFR_RNDN);
+ mpfr_div_ui (t, t, n + k, MPFR_RNDN);
+ /* update p/q:
+ p/q + 1/k + 1/(n+k) = [p*k*(n+k) + q*(n+k) + q*k]/(q*k*(n+k)) */
+ mpz_mul_ui (p, p, k);
+ mpz_mul_ui (p, p, n + k);
+ mpz_addmul_ui (p, q, n + 2 * k);
+ mpz_mul_ui (q, q, k);
+ mpz_mul_ui (q, q, n + k);
+ mpfr_mul_z (u, t, p, MPFR_RNDN);
+ mpfr_div_z (u, u, q, MPFR_RNDN);
+ exps = MPFR_EXP (u);
+ if (exps > expU)
+ expU = exps;
+ mpfr_add (s, s, u, MPFR_RNDN);
+ exps = MPFR_EXP (s);
+ if (exps > expU)
+ expU = exps;
+ if (MPFR_EXP (u) + (mpfr_exp_t) MPFR_PREC (u) < MPFR_EXP (s) &&
+ zz / (2 * k) < k + n)
+ break;
+ }
+ mpfr_clear (t);
+ mpfr_clear (u);
+ mpz_clear (p);
+ mpz_clear (q);
+ exps = expU - MPFR_EXP (s);
+ /* the error is bounded by (6k^2+33/2k+11) 2^exps ulps
+ <= 8*(k+2)^2 2^exps ulps */
+ return 3 + 2 * MPFR_INT_CEIL_LOG2(k + 2) + exps;
+}
+
+int
+mpfr_yn (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
+{
+ int inex;
+ unsigned long absn;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC
+ (("n=%ld x[%Pu]=%.*Rg rnd=%d", n, mpfr_get_prec (z), mpfr_log_prec, z, r),
+ ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (res), mpfr_log_prec, res, inex));
+
+ absn = SAFE_ABS (unsigned long, n);
+
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (z)))
+ {
+ if (MPFR_IS_NAN (z))
+ {
+ MPFR_SET_NAN (res); /* y(n,NaN) = NaN */
+ MPFR_RET_NAN;
+ }
+ /* y(n,z) tends to zero when z goes to +Inf, oscillating around
+ 0. We choose to return +0 in that case. */
+ else if (MPFR_IS_INF (z))
+ {
+ if (MPFR_SIGN(z) > 0)
+ return mpfr_set_ui (res, 0, r);
+ else /* y(n,-Inf) = NaN */
+ {
+ MPFR_SET_NAN (res);
+ MPFR_RET_NAN;
+ }
+ }
+ else /* y(n,z) tends to -Inf for n >= 0 or n even, to +Inf otherwise,
+ when z goes to zero */
+ {
+ MPFR_SET_INF(res);
+ if (n >= 0 || ((unsigned long) n & 1) == 0)
+ MPFR_SET_NEG(res);
+ else
+ MPFR_SET_POS(res);
+ mpfr_set_divby0 ();
+ MPFR_RET(0);
+ }
+ }
+
+ /* for z < 0, y(n,z) is imaginary except when j(n,|z|) = 0, which we
+ assume does not happen for a rational z. */
+ if (MPFR_SIGN(z) < 0)
+ {
+ MPFR_SET_NAN (res);
+ MPFR_RET_NAN;
+ }
+
+ /* now z is not singular, and z > 0 */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Deal with tiny arguments. We have:
+ y0(z) = 2 log(z)/Pi + 2 (euler - log(2))/Pi + O(log(z)*z^2), more
+ precisely for 0 <= z <= 1/2, with g(z) = 2/Pi + 2(euler-log(2))/Pi/log(z),
+ g(z) - 0.41*z^2 < y0(z)/log(z) < g(z)
+ thus since log(z) is negative:
+ g(z)*log(z) < y0(z) < (g(z) - z^2/2)*log(z)
+ and since |g(z)| >= 0.63 for 0 <= z <= 1/2, the relative error on
+ y0(z)/log(z) is bounded by 0.41*z^2/0.63 <= 0.66*z^2.
+ Note: we use both the main term in log(z) and the constant term, because
+ otherwise the relative error would be only in 1/log(|log(z)|).
+ */
+ if (n == 0 && MPFR_EXP(z) < - (mpfr_exp_t) (MPFR_PREC(res) / 2))
+ {
+ mpfr_t l, h, t, logz;
+ mpfr_prec_t prec;
+ int ok, inex2;
+
+ prec = MPFR_PREC(res) + 10;
+ mpfr_init2 (l, prec);
+ mpfr_init2 (h, prec);
+ mpfr_init2 (t, prec);
+ mpfr_init2 (logz, prec);
+ /* first enclose log(z) + euler - log(2) = log(z/2) + euler */
+ mpfr_log (logz, z, MPFR_RNDD); /* lower bound of log(z) */
+ mpfr_set (h, logz, MPFR_RNDU); /* exact */
+ mpfr_nextabove (h); /* upper bound of log(z) */
+ mpfr_const_euler (t, MPFR_RNDD); /* lower bound of euler */
+ mpfr_add (l, logz, t, MPFR_RNDD); /* lower bound of log(z) + euler */
+ mpfr_nextabove (t); /* upper bound of euler */
+ mpfr_add (h, h, t, MPFR_RNDU); /* upper bound of log(z) + euler */
+ mpfr_const_log2 (t, MPFR_RNDU); /* upper bound of log(2) */
+ mpfr_sub (l, l, t, MPFR_RNDD); /* lower bound of log(z/2) + euler */
+ mpfr_nextbelow (t); /* lower bound of log(2) */
+ mpfr_sub (h, h, t, MPFR_RNDU); /* upper bound of log(z/2) + euler */
+ mpfr_const_pi (t, MPFR_RNDU); /* upper bound of Pi */
+ mpfr_div (l, l, t, MPFR_RNDD); /* lower bound of (log(z/2)+euler)/Pi */
+ mpfr_nextbelow (t); /* lower bound of Pi */
+ mpfr_div (h, h, t, MPFR_RNDD); /* upper bound of (log(z/2)+euler)/Pi */
+ mpfr_mul_2ui (l, l, 1, MPFR_RNDD); /* lower bound on g(z)*log(z) */
+ mpfr_mul_2ui (h, h, 1, MPFR_RNDU); /* upper bound on g(z)*log(z) */
+ /* we now have l <= g(z)*log(z) <= h, and we need to add -z^2/2*log(z)
+ to h */
+ mpfr_mul (t, z, z, MPFR_RNDU); /* upper bound on z^2 */
+ /* since logz is negative, a lower bound corresponds to an upper bound
+ for its absolute value */
+ mpfr_neg (t, t, MPFR_RNDD);
+ mpfr_div_2ui (t, t, 1, MPFR_RNDD);
+ mpfr_mul (t, t, logz, MPFR_RNDU); /* upper bound on z^2/2*log(z) */
+ mpfr_add (h, h, t, MPFR_RNDU);
+ inex = mpfr_prec_round (l, MPFR_PREC(res), r);
+ inex2 = mpfr_prec_round (h, MPFR_PREC(res), r);
+ /* we need h=l and inex=inex2 */
+ ok = (inex == inex2) && mpfr_equal_p (l, h);
+ if (ok)
+ mpfr_set (res, h, r); /* exact */
+ mpfr_clear (l);
+ mpfr_clear (h);
+ mpfr_clear (t);
+ mpfr_clear (logz);
+ if (ok)
+ goto end;
+ }
+
+ /* small argument check for y1(z) = -2/Pi/z + O(log(z)):
+ for 0 <= z <= 1, |y1(z) + 2/Pi/z| <= 0.25 */
+ if (n == 1 && MPFR_EXP(z) + 1 < - (mpfr_exp_t) MPFR_PREC(res))
+ {
+ mpfr_t y;
+ mpfr_prec_t prec;
+ mpfr_exp_t err1;
+ int ok;
+ MPFR_BLOCK_DECL (flags);
+
+ /* since 2/Pi > 0.5, and |y1(z)| >= |2/Pi/z|, if z <= 2^(-emax-1),
+ then |y1(z)| > 2^emax */
+ prec = MPFR_PREC(res) + 10;
+ mpfr_init2 (y, prec);
+ mpfr_const_pi (y, MPFR_RNDU); /* Pi*(1+u)^2, where here and below u
+ represents a quantity <= 1/2^prec */
+ mpfr_mul (y, y, z, MPFR_RNDU); /* Pi*z * (1+u)^4, upper bound */
+ MPFR_BLOCK (flags, mpfr_ui_div (y, 2, y, MPFR_RNDZ));
+ /* 2/Pi/z * (1+u)^6, lower bound, with possible overflow */
+ if (MPFR_OVERFLOW (flags))
+ {
+ mpfr_clear (y);
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_overflow (res, r, -1);
+ }
+ mpfr_neg (y, y, MPFR_RNDN);
+ /* (1+u)^6 can be written 1+7u [for another value of u], thus the
+ error on 2/Pi/z is less than 7ulp(y). The truncation error is less
+ than 1/4, thus if ulp(y)>=1/4, the total error is less than 8ulp(y),
+ otherwise it is less than 1/4+7/8 <= 2. */
+ if (MPFR_EXP(y) + 2 >= MPFR_PREC(y)) /* ulp(y) >= 1/4 */
+ err1 = 3;
+ else /* ulp(y) <= 1/8 */
+ err1 = (mpfr_exp_t) MPFR_PREC(y) - MPFR_EXP(y) + 1;
+ ok = MPFR_CAN_ROUND (y, prec - err1, MPFR_PREC(res), r);
+ if (ok)
+ inex = mpfr_set (res, y, r);
+ mpfr_clear (y);
+ if (ok)
+ goto end;
+ }
+
+ /* we can use the asymptotic expansion as soon as z > p log(2)/2,
+ but to get some margin we use it for z > p/2 */
+ if (mpfr_cmp_ui (z, MPFR_PREC(res) / 2 + 3) > 0)
+ {
+ inex = mpfr_yn_asympt (res, n, z, r);
+ if (inex != 0)
+ goto end;
+ }
+
+ /* General case */
+ {
+ mpfr_prec_t prec;
+ mpfr_exp_t err1, err2, err3;
+ mpfr_t y, s1, s2, s3;
+ MPFR_ZIV_DECL (loop);
+
+ mpfr_init (y);
+ mpfr_init (s1);
+ mpfr_init (s2);
+ mpfr_init (s3);
+
+ prec = MPFR_PREC(res) + 2 * MPFR_INT_CEIL_LOG2 (MPFR_PREC (res)) + 13;
+ MPFR_ZIV_INIT (loop, prec);
+ for (;;)
+ {
+ mpfr_set_prec (y, prec);
+ mpfr_set_prec (s1, prec);
+ mpfr_set_prec (s2, prec);
+ mpfr_set_prec (s3, prec);
+
+ mpfr_mul (y, z, z, MPFR_RNDN);
+ mpfr_div_2ui (y, y, 2, MPFR_RNDN); /* z^2/4 */
+
+ /* store (z/2)^n temporarily in s2 */
+ mpfr_pow_ui (s2, z, absn, MPFR_RNDN);
+ mpfr_div_2si (s2, s2, absn, MPFR_RNDN);
+
+ /* compute S1 * (z/2)^(-n) */
+ if (n == 0)
+ {
+ mpfr_set_ui (s1, 0, MPFR_RNDN);
+ err1 = 0;
+ }
+ else
+ err1 = mpfr_yn_s1 (s1, y, absn - 1);
+ mpfr_div (s1, s1, s2, MPFR_RNDN); /* (z/2)^(-n) * S1 */
+ /* See algorithms.tex: the relative error on s1 is bounded by
+ (3n+3)*2^(e+1-prec). */
+ err1 = MPFR_INT_CEIL_LOG2 (3 * absn + 3) + err1 + 1;
+ /* rel_err(s1) <= 2^(err1-prec), thus err(s1) <= 2^err1 ulps */
+
+ /* compute (z/2)^n * S3 */
+ mpfr_neg (y, y, MPFR_RNDN); /* -z^2/4 */
+ err3 = mpfr_yn_s3 (s3, y, s2, absn); /* (z/2)^n * S3 */
+ /* the error on s3 is bounded by 2^err3 ulps */
+
+ /* add s1+s3 */
+ err1 += MPFR_EXP(s1);
+ mpfr_add (s1, s1, s3, MPFR_RNDN);
+ /* the error is bounded by 1/2 + 2^err1*2^(- EXP(s1))
+ + 2^err3*2^(EXP(s3) - EXP(s1)) */
+ err3 += MPFR_EXP(s3);
+ err1 = (err3 > err1) ? err3 + 1 : err1 + 1;
+ err1 -= MPFR_EXP(s1);
+ err1 = (err1 >= 0) ? err1 + 1 : 1;
+ /* now the error on s1 is bounded by 2^err1*ulp(s1) */
+
+ /* compute S2 */
+ mpfr_div_2ui (s2, z, 1, MPFR_RNDN); /* z/2 */
+ mpfr_log (s2, s2, MPFR_RNDN); /* log(z/2) */
+ mpfr_const_euler (s3, MPFR_RNDN);
+ err2 = MPFR_EXP(s2) > MPFR_EXP(s3) ? MPFR_EXP(s2) : MPFR_EXP(s3);
+ mpfr_add (s2, s2, s3, MPFR_RNDN); /* log(z/2) + gamma */
+ err2 -= MPFR_EXP(s2);
+ mpfr_mul_2ui (s2, s2, 1, MPFR_RNDN); /* 2*(log(z/2) + gamma) */
+ mpfr_jn (s3, absn, z, MPFR_RNDN); /* Jn(z) */
+ mpfr_mul (s2, s2, s3, MPFR_RNDN); /* 2*(log(z/2) + gamma)*Jn(z) */
+ err2 += 4; /* the error on s2 is bounded by 2^err2 ulps, see
+ algorithms.tex */
+
+ /* add all three sums */
+ err1 += MPFR_EXP(s1); /* the error on s1 is bounded by 2^err1 */
+ err2 += MPFR_EXP(s2); /* the error on s2 is bounded by 2^err2 */
+ mpfr_sub (s2, s2, s1, MPFR_RNDN); /* s2 - (s1+s3) */
+ err2 = (err1 > err2) ? err1 + 1 : err2 + 1;
+ err2 -= MPFR_EXP(s2);
+ err2 = (err2 >= 0) ? err2 + 1 : 1;
+ /* now the error on s2 is bounded by 2^err2*ulp(s2) */
+ mpfr_const_pi (y, MPFR_RNDN); /* error bounded by 1 ulp */
+ mpfr_div (s2, s2, y, MPFR_RNDN); /* error bounded by
+ 2^(err2+1)*ulp(s2) */
+ err2 ++;
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (s2, prec - err2, MPFR_PREC(res), r)))
+ break;
+ MPFR_ZIV_NEXT (loop, prec);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ /* Assume two's complement for the test n & 1 */
+ inex = mpfr_set4 (res, s2, r, n >= 0 || (n & 1) == 0 ?
+ MPFR_SIGN (s2) : - MPFR_SIGN (s2));
+
+ mpfr_clear (y);
+ mpfr_clear (s1);
+ mpfr_clear (s2);
+ mpfr_clear (s3);
+ }
+
+ end:
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (res, inex, r);
+}
+
+#define MPFR_YN
+#include "jyn_asympt.c"
diff --git a/Build/source/libs/mpfr/mpfr-src/src/zeta.c b/Build/source/libs/mpfr/mpfr-src/src/zeta.c
new file mode 100644
index 00000000000..ef5c9395733
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/zeta.c
@@ -0,0 +1,466 @@
+/* mpfr_zeta -- compute the Riemann Zeta function
+
+Copyright 2003-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+/*
+ Parameters:
+ s - the input floating-point number
+ n, p - parameters from the algorithm
+ tc - an array of p floating-point numbers tc[1]..tc[p]
+ Output:
+ b is the result, i.e.
+ sum(tc[i]*product((s+2j)*(s+2j-1)/n^2,j=1..i-1), i=1..p)*s*n^(-s-1)
+*/
+static void
+mpfr_zeta_part_b (mpfr_t b, mpfr_srcptr s, int n, int p, mpfr_t *tc)
+{
+ mpfr_t s1, d, u;
+ unsigned long n2;
+ int l, t;
+ MPFR_GROUP_DECL (group);
+
+ if (p == 0)
+ {
+ MPFR_SET_ZERO (b);
+ MPFR_SET_POS (b);
+ return;
+ }
+
+ n2 = n * n;
+ MPFR_GROUP_INIT_3 (group, MPFR_PREC (b), s1, d, u);
+
+ /* t equals 2p-2, 2p-3, ... ; s1 equals s+t */
+ t = 2 * p - 2;
+ mpfr_set (d, tc[p], MPFR_RNDN);
+ for (l = 1; l < p; l++)
+ {
+ mpfr_add_ui (s1, s, t, MPFR_RNDN); /* s + (2p-2l) */
+ mpfr_mul (d, d, s1, MPFR_RNDN);
+ t = t - 1;
+ mpfr_add_ui (s1, s, t, MPFR_RNDN); /* s + (2p-2l-1) */
+ mpfr_mul (d, d, s1, MPFR_RNDN);
+ t = t - 1;
+ mpfr_div_ui (d, d, n2, MPFR_RNDN);
+ mpfr_add (d, d, tc[p-l], MPFR_RNDN);
+ /* since s is positive and the tc[i] have alternate signs,
+ the following is unlikely */
+ if (MPFR_UNLIKELY (mpfr_cmpabs (d, tc[p-l]) > 0))
+ mpfr_set (d, tc[p-l], MPFR_RNDN);
+ }
+ mpfr_mul (d, d, s, MPFR_RNDN);
+ mpfr_add (s1, s, __gmpfr_one, MPFR_RNDN);
+ mpfr_neg (s1, s1, MPFR_RNDN);
+ mpfr_ui_pow (u, n, s1, MPFR_RNDN);
+ mpfr_mul (b, d, u, MPFR_RNDN);
+
+ MPFR_GROUP_CLEAR (group);
+}
+
+/* Input: p - an integer
+ Output: fills tc[1..p], tc[i] = bernoulli(2i)/(2i)!
+ tc[1]=1/12, tc[2]=-1/720, tc[3]=1/30240, ...
+*/
+static void
+mpfr_zeta_c (int p, mpfr_t *tc)
+{
+ mpfr_t d;
+ int k, l;
+
+ if (p > 0)
+ {
+ mpfr_init2 (d, MPFR_PREC (tc[1]));
+ mpfr_div_ui (tc[1], __gmpfr_one, 12, MPFR_RNDN);
+ for (k = 2; k <= p; k++)
+ {
+ mpfr_set_ui (d, k-1, MPFR_RNDN);
+ mpfr_div_ui (d, d, 12*k+6, MPFR_RNDN);
+ for (l=2; l < k; l++)
+ {
+ mpfr_div_ui (d, d, 4*(2*k-2*l+3)*(2*k-2*l+2), MPFR_RNDN);
+ mpfr_add (d, d, tc[l], MPFR_RNDN);
+ }
+ mpfr_div_ui (tc[k], d, 24, MPFR_RNDN);
+ MPFR_CHANGE_SIGN (tc[k]);
+ }
+ mpfr_clear (d);
+ }
+}
+
+/* Input: s - a floating-point number
+ n - an integer
+ Output: sum - a floating-point number approximating sum(1/i^s, i=1..n-1) */
+static void
+mpfr_zeta_part_a (mpfr_t sum, mpfr_srcptr s, int n)
+{
+ mpfr_t u, s1;
+ int i;
+ MPFR_GROUP_DECL (group);
+
+ MPFR_GROUP_INIT_2 (group, MPFR_PREC (sum), u, s1);
+
+ mpfr_neg (s1, s, MPFR_RNDN);
+ mpfr_ui_pow (u, n, s1, MPFR_RNDN);
+ mpfr_div_2ui (u, u, 1, MPFR_RNDN);
+ mpfr_set (sum, u, MPFR_RNDN);
+ for (i=n-1; i>1; i--)
+ {
+ mpfr_ui_pow (u, i, s1, MPFR_RNDN);
+ mpfr_add (sum, sum, u, MPFR_RNDN);
+ }
+ mpfr_add (sum, sum, __gmpfr_one, MPFR_RNDN);
+
+ MPFR_GROUP_CLEAR (group);
+}
+
+/* Input: s - a floating-point number >= 1/2.
+ rnd_mode - a rounding mode.
+ Assumes s is neither NaN nor Infinite.
+ Output: z - Zeta(s) rounded to the precision of z with direction rnd_mode
+*/
+static int
+mpfr_zeta_pos (mpfr_t z, mpfr_srcptr s, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t b, c, z_pre, f, s1;
+ double beta, sd, dnep;
+ mpfr_t *tc1;
+ mpfr_prec_t precz, precs, d, dint;
+ int p, n, l, add;
+ int inex;
+ MPFR_GROUP_DECL (group);
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_ASSERTD (MPFR_IS_POS (s) && MPFR_GET_EXP (s) >= 0);
+
+ precz = MPFR_PREC (z);
+ precs = MPFR_PREC (s);
+
+ /* Zeta(x) = 1+1/2^x+1/3^x+1/4^x+1/5^x+O(1/6^x)
+ so with 2^(EXP(x)-1) <= x < 2^EXP(x)
+ So for x > 2^3, k^x > k^8, so 2/k^x < 2/k^8
+ Zeta(x) = 1 + 1/2^x*(1+(2/3)^x+(2/4)^x+...)
+ = 1 + 1/2^x*(1+sum((2/k)^x,k=3..infinity))
+ <= 1 + 1/2^x*(1+sum((2/k)^8,k=3..infinity))
+ And sum((2/k)^8,k=3..infinity) = -257+128*Pi^8/4725 ~= 0.0438035
+ So Zeta(x) <= 1 + 1/2^x*2 for x >= 8
+ The error is < 2^(-x+1) <= 2^(-2^(EXP(x)-1)+1) */
+ if (MPFR_GET_EXP (s) > 3)
+ {
+ mpfr_exp_t err;
+ err = MPFR_GET_EXP (s) - 1;
+ if (err > (mpfr_exp_t) (sizeof (mpfr_exp_t)*CHAR_BIT-2))
+ err = MPFR_EMAX_MAX;
+ else
+ err = ((mpfr_exp_t)1) << err;
+ err = 1 - (-err+1); /* GET_EXP(one) - (-err+1) = err :) */
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (z, __gmpfr_one, err, 0, 1,
+ rnd_mode, {});
+ }
+
+ d = precz + MPFR_INT_CEIL_LOG2(precz) + 10;
+
+ /* we want that s1 = s-1 is exact, i.e. we should have PREC(s1) >= EXP(s) */
+ dint = (mpfr_uexp_t) MPFR_GET_EXP (s);
+ mpfr_init2 (s1, MAX (precs, dint));
+ inex = mpfr_sub (s1, s, __gmpfr_one, MPFR_RNDN);
+ MPFR_ASSERTD (inex == 0);
+
+ /* case s=1 should have already been handled */
+ MPFR_ASSERTD (!MPFR_IS_ZERO (s1));
+
+ MPFR_GROUP_INIT_4 (group, MPFR_PREC_MIN, b, c, z_pre, f);
+
+ MPFR_ZIV_INIT (loop, d);
+ for (;;)
+ {
+ /* Principal loop: we compute, in z_pre,
+ an approximation of Zeta(s), that we send to can_round */
+ if (MPFR_GET_EXP (s1) <= -(mpfr_exp_t) ((mpfr_prec_t) (d-3)/2))
+ /* Branch 1: when s-1 is very small, one
+ uses the approximation Zeta(s)=1/(s-1)+gamma,
+ where gamma is Euler's constant */
+ {
+ dint = MAX (d + 3, precs);
+ MPFR_TRACE (printf ("branch 1\ninternal precision=%lu\n",
+ (unsigned long) dint));
+ MPFR_GROUP_REPREC_4 (group, dint, b, c, z_pre, f);
+ mpfr_div (z_pre, __gmpfr_one, s1, MPFR_RNDN);
+ mpfr_const_euler (f, MPFR_RNDN);
+ mpfr_add (z_pre, z_pre, f, MPFR_RNDN);
+ }
+ else /* Branch 2 */
+ {
+ size_t size;
+
+ MPFR_TRACE (printf ("branch 2\n"));
+ /* Computation of parameters n, p and working precision */
+ dnep = (double) d * LOG2;
+ sd = mpfr_get_d (s, MPFR_RNDN);
+ /* beta = dnep + 0.61 + sd * log (6.2832 / sd);
+ but a larger value is ok */
+#define LOG6dot2832 1.83787940484160805532
+ beta = dnep + 0.61 + sd * (LOG6dot2832 - LOG2 *
+ __gmpfr_floor_log2 (sd));
+ if (beta <= 0.0)
+ {
+ p = 0;
+ /* n = 1 + (int) (exp ((dnep - LOG2) / sd)); */
+ n = 1 + (int) __gmpfr_ceil_exp2 ((d - 1.0) / sd);
+ }
+ else
+ {
+ p = 1 + (int) beta / 2;
+ n = 1 + (int) ((sd + 2.0 * (double) p - 1.0) / 6.2832);
+ }
+ MPFR_TRACE (printf ("\nn=%d\np=%d\n",n,p));
+ /* add = 4 + floor(1.5 * log(d) / log (2)).
+ We should have add >= 10, which is always fulfilled since
+ d = precz + 11 >= 12, thus ceil(log2(d)) >= 4 */
+ add = 4 + (3 * MPFR_INT_CEIL_LOG2 (d)) / 2;
+ MPFR_ASSERTD(add >= 10);
+ dint = d + add;
+ if (dint < precs)
+ dint = precs;
+
+ MPFR_TRACE (printf ("internal precision=%lu\n",
+ (unsigned long) dint));
+
+ size = (p + 1) * sizeof(mpfr_t);
+ tc1 = (mpfr_t*) (*__gmp_allocate_func) (size);
+ for (l=1; l<=p; l++)
+ mpfr_init2 (tc1[l], dint);
+ MPFR_GROUP_REPREC_4 (group, dint, b, c, z_pre, f);
+
+ MPFR_TRACE (printf ("precision of z = %lu\n",
+ (unsigned long) precz));
+
+ /* Computation of the coefficients c_k */
+ mpfr_zeta_c (p, tc1);
+ /* Computation of the 3 parts of the fonction Zeta. */
+ mpfr_zeta_part_a (z_pre, s, n);
+ mpfr_zeta_part_b (b, s, n, p, tc1);
+ /* s1 = s-1 is already computed above */
+ mpfr_div (c, __gmpfr_one, s1, MPFR_RNDN);
+ mpfr_ui_pow (f, n, s1, MPFR_RNDN);
+ mpfr_div (c, c, f, MPFR_RNDN);
+ MPFR_TRACE (MPFR_DUMP (c));
+ mpfr_add (z_pre, z_pre, c, MPFR_RNDN);
+ mpfr_add (z_pre, z_pre, b, MPFR_RNDN);
+ for (l=1; l<=p; l++)
+ mpfr_clear (tc1[l]);
+ (*__gmp_free_func) (tc1, size);
+ /* End branch 2 */
+ }
+
+ MPFR_TRACE (MPFR_DUMP (z_pre));
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (z_pre, d-3, precz, rnd_mode)))
+ break;
+ MPFR_ZIV_NEXT (loop, d);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ inex = mpfr_set (z, z_pre, rnd_mode);
+
+ MPFR_GROUP_CLEAR (group);
+ mpfr_clear (s1);
+
+ return inex;
+}
+
+int
+mpfr_zeta (mpfr_t z, mpfr_srcptr s, mpfr_rnd_t rnd_mode)
+{
+ mpfr_t z_pre, s1, y, p;
+ double sd, eps, m1, c;
+ long add;
+ mpfr_prec_t precz, prec1, precs, precs1;
+ int inex;
+ MPFR_GROUP_DECL (group);
+ MPFR_ZIV_DECL (loop);
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_LOG_FUNC (
+ ("s[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (s), mpfr_log_prec, s, rnd_mode),
+ ("z[%Pu]=%.*Rg inexact=%d", mpfr_get_prec (z), mpfr_log_prec, z, inex));
+
+ /* Zero, Nan or Inf ? */
+ if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (s)))
+ {
+ if (MPFR_IS_NAN (s))
+ {
+ MPFR_SET_NAN (z);
+ MPFR_RET_NAN;
+ }
+ else if (MPFR_IS_INF (s))
+ {
+ if (MPFR_IS_POS (s))
+ return mpfr_set_ui (z, 1, MPFR_RNDN); /* Zeta(+Inf) = 1 */
+ MPFR_SET_NAN (z); /* Zeta(-Inf) = NaN */
+ MPFR_RET_NAN;
+ }
+ else /* s iz zero */
+ {
+ MPFR_ASSERTD (MPFR_IS_ZERO (s));
+ return mpfr_set_si_2exp (z, -1, -1, rnd_mode);
+ }
+ }
+
+ /* s is neither Nan, nor Inf, nor Zero */
+
+ /* check tiny s: we have zeta(s) = -1/2 - 1/2 log(2 Pi) s + ... around s=0,
+ and for |s| <= 0.074, we have |zeta(s) + 1/2| <= |s|.
+ Thus if |s| <= 1/4*ulp(1/2), we can deduce the correct rounding
+ (the 1/4 covers the case where |zeta(s)| < 1/2 and rounding to nearest).
+ A sufficient condition is that EXP(s) + 1 < -PREC(z). */
+ if (MPFR_GET_EXP (s) + 1 < - (mpfr_exp_t) MPFR_PREC(z))
+ {
+ int signs = MPFR_SIGN(s);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+ mpfr_set_si_2exp (z, -1, -1, rnd_mode); /* -1/2 */
+ if (rnd_mode == MPFR_RNDA)
+ rnd_mode = MPFR_RNDD; /* the result is around -1/2, thus negative */
+ if ((rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDZ) && signs < 0)
+ {
+ mpfr_nextabove (z); /* z = -1/2 + epsilon */
+ inex = 1;
+ }
+ else if (rnd_mode == MPFR_RNDD && signs > 0)
+ {
+ mpfr_nextbelow (z); /* z = -1/2 - epsilon */
+ inex = -1;
+ }
+ else
+ {
+ if (rnd_mode == MPFR_RNDU) /* s > 0: z = -1/2 */
+ inex = 1;
+ else if (rnd_mode == MPFR_RNDD)
+ inex = -1; /* s < 0: z = -1/2 */
+ else /* (MPFR_RNDZ and s > 0) or MPFR_RNDN: z = -1/2 */
+ inex = (signs > 0) ? 1 : -1;
+ }
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (z, inex, rnd_mode);
+ }
+
+ /* Check for case s= -2n */
+ if (MPFR_IS_NEG (s))
+ {
+ mpfr_t tmp;
+ tmp[0] = *s;
+ MPFR_EXP (tmp) = MPFR_GET_EXP (s) - 1;
+ if (mpfr_integer_p (tmp))
+ {
+ MPFR_SET_ZERO (z);
+ MPFR_SET_POS (z);
+ MPFR_RET (0);
+ }
+ }
+
+ /* Check for case s= 1 before changing the exponent range */
+ if (mpfr_cmp (s, __gmpfr_one) ==0)
+ {
+ MPFR_SET_INF (z);
+ MPFR_SET_POS (z);
+ mpfr_set_divby0 ();
+ MPFR_RET (0);
+ }
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ /* Compute Zeta */
+ if (MPFR_IS_POS (s) && MPFR_GET_EXP (s) >= 0) /* Case s >= 1/2 */
+ inex = mpfr_zeta_pos (z, s, rnd_mode);
+ else /* use reflection formula
+ zeta(s) = 2^s*Pi^(s-1)*sin(Pi*s/2)*gamma(1-s)*zeta(1-s) */
+ {
+ int overflow = 0;
+
+ precz = MPFR_PREC (z);
+ precs = MPFR_PREC (s);
+
+ /* Precision precs1 needed to represent 1 - s, and s + 2,
+ without any truncation */
+ precs1 = precs + 2 + MAX (0, - MPFR_GET_EXP (s));
+ sd = mpfr_get_d (s, MPFR_RNDN) - 1.0;
+ if (sd < 0.0)
+ sd = -sd; /* now sd = abs(s-1.0) */
+ /* Precision prec1 is the precision on elementary computations;
+ it ensures a final precision prec1 - add for zeta(s) */
+ /* eps = pow (2.0, - (double) precz - 14.0); */
+ eps = __gmpfr_ceil_exp2 (- (double) precz - 14.0);
+ m1 = 1.0 + MAX(1.0 / eps, 2.0 * sd) * (1.0 + eps);
+ c = (1.0 + eps) * (1.0 + eps * MAX(8.0, m1));
+ /* add = 1 + floor(log(c*c*c*(13 + m1))/log(2)); */
+ add = __gmpfr_ceil_log2 (c * c * c * (13.0 + m1));
+ prec1 = precz + add;
+ prec1 = MAX (prec1, precs1) + 10;
+
+ MPFR_GROUP_INIT_4 (group, prec1, z_pre, s1, y, p);
+ MPFR_ZIV_INIT (loop, prec1);
+ for (;;)
+ {
+ mpfr_sub (s1, __gmpfr_one, s, MPFR_RNDN);/* s1 = 1-s */
+ mpfr_zeta_pos (z_pre, s1, MPFR_RNDN); /* zeta(1-s) */
+ mpfr_gamma (y, s1, MPFR_RNDN); /* gamma(1-s) */
+ if (MPFR_IS_INF (y)) /* Zeta(s) < 0 for -4k-2 < s < -4k,
+ Zeta(s) > 0 for -4k < s < -4k+2 */
+ {
+ mpfr_div_2ui (s1, s, 2, MPFR_RNDN); /* s/4, exact */
+ mpfr_frac (s1, s1, MPFR_RNDN); /* exact, -1 < s1 < 0 */
+ overflow = (mpfr_cmp_si_2exp (s1, -1, -1) > 0) ? -1 : 1;
+ break;
+ }
+ mpfr_mul (z_pre, z_pre, y, MPFR_RNDN); /* gamma(1-s)*zeta(1-s) */
+ mpfr_const_pi (p, MPFR_RNDD);
+ mpfr_mul (y, s, p, MPFR_RNDN);
+ mpfr_div_2ui (y, y, 1, MPFR_RNDN); /* s*Pi/2 */
+ mpfr_sin (y, y, MPFR_RNDN); /* sin(Pi*s/2) */
+ mpfr_mul (z_pre, z_pre, y, MPFR_RNDN);
+ mpfr_mul_2ui (y, p, 1, MPFR_RNDN); /* 2*Pi */
+ mpfr_neg (s1, s1, MPFR_RNDN); /* s-1 */
+ mpfr_pow (y, y, s1, MPFR_RNDN); /* (2*Pi)^(s-1) */
+ mpfr_mul (z_pre, z_pre, y, MPFR_RNDN);
+ mpfr_mul_2ui (z_pre, z_pre, 1, MPFR_RNDN);
+
+ if (MPFR_LIKELY (MPFR_CAN_ROUND (z_pre, prec1 - add, precz,
+ rnd_mode)))
+ break;
+
+ MPFR_ZIV_NEXT (loop, prec1);
+ MPFR_GROUP_REPREC_4 (group, prec1, z_pre, s1, y, p);
+ }
+ MPFR_ZIV_FREE (loop);
+ if (overflow != 0)
+ {
+ inex = mpfr_overflow (z, rnd_mode, overflow);
+ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_OVERFLOW);
+ }
+ else
+ inex = mpfr_set (z, z_pre, rnd_mode);
+ MPFR_GROUP_CLEAR (group);
+ }
+
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (z, inex, rnd_mode);
+}
diff --git a/Build/source/libs/mpfr/mpfr-src/src/zeta_ui.c b/Build/source/libs/mpfr/mpfr-src/src/zeta_ui.c
new file mode 100644
index 00000000000..02ba337fb87
--- /dev/null
+++ b/Build/source/libs/mpfr/mpfr-src/src/zeta_ui.c
@@ -0,0 +1,244 @@
+/* mpfr_zeta_ui -- compute the Riemann Zeta function for integer argument.
+
+Copyright 2005-2015 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
+
+This file is part of the GNU MPFR Library.
+
+The GNU MPFR Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The GNU MPFR Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
+http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define MPFR_NEED_LONGLONG_H
+#include "mpfr-impl.h"
+
+int
+mpfr_zeta_ui (mpfr_ptr z, unsigned long m, mpfr_rnd_t r)
+{
+ MPFR_ZIV_DECL (loop);
+
+ MPFR_LOG_FUNC
+ (("m=%lu rnd=%d prec=%Pu", m, r, mpfr_get_prec (z)),
+ ("z[%Pu]=%.*Rg", mpfr_get_prec (z), mpfr_log_prec, z));
+
+ if (m == 0)
+ {
+ return mpfr_set_si_2exp (z, -1, -1, r);
+ }
+ else if (m == 1)
+ {
+ MPFR_SET_INF (z);
+ MPFR_SET_POS (z);
+ mpfr_set_divby0 ();
+ return 0;
+ }
+ else /* m >= 2 */
+ {
+ mpfr_prec_t p = MPFR_PREC(z);
+ unsigned long n, k, err, kbits;
+ mpz_t d, t, s, q;
+ mpfr_t y;
+ int inex;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ if (r == MPFR_RNDA)
+ r = MPFR_RNDU; /* since the result is always positive */
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
+ if (m >= p) /* 2^(-m) < ulp(1) = 2^(1-p). This means that
+ 2^(-m) <= 1/2*ulp(1). We have 3^(-m)+4^(-m)+... < 2^(-m)
+ i.e. zeta(m) < 1+2*2^(-m) for m >= 3 */
+ {
+ if (m == 2) /* necessarily p=2 */
+ inex = mpfr_set_ui_2exp (z, 13, -3, r);
+ else if (r == MPFR_RNDZ || r == MPFR_RNDD ||
+ (r == MPFR_RNDN && m > p))
+ {
+ mpfr_set_ui (z, 1, r);
+ inex = -1;
+ }
+ else
+ {
+ mpfr_set_ui (z, 1, r);
+ mpfr_nextabove (z);
+ inex = 1;
+ }
+ goto end;
+ }
+
+ /* now treat also the case where zeta(m) - (1+1/2^m) < 1/2*ulp(1),
+ and the result is either 1+2^(-m) or 1+2^(-m)+2^(1-p). */
+ mpfr_init2 (y, 31);
+
+ if (m >= p / 2) /* otherwise 4^(-m) > 2^(-p) */
+ {
+ /* the following is a lower bound for log(3)/log(2) */
+ mpfr_set_str_binary (y, "1.100101011100000000011010001110");
+ mpfr_mul_ui (y, y, m, MPFR_RNDZ); /* lower bound for log2(3^m) */
+ if (mpfr_cmp_ui (y, p + 2) >= 0)
+ {
+ mpfr_clear (y);
+ mpfr_set_ui (z, 1, MPFR_RNDZ);
+ mpfr_div_2ui (z, z, m, MPFR_RNDZ);
+ mpfr_add_ui (z, z, 1, MPFR_RNDZ);
+ if (r != MPFR_RNDU)
+ inex = -1;
+ else
+ {
+ mpfr_nextabove (z);
+ inex = 1;
+ }
+ goto end;
+ }
+ }
+
+ mpz_init (s);
+ mpz_init (d);
+ mpz_init (t);
+ mpz_init (q);
+
+ p += MPFR_INT_CEIL_LOG2(p); /* account of the n term in the error */
+
+ p += MPFR_INT_CEIL_LOG2(p) + 15; /* initial value */
+
+ MPFR_ZIV_INIT (loop, p);
+ for(;;)
+ {
+ /* 0.39321985067869744 = log(2)/log(3+sqrt(8)) */
+ n = 1 + (unsigned long) (0.39321985067869744 * (double) p);
+ err = n + 4;
+
+ mpfr_set_prec (y, p);
+
+ /* computation of the d[k] */
+ mpz_set_ui (s, 0);
+ mpz_set_ui (t, 1);
+ mpz_mul_2exp (t, t, 2 * n - 1); /* t[n] */
+ mpz_set (d, t);
+ for (k = n; k > 0; k--)
+ {
+ count_leading_zeros (kbits, k);
+ kbits = GMP_NUMB_BITS - kbits;
+ /* if k^m is too large, use mpz_tdiv_q */
+ if (m * kbits > 2 * GMP_NUMB_BITS)
+ {
+ /* if we know in advance that k^m > d, then floor(d/k^m) will
+ be zero below, so there is no need to compute k^m */
+ kbits = (kbits - 1) * m + 1;
+ /* k^m has at least kbits bits */
+ if (kbits > mpz_sizeinbase (d, 2))
+ mpz_set_ui (q, 0);
+ else
+ {
+ mpz_ui_pow_ui (q, k, m);
+ mpz_tdiv_q (q, d, q);
+ }
+ }
+ else /* use several mpz_tdiv_q_ui calls */
+ {
+ unsigned long km = k, mm = m - 1;
+ while (mm > 0 && km < ULONG_MAX / k)
+ {
+ km *= k;
+ mm --;
+ }
+ mpz_tdiv_q_ui (q, d, km);
+ while (mm > 0)
+ {
+ km = k;
+ mm --;
+ while (mm > 0 && km < ULONG_MAX / k)
+ {
+ km *= k;
+ mm --;
+ }
+ mpz_tdiv_q_ui (q, q, km);
+ }
+ }
+ if (k % 2)
+ mpz_add (s, s, q);
+ else
+ mpz_sub (s, s, q);
+
+ /* we have d[k] = sum(t[i], i=k+1..n)
+ with t[i] = n*(n+i-1)!*4^i/(n-i)!/(2i)!
+ t[k-1]/t[k] = k*(2k-1)/(n-k+1)/(n+k-1)/2 */
+#if (GMP_NUMB_BITS == 32)
+#define KMAX 46341 /* max k such that k*(2k-1) < 2^32 */
+#elif (GMP_NUMB_BITS == 64)
+#define KMAX 3037000500
+#endif
+#ifdef KMAX
+ if (k <= KMAX)
+ mpz_mul_ui (t, t, k * (2 * k - 1));
+ else
+#endif
+ {
+ mpz_mul_ui (t, t, k);
+ mpz_mul_ui (t, t, 2 * k - 1);
+ }
+ mpz_fdiv_q_2exp (t, t, 1);
+ /* Warning: the test below assumes that an unsigned long
+ has no padding bits. */
+ if (n < 1UL << ((sizeof(unsigned long) * CHAR_BIT) / 2))
+ /* (n - k + 1) * (n + k - 1) < n^2 */
+ mpz_divexact_ui (t, t, (n - k + 1) * (n + k - 1));
+ else
+ {
+ mpz_divexact_ui (t, t, n - k + 1);
+ mpz_divexact_ui (t, t, n + k - 1);
+ }
+ mpz_add (d, d, t);
+ }
+
+ /* multiply by 1/(1-2^(1-m)) = 1 + 2^(1-m) + 2^(2-m) + ... */
+ mpz_fdiv_q_2exp (t, s, m - 1);
+ do
+ {
+ err ++;
+ mpz_add (s, s, t);
+ mpz_fdiv_q_2exp (t, t, m - 1);
+ }
+ while (mpz_cmp_ui (t, 0) > 0);
+
+ /* divide by d[n] */
+ mpz_mul_2exp (s, s, p);
+ mpz_tdiv_q (s, s, d);
+ mpfr_set_z (y, s, MPFR_RNDN);
+ mpfr_div_2ui (y, y, p, MPFR_RNDN);
+
+ err = MPFR_INT_CEIL_LOG2 (err);
+
+ if (MPFR_LIKELY(MPFR_CAN_ROUND (y, p - err, MPFR_PREC(z), r)))
+ break;
+
+ MPFR_ZIV_NEXT (loop, p);
+ }
+ MPFR_ZIV_FREE (loop);
+
+ mpz_clear (d);
+ mpz_clear (t);
+ mpz_clear (q);
+ mpz_clear (s);
+ inex = mpfr_set (z, y, r);
+ mpfr_clear (y);
+
+ end:
+ MPFR_LOG_VAR (z);
+ MPFR_LOG_MSG (("inex = %d before mpfr_check_range\n", inex));
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (z, inex, r);
+ }
+}